diff --git a/2/index.html b/2/index.html index 83572df..96f6aca 100644 --- a/2/index.html +++ b/2/index.html @@ -1,4 +1,4 @@ -Home | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-02-09-hello-world/index.html b/2019-02-09-hello-world/index.html index 1e87f47..0f7d8aa 100644 --- a/2019-02-09-hello-world/index.html +++ b/2019-02-09-hello-world/index.html @@ -1,4 +1,4 @@ -Hello World! | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-02-20-dsa-cloud-images/index.html b/2019-02-20-dsa-cloud-images/index.html index 87fa5fb..5ad40f5 100644 --- a/2019-02-20-dsa-cloud-images/index.html +++ b/2019-02-20-dsa-cloud-images/index.html @@ -1,4 +1,4 @@ -Diamond-square Algorithm Cloud Images | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-03-06-svg-path-animations/index.html b/2019-03-06-svg-path-animations/index.html index e314faa..31bc948 100644 --- a/2019-03-06-svg-path-animations/index.html +++ b/2019-03-06-svg-path-animations/index.html @@ -1,4 +1,4 @@ -SVG Path Animations | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-04-06-the-game-of-life/index.html b/2019-04-06-the-game-of-life/index.html index 1fafd3a..78b9ea7 100644 --- a/2019-04-06-the-game-of-life/index.html +++ b/2019-04-06-the-game-of-life/index.html @@ -1,4 +1,4 @@ -The Game Of Life | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-05-19-sobel/index.html b/2019-05-19-sobel/index.html index a98d98c..02656b5 100644 --- a/2019-05-19-sobel/index.html +++ b/2019-05-19-sobel/index.html @@ -1,4 +1,4 @@ -Sobel Edge Detection | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-06-17-circles-everywhere/index.html b/2019-06-17-circles-everywhere/index.html index 28f8670..a2f36f2 100644 --- a/2019-06-17-circles-everywhere/index.html +++ b/2019-06-17-circles-everywhere/index.html @@ -1,4 +1,4 @@ -Circles Everywhere! | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-07-23-putting-svgs-on-the-map/index.html b/2019-07-23-putting-svgs-on-the-map/index.html index 75cba5c..f5acc96 100644 --- a/2019-07-23-putting-svgs-on-the-map/index.html +++ b/2019-07-23-putting-svgs-on-the-map/index.html @@ -1,4 +1,4 @@ -Putting SVGs On The Map | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-08-11-moire-patterns/index.html b/2019-08-11-moire-patterns/index.html index 4e2e105..b617fb5 100644 --- a/2019-08-11-moire-patterns/index.html +++ b/2019-08-11-moire-patterns/index.html @@ -1,4 +1,4 @@ -Moiré Patterns | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/2019-11-10-from-ruby-to-react/index.html b/2019-11-10-from-ruby-to-react/index.html index 44e362f..c322912 100644 --- a/2019-11-10-from-ruby-to-react/index.html +++ b/2019-11-10-from-ruby-to-react/index.html @@ -1,4 +1,4 @@ -From Ruby to React | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/404.html b/404.html index dcda701..25f2ea8 100644 --- a/404.html +++ b/404.html @@ -1,4 +1,4 @@ -NotFound | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index 9ea0925..daeecec 100644 --- a/404/index.html +++ b/404/index.html @@ -1,4 +1,4 @@ -NotFound | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index 359886a..82a6621 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/about/index.html b/about/index.html index 07fd766..7e8783a 100644 --- a/about/index.html +++ b/about/index.html @@ -1,4 +1,4 @@ -About | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index f67eb0d..3dee176 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-d078deb4953fa6ea7d8b.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-819fe14f87f7d11ff78a.js"],"component---src-pages-404-index-js":["/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js"],"component---src-pages-about-index-js":["/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js"],"component---src-pages-photos-index-js":["/component---src-pages-photos-index-js-e130782ec785ed63ae33.js"],"component---src-pages-posts-2019-02-09-hello-world-index-mdx":["/component---src-pages-posts-2019-02-09-hello-world-index-mdx-2c874ef8011dec766139.js"],"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["/component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-997f2d46a8cadae02817.js"],"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["/component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx-384e9c797e686317da81.js"],"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["/component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx-cf34bed01e0db7f55215.js"],"component---src-pages-posts-2019-05-19-sobel-index-mdx":["/component---src-pages-posts-2019-05-19-sobel-index-mdx-9fd24b867eb282d6c48d.js"],"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["/component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx-80958722cca925682e87.js"],"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["/component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-1725c181effa9d506341.js"],"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx":["/component---src-pages-posts-2019-08-11-moire-patterns-index-mdx-9855ed94670d6a646fd8.js"],"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["/component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-f72154962eced13af4b6.js"],"component---src-templates-post-list-template-post-list-template-js":["/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js"]} \ No newline at end of file +{"app":["/app-d078deb4953fa6ea7d8b.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-819fe14f87f7d11ff78a.js"],"component---src-pages-404-index-js":["/component---src-pages-404-index-js-0159f18ed22d22ce992a.js"],"component---src-pages-about-index-js":["/component---src-pages-about-index-js-f91c3c56105ac2884c28.js"],"component---src-pages-photos-index-js":["/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js"],"component---src-pages-posts-2019-02-09-hello-world-index-mdx":["/component---src-pages-posts-2019-02-09-hello-world-index-mdx-2c874ef8011dec766139.js"],"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["/component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-997f2d46a8cadae02817.js"],"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["/component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx-384e9c797e686317da81.js"],"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["/component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx-cf34bed01e0db7f55215.js"],"component---src-pages-posts-2019-05-19-sobel-index-mdx":["/component---src-pages-posts-2019-05-19-sobel-index-mdx-9fd24b867eb282d6c48d.js"],"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["/component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx-80958722cca925682e87.js"],"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["/component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-1725c181effa9d506341.js"],"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx":["/component---src-pages-posts-2019-08-11-moire-patterns-index-mdx-9855ed94670d6a646fd8.js"],"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["/component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-f72154962eced13af4b6.js"],"component---src-templates-post-list-template-post-list-template-js":["/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js"]} \ No newline at end of file diff --git a/component---src-pages-404-index-js-0159f18ed22d22ce992a.js b/component---src-pages-404-index-js-0159f18ed22d22ce992a.js new file mode 100644 index 0000000..a61aee8 --- /dev/null +++ b/component---src-pages-404-index-js-0159f18ed22d22ce992a.js @@ -0,0 +1,2 @@ +(self.webpackChunkblog=self.webpackChunkblog||[]).push([[911],{8973:function(e,t,l){"use strict";l.r(t),l.d(t,{Head:function(){return o},default:function(){return c}});var s=l(7294),a=l(3306),r=l(4527),i=l(9116),n=l.n(i);const o=()=>s.createElement(a.Z,{page:"NotFound"});var c=()=>s.createElement(r.Z,null,s.createElement("div",{className:"style-module--container--f966c"},s.createElement(n(),{className:"style-module--logoBracketsNotFound--7ca44"}),s.createElement("p",null,"Uh-oh, we can't seem to find that page..."),s.createElement("a",{className:"blueLink",href:"/"},"Back to homepage")))},9116:function(e,t,l){var s=l(7294);function a(e){return s.createElement("svg",e,[s.createElement("text",{className:"text",style:{fontSize:"730px",fontFamily:"sans-serif",fill:"#00c1c1",stroke:"#09616c",strokeWidth:"15",strokeLinejoin:"round"},x:"30",y:"540",key:0},"404"),s.createElement("text",{className:"text",style:{fontSize:"400px",fontFamily:"sans-serif",fill:"#00c1c1",stroke:"#09616c",strokeWidth:"11",strokeLinejoin:"round"},x:"720",y:"860",key:1},"?"),s.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 381.71569,821.35273 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.69349,34.16911 1.47762,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37582 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z",key:2}),s.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 588.11369,946.15173 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.0466,-28.98431 40.22077,-18.98365 5.07695,16.63333 21.00049,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66313,65.79906 8.62032,17.49344 24.84654,28.75866 42.13251,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15376,4.02275 z m -1.27999,-40 c 6.87656,-3.80189 19.38045,-19.27694 16.28499,-21.26 -1.34942,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.41501,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53376,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.6297,28.77563 9.34801,-0.57952 17.61635,-5.01531 24.5515,-11.09163 z m -148.47901,4.48 c 2.22774,-7.20227 -18.74083,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.97341,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z",key:3}),s.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 655.87432,831.21789 c -16.26338,6.66415 -31.18915,-0.57876 -43.69507,-11.66594 -25.27378,-18.87186 -29.51629,-60.80327 -8.11806,-83.95203 7.17377,-11.09975 26.43124,-12.86892 40.6925,-15.04719 -11.60321,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.3047,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:4}),s.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 508.46599,881.83273 c -30.90212,-5.78363 -53.97079,-38.29544 -46.76214,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22734,4.00312 z",key:5}),s.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 686.03369,813.67273 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:6}),s.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 532.75469,880.87273 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:7}),s.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 657.55369,825.51273 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.6095,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45917,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:8}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 535.63369,797.03273 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:9}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 514.1947,781.67273 c -13.62337,23.23239 34.20992,17.4479 14.92999,-1.675 -4.7198,-3.42966 -10.93589,-2.38684 -14.92999,1.675 z",key:10}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 664.91369,749.67373 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:11}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 641.23369,734.95373 c -23.16534,13.48053 16.22356,36.19796 16.84001,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84001,-10.08 z",key:12}),s.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 400.5842,815.35187 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30664,13.62315 25.57877,25.66181 43.12446,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53679,51.60675 8.85324,0.89592 19.50225,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 510.94942,921.1176 460.25004,895.40719 424.3358,853.01312 414.89075,841.74345 407.77621,828.19457 400.5842,815.35187 Z",key:13}),s.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 399.31569,813.67273 C 385.57938,762.51649 372.20731,707.78467 388.05353,655.4425 c 0.98872,-6.00064 11.53375,-30.35816 3.80091,-14.0079 -18.40755,32.68257 -26.39958,70.61529 -22.83875,107.96371 1.6528,24.26835 6.49435,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z",key:14}),s.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 448.88914,625.0381 c 0.16868,5.94741 0.39752,13.66469 2.0767,15.77313 2.98389,-1.75987 38.22733,-34.35757 60.96103,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.9588 z",key:15}),s.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 558.3537,627.11374 c 39.09517,-6.12609 72.80666,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.95881 -6.50128,9.86066 -6.72,15.68 z",key:16}),s.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 429.0747,739.11373 c 60.27616,3.32632 120.76576,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59042,-17.25402 -13.61969,-4.97772 -43.3853,35.78346 -99.4078,53.74047 -155.01931,57.77772 z",key:17}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 526.3537,758.31373 c 79.20474,7.78078 72.67773,114.43784 12.95405,123.33482 C 460.55241,875.9328 466.28534,779.76728 526.3537,758.31373 Z",key:18}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 539.30774,881.64855 C 441.19158,900.51432 434.358,756.67379 526.3537,758.31373",key:19}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 652.75369,719.59273 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z",key:20}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 637.39369,835.11273 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64315,1.13381 -31.95772,4.91189 -42.56,8",key:21}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 638.67369,835.75273 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16",key:22}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 638.03369,835.43273 C 631.18307,873.53512 617.2115,911.39011 601.73948,946.805",key:23}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 382.0337,822.31273 c -33.3709,-89.58384 -21.87248,-203.02025 78.4,-230.71799",key:24}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"m 460.31362,591.77558 c -7.72456,10.71099 -10.58551,16.93637 -11.39893,31.17916 -0.9273,6.64494 -0.41032,14.67489 3.25217,19.60903",key:25}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 448.91469,622.95474 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441",key:26}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 596.43269,585.51374 c -11.97358,5.2494 -21.96258,14.21019 -30.08,24.32",key:27}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 566.3537,609.83474 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425",key:28}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 566.3527,609.83374 c 38.57084,1.08234 72.86725,22.97326 100.15999,48.64",key:29}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 666.51269,658.47374 c -25.28601,-0.93692 -51.80898,3.74198 -74.67129,14.88614",key:30}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 429.0747,739.11373 c 59.6567,-4.58454 116.70525,-29.49885 163.51999,-66.23999",key:31}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 382.0337,822.31273 c 43.44477,-16.54532 48.84708,-47.98612 46.55385,-85.05616",key:32}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 610.1937,727.59273 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899",key:33}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 576.27469,911.91273 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:34}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 382.0337,822.31273 c -80.11607,39.6821 32.64458,116.1168 67.07407,71.90242",key:35}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 449.56777,893.70015 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:36}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 418.3797,855.87673 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:37})])}a.defaultProps={width:"1250",height:"960",viewBox:"0 0 1250 960"},e.exports=a,a.default=a}}]); +//# sourceMappingURL=component---src-pages-404-index-js-0159f18ed22d22ce992a.js.map \ No newline at end of file diff --git a/component---src-pages-404-index-js-0159f18ed22d22ce992a.js.map b/component---src-pages-404-index-js-0159f18ed22d22ce992a.js.map new file mode 100644 index 0000000..7f0b036 --- /dev/null +++ b/component---src-pages-404-index-js-0159f18ed22d22ce992a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-404-index-js-0159f18ed22d22ce992a.js","mappings":"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","sources":["webpack://blog/./src/pages/404/index.js","webpack://blog/./src/pages/404/style.module.css","webpack://blog/./static/logoBracketsNotFound.inline.svg"],"sourcesContent":["import React from \"react\";\r\nimport Seo from \"../../components/seo/seo\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport LogoBracketsNotFound from \"../../../static/logoBracketsNotFound.inline.svg\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst NotFoundPage = () => {\r\n return (\r\n \r\n
\r\n \r\n

Uh-oh, we can't seem to find that page...

\r\n \r\n Back to homepage\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const Head = () => ;\r\n\r\nexport default NotFoundPage;","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--f966c\";\nexport var logoBracketsNotFound = \"style-module--logoBracketsNotFound--7ca44\";","var React = require('react');\n\nfunction LogoBracketsNotFoundInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"text\",{\"className\":\"text\",\"style\":{\"fontSize\":\"730px\",\"fontFamily\":\"sans-serif\",\"fill\":\"#00c1c1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"15\",\"strokeLinejoin\":\"round\"},\"x\":\"30\",\"y\":\"540\",\"key\":0},\"404\"),React.createElement(\"text\",{\"className\":\"text\",\"style\":{\"fontSize\":\"400px\",\"fontFamily\":\"sans-serif\",\"fill\":\"#00c1c1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"11\",\"strokeLinejoin\":\"round\"},\"x\":\"720\",\"y\":\"860\",\"key\":1},\"?\"),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 381.71569,821.35273 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.69349,34.16911 1.47762,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37582 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 588.11369,946.15173 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.0466,-28.98431 40.22077,-18.98365 5.07695,16.63333 21.00049,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66313,65.79906 8.62032,17.49344 24.84654,28.75866 42.13251,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15376,4.02275 z m -1.27999,-40 c 6.87656,-3.80189 19.38045,-19.27694 16.28499,-21.26 -1.34942,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.41501,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53376,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.6297,28.77563 9.34801,-0.57952 17.61635,-5.01531 24.5515,-11.09163 z m -148.47901,4.48 c 2.22774,-7.20227 -18.74083,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.97341,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 655.87432,831.21789 c -16.26338,6.66415 -31.18915,-0.57876 -43.69507,-11.66594 -25.27378,-18.87186 -29.51629,-60.80327 -8.11806,-83.95203 7.17377,-11.09975 26.43124,-12.86892 40.6925,-15.04719 -11.60321,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.3047,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 508.46599,881.83273 c -30.90212,-5.78363 -53.97079,-38.29544 -46.76214,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22734,4.00312 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 686.03369,813.67273 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 532.75469,880.87273 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 657.55369,825.51273 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.6095,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45917,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 535.63369,797.03273 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 514.1947,781.67273 c -13.62337,23.23239 34.20992,17.4479 14.92999,-1.675 -4.7198,-3.42966 -10.93589,-2.38684 -14.92999,1.675 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 664.91369,749.67373 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 641.23369,734.95373 c -23.16534,13.48053 16.22356,36.19796 16.84001,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84001,-10.08 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 400.5842,815.35187 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30664,13.62315 25.57877,25.66181 43.12446,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53679,51.60675 8.85324,0.89592 19.50225,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 510.94942,921.1176 460.25004,895.40719 424.3358,853.01312 414.89075,841.74345 407.77621,828.19457 400.5842,815.35187 Z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 399.31569,813.67273 C 385.57938,762.51649 372.20731,707.78467 388.05353,655.4425 c 0.98872,-6.00064 11.53375,-30.35816 3.80091,-14.0079 -18.40755,32.68257 -26.39958,70.61529 -22.83875,107.96371 1.6528,24.26835 6.49435,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 448.88914,625.0381 c 0.16868,5.94741 0.39752,13.66469 2.0767,15.77313 2.98389,-1.75987 38.22733,-34.35757 60.96103,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.9588 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 558.3537,627.11374 c 39.09517,-6.12609 72.80666,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.95881 -6.50128,9.86066 -6.72,15.68 z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 429.0747,739.11373 c 60.27616,3.32632 120.76576,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59042,-17.25402 -13.61969,-4.97772 -43.3853,35.78346 -99.4078,53.74047 -155.01931,57.77772 z\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 526.3537,758.31373 c 79.20474,7.78078 72.67773,114.43784 12.95405,123.33482 C 460.55241,875.9328 466.28534,779.76728 526.3537,758.31373 Z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 539.30774,881.64855 C 441.19158,900.51432 434.358,756.67379 526.3537,758.31373\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 652.75369,719.59273 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 637.39369,835.11273 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64315,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 638.67369,835.75273 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 638.03369,835.43273 C 631.18307,873.53512 617.2115,911.39011 601.73948,946.805\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 382.0337,822.31273 c -33.3709,-89.58384 -21.87248,-203.02025 78.4,-230.71799\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"m 460.31362,591.77558 c -7.72456,10.71099 -10.58551,16.93637 -11.39893,31.17916 -0.9273,6.64494 -0.41032,14.67489 3.25217,19.60903\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 448.91469,622.95474 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 596.43269,585.51374 c -11.97358,5.2494 -21.96258,14.21019 -30.08,24.32\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 566.3537,609.83474 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 566.3527,609.83374 c 38.57084,1.08234 72.86725,22.97326 100.15999,48.64\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 666.51269,658.47374 c -25.28601,-0.93692 -51.80898,3.74198 -74.67129,14.88614\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 429.0747,739.11373 c 59.6567,-4.58454 116.70525,-29.49885 163.51999,-66.23999\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 382.0337,822.31273 c 43.44477,-16.54532 48.84708,-47.98612 46.55385,-85.05616\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 610.1937,727.59273 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 576.27469,911.91273 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 382.0337,822.31273 c -80.11607,39.6821 32.64458,116.1168 67.07407,71.90242\",\"key\":35}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 449.56777,893.70015 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":36}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 418.3797,855.87673 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":37})]);\n}\n\nLogoBracketsNotFoundInline.defaultProps = {\"width\":\"1250\",\"height\":\"960\",\"viewBox\":\"0 0 1250 960\"};\n\nmodule.exports = LogoBracketsNotFoundInline;\n\nLogoBracketsNotFoundInline.default = LogoBracketsNotFoundInline;\n"],"names":["Head","React","Seo","page","NotFoundPage","Layout","className","LogoBracketsNotFound","href","LogoBracketsNotFoundInline","props","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-404-index-js-b31088d4d20dea69e29b.js b/component---src-pages-404-index-js-b31088d4d20dea69e29b.js deleted file mode 100644 index 4edf429..0000000 --- a/component---src-pages-404-index-js-b31088d4d20dea69e29b.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkblog=self.webpackChunkblog||[]).push([[911],{8973:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return o}});var s=l(4578),a=l(7294),r=l(7025),n=l(9116),i=l.n(n);let o=function(e){function t(){return e.apply(this,arguments)||this}return(0,s.Z)(t,e),t.prototype.render=function(){return a.createElement(r.Z,{page:"NotFound"},a.createElement("div",{className:"style-module--container--f966c"},a.createElement(i(),{className:"style-module--logoBracketsNotFound--7ca44"}),a.createElement("p",null,"Uh-oh, we can't seem to find that page..."),a.createElement("a",{className:"blueLink",href:"/"},"Back to homepage")))},t}(a.Component)},9116:function(e,t,l){var s=l(7294);function a(e){return s.createElement("svg",e,[s.createElement("text",{className:"text",style:{fontSize:"730px",fontFamily:"sans-serif",fill:"#00c1c1",stroke:"#09616c",strokeWidth:"15",strokeLinejoin:"round"},x:"30",y:"540",key:0},"404"),s.createElement("text",{className:"text",style:{fontSize:"400px",fontFamily:"sans-serif",fill:"#00c1c1",stroke:"#09616c",strokeWidth:"11",strokeLinejoin:"round"},x:"720",y:"860",key:1},"?"),s.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 381.71569,821.35273 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.69349,34.16911 1.47762,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37582 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z",key:2}),s.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 588.11369,946.15173 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.0466,-28.98431 40.22077,-18.98365 5.07695,16.63333 21.00049,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66313,65.79906 8.62032,17.49344 24.84654,28.75866 42.13251,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15376,4.02275 z m -1.27999,-40 c 6.87656,-3.80189 19.38045,-19.27694 16.28499,-21.26 -1.34942,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.41501,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53376,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.6297,28.77563 9.34801,-0.57952 17.61635,-5.01531 24.5515,-11.09163 z m -148.47901,4.48 c 2.22774,-7.20227 -18.74083,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.97341,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z",key:3}),s.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 655.87432,831.21789 c -16.26338,6.66415 -31.18915,-0.57876 -43.69507,-11.66594 -25.27378,-18.87186 -29.51629,-60.80327 -8.11806,-83.95203 7.17377,-11.09975 26.43124,-12.86892 40.6925,-15.04719 -11.60321,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.3047,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:4}),s.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 508.46599,881.83273 c -30.90212,-5.78363 -53.97079,-38.29544 -46.76214,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22734,4.00312 z",key:5}),s.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 686.03369,813.67273 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:6}),s.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 532.75469,880.87273 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:7}),s.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 657.55369,825.51273 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.6095,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45917,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:8}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 535.63369,797.03273 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:9}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 514.1947,781.67273 c -13.62337,23.23239 34.20992,17.4479 14.92999,-1.675 -4.7198,-3.42966 -10.93589,-2.38684 -14.92999,1.675 z",key:10}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 664.91369,749.67373 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:11}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 641.23369,734.95373 c -23.16534,13.48053 16.22356,36.19796 16.84001,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84001,-10.08 z",key:12}),s.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 400.5842,815.35187 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30664,13.62315 25.57877,25.66181 43.12446,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53679,51.60675 8.85324,0.89592 19.50225,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 510.94942,921.1176 460.25004,895.40719 424.3358,853.01312 414.89075,841.74345 407.77621,828.19457 400.5842,815.35187 Z",key:13}),s.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 399.31569,813.67273 C 385.57938,762.51649 372.20731,707.78467 388.05353,655.4425 c 0.98872,-6.00064 11.53375,-30.35816 3.80091,-14.0079 -18.40755,32.68257 -26.39958,70.61529 -22.83875,107.96371 1.6528,24.26835 6.49435,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z",key:14}),s.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 448.88914,625.0381 c 0.16868,5.94741 0.39752,13.66469 2.0767,15.77313 2.98389,-1.75987 38.22733,-34.35757 60.96103,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.9588 z",key:15}),s.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 558.3537,627.11374 c 39.09517,-6.12609 72.80666,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.95881 -6.50128,9.86066 -6.72,15.68 z",key:16}),s.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 429.0747,739.11373 c 60.27616,3.32632 120.76576,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59042,-17.25402 -13.61969,-4.97772 -43.3853,35.78346 -99.4078,53.74047 -155.01931,57.77772 z",key:17}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 526.3537,758.31373 c 79.20474,7.78078 72.67773,114.43784 12.95405,123.33482 C 460.55241,875.9328 466.28534,779.76728 526.3537,758.31373 Z",key:18}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 539.30774,881.64855 C 441.19158,900.51432 434.358,756.67379 526.3537,758.31373",key:19}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 652.75369,719.59273 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z",key:20}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 637.39369,835.11273 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64315,1.13381 -31.95772,4.91189 -42.56,8",key:21}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 638.67369,835.75273 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16",key:22}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 638.03369,835.43273 C 631.18307,873.53512 617.2115,911.39011 601.73948,946.805",key:23}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 382.0337,822.31273 c -33.3709,-89.58384 -21.87248,-203.02025 78.4,-230.71799",key:24}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"m 460.31362,591.77558 c -7.72456,10.71099 -10.58551,16.93637 -11.39893,31.17916 -0.9273,6.64494 -0.41032,14.67489 3.25217,19.60903",key:25}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 448.91469,622.95474 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441",key:26}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 596.43269,585.51374 c -11.97358,5.2494 -21.96258,14.21019 -30.08,24.32",key:27}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 566.3537,609.83474 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425",key:28}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 566.3527,609.83374 c 38.57084,1.08234 72.86725,22.97326 100.15999,48.64",key:29}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 666.51269,658.47374 c -25.28601,-0.93692 -51.80898,3.74198 -74.67129,14.88614",key:30}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 429.0747,739.11373 c 59.6567,-4.58454 116.70525,-29.49885 163.51999,-66.23999",key:31}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 382.0337,822.31273 c 43.44477,-16.54532 48.84708,-47.98612 46.55385,-85.05616",key:32}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 610.1937,727.59273 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899",key:33}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 576.27469,911.91273 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:34}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 382.0337,822.31273 c -80.11607,39.6821 32.64458,116.1168 67.07407,71.90242",key:35}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 449.56777,893.70015 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:36}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 418.3797,855.87673 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:37})])}a.defaultProps={width:"1250",height:"960",viewBox:"0 0 1250 960"},e.exports=a,a.default=a}}]); -//# sourceMappingURL=component---src-pages-404-index-js-b31088d4d20dea69e29b.js.map \ No newline at end of file diff --git a/component---src-pages-404-index-js-b31088d4d20dea69e29b.js.map b/component---src-pages-404-index-js-b31088d4d20dea69e29b.js.map deleted file mode 100644 index 7a4d63a..0000000 --- a/component---src-pages-404-index-js-b31088d4d20dea69e29b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-404-index-js-b31088d4d20dea69e29b.js","mappings":"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","sources":["webpack://blog/./src/pages/404/index.js","webpack://blog/./src/pages/404/style.module.css","webpack://blog/./static/logoBracketsNotFound.inline.svg"],"sourcesContent":["import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport LogoBracketsNotFound from \"../../../static/logoBracketsNotFound.inline.svg\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nexport default class NotFoundPage extends React.Component {\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n

Uh-oh, we can't seem to find that page...

\r\n \r\n Back to homepage\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--f966c\";\nexport var logoBracketsNotFound = \"style-module--logoBracketsNotFound--7ca44\";","var React = require('react');\n\nfunction LogoBracketsNotFoundInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"text\",{\"className\":\"text\",\"style\":{\"fontSize\":\"730px\",\"fontFamily\":\"sans-serif\",\"fill\":\"#00c1c1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"15\",\"strokeLinejoin\":\"round\"},\"x\":\"30\",\"y\":\"540\",\"key\":0},\"404\"),React.createElement(\"text\",{\"className\":\"text\",\"style\":{\"fontSize\":\"400px\",\"fontFamily\":\"sans-serif\",\"fill\":\"#00c1c1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"11\",\"strokeLinejoin\":\"round\"},\"x\":\"720\",\"y\":\"860\",\"key\":1},\"?\"),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 381.71569,821.35273 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.69349,34.16911 1.47762,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37582 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 588.11369,946.15173 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.0466,-28.98431 40.22077,-18.98365 5.07695,16.63333 21.00049,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66313,65.79906 8.62032,17.49344 24.84654,28.75866 42.13251,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15376,4.02275 z m -1.27999,-40 c 6.87656,-3.80189 19.38045,-19.27694 16.28499,-21.26 -1.34942,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.41501,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53376,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.6297,28.77563 9.34801,-0.57952 17.61635,-5.01531 24.5515,-11.09163 z m -148.47901,4.48 c 2.22774,-7.20227 -18.74083,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.97341,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 655.87432,831.21789 c -16.26338,6.66415 -31.18915,-0.57876 -43.69507,-11.66594 -25.27378,-18.87186 -29.51629,-60.80327 -8.11806,-83.95203 7.17377,-11.09975 26.43124,-12.86892 40.6925,-15.04719 -11.60321,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.3047,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 508.46599,881.83273 c -30.90212,-5.78363 -53.97079,-38.29544 -46.76214,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22734,4.00312 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 686.03369,813.67273 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 532.75469,880.87273 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 657.55369,825.51273 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.6095,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45917,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 535.63369,797.03273 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 514.1947,781.67273 c -13.62337,23.23239 34.20992,17.4479 14.92999,-1.675 -4.7198,-3.42966 -10.93589,-2.38684 -14.92999,1.675 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 664.91369,749.67373 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 641.23369,734.95373 c -23.16534,13.48053 16.22356,36.19796 16.84001,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84001,-10.08 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 400.5842,815.35187 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30664,13.62315 25.57877,25.66181 43.12446,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53679,51.60675 8.85324,0.89592 19.50225,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 510.94942,921.1176 460.25004,895.40719 424.3358,853.01312 414.89075,841.74345 407.77621,828.19457 400.5842,815.35187 Z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 399.31569,813.67273 C 385.57938,762.51649 372.20731,707.78467 388.05353,655.4425 c 0.98872,-6.00064 11.53375,-30.35816 3.80091,-14.0079 -18.40755,32.68257 -26.39958,70.61529 -22.83875,107.96371 1.6528,24.26835 6.49435,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 448.88914,625.0381 c 0.16868,5.94741 0.39752,13.66469 2.0767,15.77313 2.98389,-1.75987 38.22733,-34.35757 60.96103,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.9588 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 558.3537,627.11374 c 39.09517,-6.12609 72.80666,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.95881 -6.50128,9.86066 -6.72,15.68 z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 429.0747,739.11373 c 60.27616,3.32632 120.76576,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59042,-17.25402 -13.61969,-4.97772 -43.3853,35.78346 -99.4078,53.74047 -155.01931,57.77772 z\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 526.3537,758.31373 c 79.20474,7.78078 72.67773,114.43784 12.95405,123.33482 C 460.55241,875.9328 466.28534,779.76728 526.3537,758.31373 Z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 539.30774,881.64855 C 441.19158,900.51432 434.358,756.67379 526.3537,758.31373\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 652.75369,719.59273 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 637.39369,835.11273 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64315,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 638.67369,835.75273 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 638.03369,835.43273 C 631.18307,873.53512 617.2115,911.39011 601.73948,946.805\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 382.0337,822.31273 c -33.3709,-89.58384 -21.87248,-203.02025 78.4,-230.71799\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"m 460.31362,591.77558 c -7.72456,10.71099 -10.58551,16.93637 -11.39893,31.17916 -0.9273,6.64494 -0.41032,14.67489 3.25217,19.60903\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 448.91469,622.95474 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 596.43269,585.51374 c -11.97358,5.2494 -21.96258,14.21019 -30.08,24.32\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 566.3537,609.83474 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 566.3527,609.83374 c 38.57084,1.08234 72.86725,22.97326 100.15999,48.64\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 666.51269,658.47374 c -25.28601,-0.93692 -51.80898,3.74198 -74.67129,14.88614\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 429.0747,739.11373 c 59.6567,-4.58454 116.70525,-29.49885 163.51999,-66.23999\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 382.0337,822.31273 c 43.44477,-16.54532 48.84708,-47.98612 46.55385,-85.05616\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 610.1937,727.59273 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 576.27469,911.91273 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 382.0337,822.31273 c -80.11607,39.6821 32.64458,116.1168 67.07407,71.90242\",\"key\":35}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 449.56777,893.70015 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":36}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 418.3797,855.87673 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":37})]);\n}\n\nLogoBracketsNotFoundInline.defaultProps = {\"width\":\"1250\",\"height\":\"960\",\"viewBox\":\"0 0 1250 960\"};\n\nmodule.exports = LogoBracketsNotFoundInline;\n\nLogoBracketsNotFoundInline.default = LogoBracketsNotFoundInline;\n"],"names":["NotFoundPage","_React$Component","apply","arguments","_inheritsLoose","prototype","render","React","Layout","page","className","LogoBracketsNotFound","href","LogoBracketsNotFoundInline","props","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js b/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js deleted file mode 100644 index 0247f57..0000000 --- a/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkblog=self.webpackChunkblog||[]).push([[911],{8973:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return o}});var s=l(7294),a=l(8610),r=l(9116),i=l.n(r);var o=()=>s.createElement(a.Z,{page:"NotFound"},s.createElement("div",{className:"style-module--container--f966c"},s.createElement(i(),{className:"style-module--logoBracketsNotFound--7ca44"}),s.createElement("p",null,"Uh-oh, we can't seem to find that page..."),s.createElement("a",{className:"blueLink",href:"/"},"Back to homepage")))},9116:function(e,t,l){var s=l(7294);function a(e){return s.createElement("svg",e,[s.createElement("text",{className:"text",style:{fontSize:"730px",fontFamily:"sans-serif",fill:"#00c1c1",stroke:"#09616c",strokeWidth:"15",strokeLinejoin:"round"},x:"30",y:"540",key:0},"404"),s.createElement("text",{className:"text",style:{fontSize:"400px",fontFamily:"sans-serif",fill:"#00c1c1",stroke:"#09616c",strokeWidth:"11",strokeLinejoin:"round"},x:"720",y:"860",key:1},"?"),s.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 381.71569,821.35273 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.69349,34.16911 1.47762,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37582 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z",key:2}),s.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 588.11369,946.15173 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.0466,-28.98431 40.22077,-18.98365 5.07695,16.63333 21.00049,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66313,65.79906 8.62032,17.49344 24.84654,28.75866 42.13251,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15376,4.02275 z m -1.27999,-40 c 6.87656,-3.80189 19.38045,-19.27694 16.28499,-21.26 -1.34942,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.41501,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53376,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.6297,28.77563 9.34801,-0.57952 17.61635,-5.01531 24.5515,-11.09163 z m -148.47901,4.48 c 2.22774,-7.20227 -18.74083,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.97341,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z",key:3}),s.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 655.87432,831.21789 c -16.26338,6.66415 -31.18915,-0.57876 -43.69507,-11.66594 -25.27378,-18.87186 -29.51629,-60.80327 -8.11806,-83.95203 7.17377,-11.09975 26.43124,-12.86892 40.6925,-15.04719 -11.60321,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.3047,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:4}),s.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 508.46599,881.83273 c -30.90212,-5.78363 -53.97079,-38.29544 -46.76214,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22734,4.00312 z",key:5}),s.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 686.03369,813.67273 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:6}),s.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 532.75469,880.87273 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:7}),s.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 657.55369,825.51273 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.6095,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45917,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:8}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 535.63369,797.03273 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:9}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 514.1947,781.67273 c -13.62337,23.23239 34.20992,17.4479 14.92999,-1.675 -4.7198,-3.42966 -10.93589,-2.38684 -14.92999,1.675 z",key:10}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 664.91369,749.67373 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:11}),s.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 641.23369,734.95373 c -23.16534,13.48053 16.22356,36.19796 16.84001,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84001,-10.08 z",key:12}),s.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 400.5842,815.35187 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30664,13.62315 25.57877,25.66181 43.12446,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53679,51.60675 8.85324,0.89592 19.50225,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 510.94942,921.1176 460.25004,895.40719 424.3358,853.01312 414.89075,841.74345 407.77621,828.19457 400.5842,815.35187 Z",key:13}),s.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 399.31569,813.67273 C 385.57938,762.51649 372.20731,707.78467 388.05353,655.4425 c 0.98872,-6.00064 11.53375,-30.35816 3.80091,-14.0079 -18.40755,32.68257 -26.39958,70.61529 -22.83875,107.96371 1.6528,24.26835 6.49435,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z",key:14}),s.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 448.88914,625.0381 c 0.16868,5.94741 0.39752,13.66469 2.0767,15.77313 2.98389,-1.75987 38.22733,-34.35757 60.96103,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.9588 z",key:15}),s.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 558.3537,627.11374 c 39.09517,-6.12609 72.80666,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.95881 -6.50128,9.86066 -6.72,15.68 z",key:16}),s.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 429.0747,739.11373 c 60.27616,3.32632 120.76576,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59042,-17.25402 -13.61969,-4.97772 -43.3853,35.78346 -99.4078,53.74047 -155.01931,57.77772 z",key:17}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 526.3537,758.31373 c 79.20474,7.78078 72.67773,114.43784 12.95405,123.33482 C 460.55241,875.9328 466.28534,779.76728 526.3537,758.31373 Z",key:18}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 539.30774,881.64855 C 441.19158,900.51432 434.358,756.67379 526.3537,758.31373",key:19}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 652.75369,719.59273 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z",key:20}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 637.39369,835.11273 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64315,1.13381 -31.95772,4.91189 -42.56,8",key:21}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 638.67369,835.75273 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16",key:22}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 638.03369,835.43273 C 631.18307,873.53512 617.2115,911.39011 601.73948,946.805",key:23}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 382.0337,822.31273 c -33.3709,-89.58384 -21.87248,-203.02025 78.4,-230.71799",key:24}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"m 460.31362,591.77558 c -7.72456,10.71099 -10.58551,16.93637 -11.39893,31.17916 -0.9273,6.64494 -0.41032,14.67489 3.25217,19.60903",key:25}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 448.91469,622.95474 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441",key:26}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 596.43269,585.51374 c -11.97358,5.2494 -21.96258,14.21019 -30.08,24.32",key:27}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 566.3537,609.83474 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425",key:28}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 566.3527,609.83374 c 38.57084,1.08234 72.86725,22.97326 100.15999,48.64",key:29}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 666.51269,658.47374 c -25.28601,-0.93692 -51.80898,3.74198 -74.67129,14.88614",key:30}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 429.0747,739.11373 c 59.6567,-4.58454 116.70525,-29.49885 163.51999,-66.23999",key:31}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 382.0337,822.31273 c 43.44477,-16.54532 48.84708,-47.98612 46.55385,-85.05616",key:32}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 610.1937,727.59273 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899",key:33}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 576.27469,911.91273 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:34}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 382.0337,822.31273 c -80.11607,39.6821 32.64458,116.1168 67.07407,71.90242",key:35}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 449.56777,893.70015 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:36}),s.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 418.3797,855.87673 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:37})])}a.defaultProps={width:"1250",height:"960",viewBox:"0 0 1250 960"},e.exports=a,a.default=a}}]); -//# sourceMappingURL=component---src-pages-404-index-js-d58d7d2efb7e833438b7.js.map \ No newline at end of file diff --git a/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js.map b/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js.map deleted file mode 100644 index 6f80483..0000000 --- a/component---src-pages-404-index-js-d58d7d2efb7e833438b7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-404-index-js-d58d7d2efb7e833438b7.js","mappings":"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","sources":["webpack://blog/./src/pages/404/index.js","webpack://blog/./src/pages/404/style.module.css","webpack://blog/./static/logoBracketsNotFound.inline.svg"],"sourcesContent":["import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport LogoBracketsNotFound from \"../../../static/logoBracketsNotFound.inline.svg\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst NotFoundPage = () => {\r\n return (\r\n \r\n
\r\n \r\n

Uh-oh, we can't seem to find that page...

\r\n \r\n Back to homepage\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default NotFoundPage;","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--f966c\";\nexport var logoBracketsNotFound = \"style-module--logoBracketsNotFound--7ca44\";","var React = require('react');\n\nfunction LogoBracketsNotFoundInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"text\",{\"className\":\"text\",\"style\":{\"fontSize\":\"730px\",\"fontFamily\":\"sans-serif\",\"fill\":\"#00c1c1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"15\",\"strokeLinejoin\":\"round\"},\"x\":\"30\",\"y\":\"540\",\"key\":0},\"404\"),React.createElement(\"text\",{\"className\":\"text\",\"style\":{\"fontSize\":\"400px\",\"fontFamily\":\"sans-serif\",\"fill\":\"#00c1c1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"11\",\"strokeLinejoin\":\"round\"},\"x\":\"720\",\"y\":\"860\",\"key\":1},\"?\"),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 381.71569,821.35273 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.69349,34.16911 1.47762,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37582 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 588.11369,946.15173 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.0466,-28.98431 40.22077,-18.98365 5.07695,16.63333 21.00049,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66313,65.79906 8.62032,17.49344 24.84654,28.75866 42.13251,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15376,4.02275 z m -1.27999,-40 c 6.87656,-3.80189 19.38045,-19.27694 16.28499,-21.26 -1.34942,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.41501,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53376,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.6297,28.77563 9.34801,-0.57952 17.61635,-5.01531 24.5515,-11.09163 z m -148.47901,4.48 c 2.22774,-7.20227 -18.74083,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.97341,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 655.87432,831.21789 c -16.26338,6.66415 -31.18915,-0.57876 -43.69507,-11.66594 -25.27378,-18.87186 -29.51629,-60.80327 -8.11806,-83.95203 7.17377,-11.09975 26.43124,-12.86892 40.6925,-15.04719 -11.60321,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.3047,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 508.46599,881.83273 c -30.90212,-5.78363 -53.97079,-38.29544 -46.76214,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22734,4.00312 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 686.03369,813.67273 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 532.75469,880.87273 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 657.55369,825.51273 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.6095,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45917,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 535.63369,797.03273 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 514.1947,781.67273 c -13.62337,23.23239 34.20992,17.4479 14.92999,-1.675 -4.7198,-3.42966 -10.93589,-2.38684 -14.92999,1.675 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 664.91369,749.67373 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 641.23369,734.95373 c -23.16534,13.48053 16.22356,36.19796 16.84001,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84001,-10.08 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 400.5842,815.35187 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30664,13.62315 25.57877,25.66181 43.12446,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53679,51.60675 8.85324,0.89592 19.50225,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 510.94942,921.1176 460.25004,895.40719 424.3358,853.01312 414.89075,841.74345 407.77621,828.19457 400.5842,815.35187 Z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 399.31569,813.67273 C 385.57938,762.51649 372.20731,707.78467 388.05353,655.4425 c 0.98872,-6.00064 11.53375,-30.35816 3.80091,-14.0079 -18.40755,32.68257 -26.39958,70.61529 -22.83875,107.96371 1.6528,24.26835 6.49435,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 448.88914,625.0381 c 0.16868,5.94741 0.39752,13.66469 2.0767,15.77313 2.98389,-1.75987 38.22733,-34.35757 60.96103,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.9588 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 558.3537,627.11374 c 39.09517,-6.12609 72.80666,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.95881 -6.50128,9.86066 -6.72,15.68 z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 429.0747,739.11373 c 60.27616,3.32632 120.76576,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59042,-17.25402 -13.61969,-4.97772 -43.3853,35.78346 -99.4078,53.74047 -155.01931,57.77772 z\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 526.3537,758.31373 c 79.20474,7.78078 72.67773,114.43784 12.95405,123.33482 C 460.55241,875.9328 466.28534,779.76728 526.3537,758.31373 Z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 539.30774,881.64855 C 441.19158,900.51432 434.358,756.67379 526.3537,758.31373\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 652.75369,719.59273 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 637.39369,835.11273 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64315,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 638.67369,835.75273 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 638.03369,835.43273 C 631.18307,873.53512 617.2115,911.39011 601.73948,946.805\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 382.0337,822.31273 c -33.3709,-89.58384 -21.87248,-203.02025 78.4,-230.71799\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"m 460.31362,591.77558 c -7.72456,10.71099 -10.58551,16.93637 -11.39893,31.17916 -0.9273,6.64494 -0.41032,14.67489 3.25217,19.60903\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 448.91469,622.95474 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 596.43269,585.51374 c -11.97358,5.2494 -21.96258,14.21019 -30.08,24.32\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 566.3537,609.83474 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 566.3527,609.83374 c 38.57084,1.08234 72.86725,22.97326 100.15999,48.64\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 666.51269,658.47374 c -25.28601,-0.93692 -51.80898,3.74198 -74.67129,14.88614\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 429.0747,739.11373 c 59.6567,-4.58454 116.70525,-29.49885 163.51999,-66.23999\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 382.0337,822.31273 c 43.44477,-16.54532 48.84708,-47.98612 46.55385,-85.05616\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 610.1937,727.59273 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 576.27469,911.91273 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 382.0337,822.31273 c -80.11607,39.6821 32.64458,116.1168 67.07407,71.90242\",\"key\":35}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 449.56777,893.70015 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":36}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 418.3797,855.87673 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":37})]);\n}\n\nLogoBracketsNotFoundInline.defaultProps = {\"width\":\"1250\",\"height\":\"960\",\"viewBox\":\"0 0 1250 960\"};\n\nmodule.exports = LogoBracketsNotFoundInline;\n\nLogoBracketsNotFoundInline.default = LogoBracketsNotFoundInline;\n"],"names":["NotFoundPage","React","Layout","page","className","LogoBracketsNotFound","href","LogoBracketsNotFoundInline","props","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js b/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js deleted file mode 100644 index 49201d5..0000000 --- a/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[790],{9219:function(e,t,a){a.r(t),a.d(t,{default:function(){return n}});var o=a(7294),r=a(8610),s=a.p+"static/profile-ed089250cf8586f0cd80ddc727c134a6.png";var n=()=>o.createElement(r.Z,{page:"About"},o.createElement("div",{className:"style-module--about--aa839"},o.createElement("img",{className:"style-module--profile--04dbc",src:s,alt:"Me"}),o.createElement("p",{className:"style-module--aboutText--6665e"},"Hi I'm George. I’m a Software Engineer working in the UK. I graduated from the University of Oxford in Chemistry in 2016, but quickly switched from science to software after that. I mostly use C#, SQL, JavaScript and a bit of Python at work. I'm always interested in learning new things so don't hesitate to ",o.createElement("a",{className:"blueLink",href:"mailto:george-pearson.business@outlook.com"},"reach out!")," 😊")))}}]); -//# sourceMappingURL=component---src-pages-about-index-js-635a90325f80ce2ef5b8.js.map \ No newline at end of file diff --git a/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js.map b/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js.map deleted file mode 100644 index e65b7eb..0000000 --- a/component---src-pages-about-index-js-635a90325f80ce2ef5b8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-about-index-js-635a90325f80ce2ef5b8.js","mappings":"sKAAA,EAAe,IAA0B,sDCsBzC,MAjBcA,IAEVC,EAAAA,cAACC,EAAAA,EAAM,CAACC,KAAK,SACXF,EAAAA,cAAA,OAAKG,UCPQ,8BDQXH,EAAAA,cAAA,OAAKG,UCNQ,+BDMkBC,IAAKC,EAASC,IAAI,OACjDN,EAAAA,cAAA,KAAGG,UCRY,kCDQgB,uTAK0BH,EAAAA,cAAA,KAAGG,UAAU,WAAWI,KAAK,8CAA6C,cAAc,Q","sources":["webpack://blog/./static/profile.png","webpack://blog/./src/pages/about/index.js","webpack://blog/./src/pages/about/style.module.css"],"sourcesContent":["export default __webpack_public_path__ + \"static/profile-ed089250cf8586f0cd80ddc727c134a6.png\";","import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport Profile from \"../../../static/profile.png\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst About = () => {\r\n return (\r\n \r\n
\r\n \"Me\"\r\n

\r\n Hi I'm George. I’m a Software Engineer working in the UK. I\r\n graduated from the University of Oxford in Chemistry in 2016, but\r\n quickly switched from science to software after that. I mostly use\r\n C#, SQL, JavaScript and a bit of Python at work. I'm always\r\n interested in learning new things so don't hesitate to reach out! 😊\r\n

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default About;","// extracted by mini-css-extract-plugin\nexport var about = \"style-module--about--aa839\";\nexport var aboutText = \"style-module--aboutText--6665e\";\nexport var profile = \"style-module--profile--04dbc\";"],"names":["About","React","Layout","page","className","src","Profile","alt","href"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-about-index-js-81a2a2b55d10538c0650.js b/component---src-pages-about-index-js-81a2a2b55d10538c0650.js deleted file mode 100644 index a64ec5a..0000000 --- a/component---src-pages-about-index-js-81a2a2b55d10538c0650.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[790],{9219:function(e,t,a){a.r(t),a.d(t,{default:function(){return i}});var n=a(4578),o=a(7294),r=a(7025),s=a.p+"static/profile-ed089250cf8586f0cd80ddc727c134a6.png";let i=function(e){function t(){return e.apply(this,arguments)||this}return(0,n.Z)(t,e),t.prototype.render=function(){return o.createElement(r.Z,{page:"About"},o.createElement("div",{className:"style-module--about--aa839"},o.createElement("img",{className:"style-module--profile--04dbc",src:s,alt:"Me"}),o.createElement("p",{className:"style-module--aboutText--6665e"},"Hi I'm George. I’m a Software Engineer working in the UK. I graduated from the University of Oxford in Chemistry in 2016, but quickly switched from science to software after that. I mostly use C#, SQL, JavaScript and a bit of Python at work. I'm always interested in learning new things so don't hesitate to ",o.createElement("a",{className:"blueLink",href:"mailto:george-pearson.business@outlook.com"},"reach out!")," 😊")))},t}(o.Component)}}]); -//# sourceMappingURL=component---src-pages-about-index-js-81a2a2b55d10538c0650.js.map \ No newline at end of file diff --git a/component---src-pages-about-index-js-81a2a2b55d10538c0650.js.map b/component---src-pages-about-index-js-81a2a2b55d10538c0650.js.map deleted file mode 100644 index 3ff8dd4..0000000 --- a/component---src-pages-about-index-js-81a2a2b55d10538c0650.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-about-index-js-81a2a2b55d10538c0650.js","mappings":"gLAAA,EAAe,IAA0B,sDCGG,IAEvBA,EAAK,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAC,MAAA,KAAAC,YAAA,KAgBvB,OAhBuBC,EAAAA,EAAAA,GAAAJ,EAAAC,GAAAD,EAAAK,UACxBC,OAAA,WACE,OACEC,EAAAA,cAACC,EAAAA,EAAM,CAACC,KAAK,SACXF,EAAAA,cAAA,OAAKG,UCRM,8BDSTH,EAAAA,cAAA,OAAKG,UCPM,+BDOoBC,IAAKC,EAASC,IAAI,OACjDN,EAAAA,cAAA,KAAGG,UCTU,kCDSkB,uTAK0BH,EAAAA,cAAA,KAAGG,UAAU,WAAWI,KAAK,8CAA6C,cAAc,QAKzJ,EAACd,CAAA,CAhBuB,CAASO,EAAAA,U","sources":["webpack://blog/./static/profile.png","webpack://blog/./src/pages/about/index.js","webpack://blog/./src/pages/about/style.module.css"],"sourcesContent":["export default __webpack_public_path__ + \"static/profile-ed089250cf8586f0cd80ddc727c134a6.png\";","import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport Profile from \"../../../static/profile.png\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nexport default class About extends React.Component {\r\n render() {\r\n return (\r\n \r\n
\r\n \"Me\"\r\n

\r\n Hi I'm George. I’m a Software Engineer working in the UK. I\r\n graduated from the University of Oxford in Chemistry in 2016, but\r\n quickly switched from science to software after that. I mostly use\r\n C#, SQL, JavaScript and a bit of Python at work. I'm always\r\n interested in learning new things so don't hesitate to reach out! 😊\r\n

\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport var about = \"style-module--about--aa839\";\nexport var aboutText = \"style-module--aboutText--6665e\";\nexport var profile = \"style-module--profile--04dbc\";"],"names":["About","_React$Component","apply","arguments","_inheritsLoose","prototype","render","React","Layout","page","className","src","Profile","alt","href"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-about-index-js-f91c3c56105ac2884c28.js b/component---src-pages-about-index-js-f91c3c56105ac2884c28.js new file mode 100644 index 0000000..ed953ec --- /dev/null +++ b/component---src-pages-about-index-js-f91c3c56105ac2884c28.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[790],{9219:function(e,t,a){a.r(t),a.d(t,{Head:function(){return l},default:function(){return c}});var n=a(7294),o=a(3306),r=a(4527),s=a.p+"static/profile-ed089250cf8586f0cd80ddc727c134a6.png";const l=()=>n.createElement(o.Z,{page:"About"});var c=()=>n.createElement(r.Z,null,n.createElement("div",{className:"style-module--about--aa839"},n.createElement("img",{className:"style-module--profile--04dbc",src:s,alt:"Me"}),n.createElement("p",{className:"style-module--aboutText--6665e"},"Hi I'm George. I’m a Software Engineer working in the UK. I graduated from the University of Oxford in Chemistry in 2016, but quickly switched from science to software after that. I mostly use C#, SQL, JavaScript and a bit of Python at work. I'm always interested in learning new things so don't hesitate to ",n.createElement("a",{className:"blueLink",href:"mailto:george-pearson.business@outlook.com"},"reach out!")," 😊")))}}]); +//# sourceMappingURL=component---src-pages-about-index-js-f91c3c56105ac2884c28.js.map \ No newline at end of file diff --git a/component---src-pages-about-index-js-f91c3c56105ac2884c28.js.map b/component---src-pages-about-index-js-f91c3c56105ac2884c28.js.map new file mode 100644 index 0000000..64b73ba --- /dev/null +++ b/component---src-pages-about-index-js-f91c3c56105ac2884c28.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-about-index-js-f91c3c56105ac2884c28.js","mappings":"0MAAA,EAAe,IAA0B,sDCMzC,MAiBaA,EAAOA,IAAMC,EAAAA,cAACC,EAAAA,EAAG,CAACC,KAAK,UAEpC,MAnBcC,IAEVH,EAAAA,cAACI,EAAAA,EAAM,KACLJ,EAAAA,cAAA,OAAKK,UCRQ,8BDSXL,EAAAA,cAAA,OAAKK,UCPQ,+BDOkBC,IAAKC,EAASC,IAAI,OACjDR,EAAAA,cAAA,KAAGK,UCTY,kCDSgB,uTAK0BL,EAAAA,cAAA,KAAGK,UAAU,WAAWI,KAAK,8CAA6C,cAAc,Q","sources":["webpack://blog/./static/profile.png","webpack://blog/./src/pages/about/index.js","webpack://blog/./src/pages/about/style.module.css"],"sourcesContent":["export default __webpack_public_path__ + \"static/profile-ed089250cf8586f0cd80ddc727c134a6.png\";","import React from \"react\";\r\nimport Seo from \"../../components/seo/seo\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport Profile from \"../../../static/profile.png\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst About = () => {\r\n return (\r\n \r\n
\r\n \"Me\"\r\n

\r\n Hi I'm George. I’m a Software Engineer working in the UK. I\r\n graduated from the University of Oxford in Chemistry in 2016, but\r\n quickly switched from science to software after that. I mostly use\r\n C#, SQL, JavaScript and a bit of Python at work. I'm always\r\n interested in learning new things so don't hesitate to reach out! 😊\r\n

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const Head = () => ;\r\n\r\nexport default About;","// extracted by mini-css-extract-plugin\nexport var about = \"style-module--about--aa839\";\nexport var aboutText = \"style-module--aboutText--6665e\";\nexport var profile = \"style-module--profile--04dbc\";"],"names":["Head","React","Seo","page","About","Layout","className","src","Profile","alt","href"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js b/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js new file mode 100644 index 0000000..3d47b88 --- /dev/null +++ b/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[286],{9165:function(e,a,t){t.r(a),t.d(a,{Head:function(){return v},default:function(){return N}});var l=t(7294),c=t(3306),r=t(4527),n="style-module--galleryImage--bde9d",s=t.p+"static/CommonBlue-51e85cf80267b07c5b3cade7461f265c.jpg",m=t.p+"static/Alps-3d26e21483b41658d4c72472e6d93970.jpg",d=t.p+"static/Harvest-f6a01799e4c8d2e47b52a2aa2e8e6996.jpg",i=t.p+"static/GreatWillowHerb-9d34a5c391c58cffac48beddb363c416.jpg",E=t(9339),f=t.p+"static/Rockpools-c5ed7c6c0f61e733c9dd34151c7d19f4.jpg",p=t.p+"static/Peninsula-14c4cc8a04291127f1d44de0a5df5094.jpg",o=t.p+"static/Beach-1925512f8cf9fdd39b366b0a86f3a5ac.jpg",u=t.p+"static/Alpine-dce3ad8a8dad14bf4f91ee59f9f1d4d5.jpg",g=t.p+"static/Castle-0497a7aeb7662acc24ad384dc4033010.jpg",b=t.p+"static/Door-64edd5be60e0de4829874ee6f6c8c305.jpg",h=t.p+"static/Forest-8d608c1a2316d1ab64978b78f9f570c8.jpg";const v=()=>l.createElement(c.Z,{page:"Photos"});var N=()=>l.createElement(r.Z,null,l.createElement("div",null,l.createElement("h2",{className:"style-module--photosTitle--a013a"},"Photos"),l.createElement("div",{className:"style-module--gallery--89fc4"},l.createElement("div",null,l.createElement("a",{href:s},l.createElement("img",{className:n,src:s,alt:"CommonBlue"}))),l.createElement("div",null,l.createElement("a",{href:m},l.createElement("img",{className:n,src:m,alt:"Alps"}))),l.createElement("div",null,l.createElement("a",{href:d},l.createElement("img",{className:n,src:d,alt:"Harvest"}))),l.createElement("div",null,l.createElement("a",{href:i},l.createElement("img",{className:n,src:i,alt:"GreatWillowHerb"}))),l.createElement("div",null,l.createElement("a",{href:E.Z},l.createElement("img",{className:n,src:E.Z,alt:"Sunset"}))),l.createElement("div",null,l.createElement("a",{href:f},l.createElement("img",{className:n,src:f,alt:"Rockpools"}))),l.createElement("div",null,l.createElement("a",{href:p},l.createElement("img",{className:n,src:p,alt:"Peninsula"}))),l.createElement("div",null,l.createElement("a",{href:o},l.createElement("img",{className:n,src:o,alt:"Beach"}))),l.createElement("div",null,l.createElement("a",{href:u},l.createElement("img",{className:n,src:u,alt:"Alpine"}))),l.createElement("div",null,l.createElement("a",{href:g},l.createElement("img",{className:n,src:g,alt:"Castle"}))),l.createElement("div",null,l.createElement("a",{href:b},l.createElement("img",{className:n,src:b,alt:"Door"}))),l.createElement("div",null,l.createElement("a",{href:h},l.createElement("img",{className:n,src:h,alt:"Forest"}))))))},9339:function(e,a,t){a.Z=t.p+"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg"}}]); +//# sourceMappingURL=component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js.map \ No newline at end of file diff --git a/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js.map b/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js.map new file mode 100644 index 0000000..3f86b9e --- /dev/null +++ b/component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js","mappings":"0MAEWA,EAAe,oCCF1B,EAAe,IAA0B,yDCAzC,EAAe,IAA0B,mDCAzC,EAAe,IAA0B,sDCAzC,EAAe,IAA0B,8D,UCAzC,EAAe,IAA0B,wDCAzC,EAAe,IAA0B,wDCAzC,EAAe,IAA0B,oDCAzC,EAAe,IAA0B,qDCAzC,EAAe,IAA0B,qDCAzC,EAAe,IAA0B,mDCAzC,EAAe,IAA0B,qDCiBzC,MA4FaC,EAAOA,IAAMC,EAAAA,cAACC,EAAAA,EAAG,CAACC,KAAK,WAEpC,MA9FeC,IAEXH,EAAAA,cAACI,EAAAA,EAAM,KACLJ,EAAAA,cAAA,WACEA,EAAAA,cAAA,MAAIK,UZlBa,oCYkBiB,UAClCL,EAAAA,cAAA,OAAKK,UZrBQ,gCYsBXL,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMC,GACPP,EAAAA,cAAA,OACEK,UAAWG,EACXC,IAAKF,EACLG,IAAI,iBAIVV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMK,GACPX,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKE,EAAMD,IAAI,WAGvDV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMM,GACPZ,EAAAA,cAAA,OACEK,UAAWG,EACXC,IAAKG,EACLF,IAAI,cAIVV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMO,GACPb,EAAAA,cAAA,OACEK,UAAWG,EACXC,IAAKI,EACLH,IAAI,sBAIVV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMQ,EAAAA,GACPd,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKK,EAAAA,EAAQJ,IAAI,aAGzDV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMS,GACPf,EAAAA,cAAA,OACEK,UAAWG,EACXC,IAAKM,EACLL,IAAI,gBAIVV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMU,GACPhB,EAAAA,cAAA,OACEK,UAAWG,EACXC,IAAKO,EACLN,IAAI,gBAIVV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMW,GACPjB,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKQ,EAAOP,IAAI,YAGxDV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMY,GACPlB,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKS,EAAQR,IAAI,aAGzDV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMa,GACPnB,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKU,EAAQT,IAAI,aAGzDV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMc,GACPpB,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKW,EAAMV,IAAI,WAGvDV,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGM,KAAMe,GACPrB,EAAAA,cAAA,OAAKK,UAAWG,EAAoBC,IAAKY,EAAQX,IAAI,e,uBCpGnE,IAAe,IAA0B,oD","sources":["webpack://blog/./src/pages/photos/style.module.css","webpack://blog/./static/photos/CommonBlue.jpg","webpack://blog/./static/photos/Alps.jpg","webpack://blog/./static/photos/Harvest.jpg","webpack://blog/./static/photos/GreatWillowHerb.jpg","webpack://blog/./static/photos/Rockpools.jpg","webpack://blog/./static/photos/Peninsula.jpg","webpack://blog/./static/photos/Beach.jpg","webpack://blog/./static/photos/Alpine.jpg","webpack://blog/./static/photos/Castle.jpg","webpack://blog/./static/photos/Door.jpg","webpack://blog/./static/photos/Forest.jpg","webpack://blog/./src/pages/photos/index.js","webpack://blog/./static/photos/Sunset.jpg"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var gallery = \"style-module--gallery--89fc4\";\nexport var galleryImage = \"style-module--galleryImage--bde9d\";\nexport var photosTitle = \"style-module--photosTitle--a013a\";","export default __webpack_public_path__ + \"static/CommonBlue-51e85cf80267b07c5b3cade7461f265c.jpg\";","export default __webpack_public_path__ + \"static/Alps-3d26e21483b41658d4c72472e6d93970.jpg\";","export default __webpack_public_path__ + \"static/Harvest-f6a01799e4c8d2e47b52a2aa2e8e6996.jpg\";","export default __webpack_public_path__ + \"static/GreatWillowHerb-9d34a5c391c58cffac48beddb363c416.jpg\";","export default __webpack_public_path__ + \"static/Rockpools-c5ed7c6c0f61e733c9dd34151c7d19f4.jpg\";","export default __webpack_public_path__ + \"static/Peninsula-14c4cc8a04291127f1d44de0a5df5094.jpg\";","export default __webpack_public_path__ + \"static/Beach-1925512f8cf9fdd39b366b0a86f3a5ac.jpg\";","export default __webpack_public_path__ + \"static/Alpine-dce3ad8a8dad14bf4f91ee59f9f1d4d5.jpg\";","export default __webpack_public_path__ + \"static/Castle-0497a7aeb7662acc24ad384dc4033010.jpg\";","export default __webpack_public_path__ + \"static/Door-64edd5be60e0de4829874ee6f6c8c305.jpg\";","export default __webpack_public_path__ + \"static/Forest-8d608c1a2316d1ab64978b78f9f570c8.jpg\";","import React from \"react\";\r\nimport Seo from \"../../components/seo/seo\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport * as style from \"./style.module.css\";\r\nimport CommonBlue from \"../../../static/photos/CommonBlue.jpg\";\r\nimport Alps from \"../../../static/photos/Alps.jpg\";\r\nimport Harvest from \"../../../static/photos/Harvest.jpg\";\r\nimport GreatWillowHerb from \"../../../static/photos/GreatWillowHerb.jpg\";\r\nimport Sunset from \"../../../static/photos/Sunset.jpg\";\r\nimport Rockpools from \"../../../static/photos/Rockpools.jpg\";\r\nimport Peninsula from \"../../../static/photos/Peninsula.jpg\";\r\nimport Beach from \"../../../static/photos/Beach.jpg\";\r\nimport Alpine from \"../../../static/photos/Alpine.jpg\";\r\nimport Castle from \"../../../static/photos/Castle.jpg\";\r\nimport Door from \"../../../static/photos/Door.jpg\";\r\nimport Forest from \"../../../static/photos/Forest.jpg\";\r\n\r\nconst Photos = () => {\r\n return (\r\n \r\n
\r\n

Photos

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Alps\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Sunset\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Beach\"\r\n \r\n
\r\n
\r\n \r\n \"Alpine\"\r\n \r\n
\r\n
\r\n \r\n \"Castle\"\r\n \r\n
\r\n
\r\n \r\n \"Door\"\r\n \r\n
\r\n
\r\n \r\n \"Forest\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const Head = () => ;\r\n\r\nexport default Photos;","export default __webpack_public_path__ + \"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg\";"],"names":["galleryImage","Head","React","Seo","page","Photos","Layout","className","href","CommonBlue","style","src","alt","Alps","Harvest","GreatWillowHerb","Sunset","Rockpools","Peninsula","Beach","Alpine","Castle","Door","Forest"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-photos-index-js-c99a783852b84cfe29c5.js b/component---src-pages-photos-index-js-c99a783852b84cfe29c5.js deleted file mode 100644 index f5f1bd3..0000000 --- a/component---src-pages-photos-index-js-c99a783852b84cfe29c5.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[286],{9165:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});var l=a(4578),c=a(7294),r=a(7025),n="style-module--galleryImage--bde9d",s=a.p+"static/CommonBlue-51e85cf80267b07c5b3cade7461f265c.jpg",m=a.p+"static/Alps-3d26e21483b41658d4c72472e6d93970.jpg",i=a.p+"static/Harvest-f6a01799e4c8d2e47b52a2aa2e8e6996.jpg",d=a.p+"static/GreatWillowHerb-9d34a5c391c58cffac48beddb363c416.jpg",f=a(9339),p=a.p+"static/Rockpools-c5ed7c6c0f61e733c9dd34151c7d19f4.jpg",E=a.p+"static/Peninsula-14c4cc8a04291127f1d44de0a5df5094.jpg",o=a.p+"static/Beach-1925512f8cf9fdd39b366b0a86f3a5ac.jpg",u=a.p+"static/Alpine-dce3ad8a8dad14bf4f91ee59f9f1d4d5.jpg",g=a.p+"static/Castle-0497a7aeb7662acc24ad384dc4033010.jpg",h=a.p+"static/Door-64edd5be60e0de4829874ee6f6c8c305.jpg",b=a.p+"static/Forest-8d608c1a2316d1ab64978b78f9f570c8.jpg";let v=function(e){function t(){return e.apply(this,arguments)||this}return(0,l.Z)(t,e),t.prototype.render=function(){return c.createElement(r.Z,{page:"Photos"},c.createElement("div",null,c.createElement("h2",{className:"style-module--photosTitle--a013a"},"Photos"),c.createElement("div",{className:"style-module--gallery--89fc4"},c.createElement("div",null,c.createElement("a",{href:s},c.createElement("img",{className:n,src:s,alt:"CommonBlue"}))),c.createElement("div",null,c.createElement("a",{href:m},c.createElement("img",{className:n,src:m,alt:"Alps"}))),c.createElement("div",null,c.createElement("a",{href:i},c.createElement("img",{className:n,src:i,alt:"Harvest"}))),c.createElement("div",null,c.createElement("a",{href:d},c.createElement("img",{className:n,src:d,alt:"GreatWillowHerb"}))),c.createElement("div",null,c.createElement("a",{href:f.Z},c.createElement("img",{className:n,src:f.Z,alt:"Sunset"}))),c.createElement("div",null,c.createElement("a",{href:p},c.createElement("img",{className:n,src:p,alt:"Rockpools"}))),c.createElement("div",null,c.createElement("a",{href:E},c.createElement("img",{className:n,src:E,alt:"Peninsula"}))),c.createElement("div",null,c.createElement("a",{href:o},c.createElement("img",{className:n,src:o,alt:"Beach"}))),c.createElement("div",null,c.createElement("a",{href:u},c.createElement("img",{className:n,src:u,alt:"Alpine"}))),c.createElement("div",null,c.createElement("a",{href:g},c.createElement("img",{className:n,src:g,alt:"Castle"}))),c.createElement("div",null,c.createElement("a",{href:h},c.createElement("img",{className:n,src:h,alt:"Door"}))),c.createElement("div",null,c.createElement("a",{href:b},c.createElement("img",{className:n,src:b,alt:"Forest"}))))))},t}(c.Component)},9339:function(e,t,a){t.Z=a.p+"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg"}}]); -//# sourceMappingURL=component---src-pages-photos-index-js-c99a783852b84cfe29c5.js.map \ No newline at end of file diff --git a/component---src-pages-photos-index-js-c99a783852b84cfe29c5.js.map b/component---src-pages-photos-index-js-c99a783852b84cfe29c5.js.map deleted file mode 100644 index af5fecf..0000000 --- a/component---src-pages-photos-index-js-c99a783852b84cfe29c5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-photos-index-js-c99a783852b84cfe29c5.js","mappings":"gLAEWA,EAAe,oCCF1B,EAAe,IAA0B,yDCAzC,EAAe,IAA0B,mDCAzC,EAAe,IAA0B,sDCAzC,EAAe,IAA0B,8D,UCAzC,EAAe,IAA0B,wDCAzC,EAAe,IAA0B,wDCAzC,EAAe,IAA0B,oDCAzC,EAAe,IAA0B,qDCAzC,EAAe,IAA0B,qDCAzC,EAAe,IAA0B,mDCAzC,EAAe,IAA0B,qDCcc,IAElCC,EAAM,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAC,MAAA,KAAAC,YAAA,KA2FxB,OA3FwBC,EAAAA,EAAAA,GAAAJ,EAAAC,GAAAD,EAAAK,UACzBC,OAAA,WACE,OACEC,EAAAA,cAACC,EAAAA,EAAM,CAACC,KAAK,UACXF,EAAAA,cAAA,WACEA,EAAAA,cAAA,MAAIG,UZlBW,oCYkBmB,UAClCH,EAAAA,cAAA,OAAKG,UZrBM,gCYsBTH,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMC,GACPL,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKF,EACLG,IAAI,iBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMK,GACPT,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKE,EAAMD,IAAI,WAGvDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMM,GACPV,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKG,EACLF,IAAI,cAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMO,GACPX,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKI,EACLH,IAAI,sBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMQ,EAAAA,GACPZ,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKK,EAAAA,EAAQJ,IAAI,aAGzDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMS,GACPb,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKM,EACLL,IAAI,gBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMU,GACPd,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKO,EACLN,IAAI,gBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMW,GACPf,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKQ,EAAOP,IAAI,YAGxDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMY,GACPhB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKS,EAAQR,IAAI,aAGzDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMa,GACPjB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKU,EAAQT,IAAI,aAGzDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMc,GACPlB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKW,EAAMV,IAAI,WAGvDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMe,GACPnB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKY,EAAQX,IAAI,eAOnE,EAACf,CAAA,CA3FwB,CAASO,EAAAA,U,uBChBpC,IAAe,IAA0B,oD","sources":["webpack://blog/./src/pages/photos/style.module.css","webpack://blog/./static/photos/CommonBlue.jpg","webpack://blog/./static/photos/Alps.jpg","webpack://blog/./static/photos/Harvest.jpg","webpack://blog/./static/photos/GreatWillowHerb.jpg","webpack://blog/./static/photos/Rockpools.jpg","webpack://blog/./static/photos/Peninsula.jpg","webpack://blog/./static/photos/Beach.jpg","webpack://blog/./static/photos/Alpine.jpg","webpack://blog/./static/photos/Castle.jpg","webpack://blog/./static/photos/Door.jpg","webpack://blog/./static/photos/Forest.jpg","webpack://blog/./src/pages/photos/index.js","webpack://blog/./static/photos/Sunset.jpg"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var gallery = \"style-module--gallery--89fc4\";\nexport var galleryImage = \"style-module--galleryImage--bde9d\";\nexport var photosTitle = \"style-module--photosTitle--a013a\";","export default __webpack_public_path__ + \"static/CommonBlue-51e85cf80267b07c5b3cade7461f265c.jpg\";","export default __webpack_public_path__ + \"static/Alps-3d26e21483b41658d4c72472e6d93970.jpg\";","export default __webpack_public_path__ + \"static/Harvest-f6a01799e4c8d2e47b52a2aa2e8e6996.jpg\";","export default __webpack_public_path__ + \"static/GreatWillowHerb-9d34a5c391c58cffac48beddb363c416.jpg\";","export default __webpack_public_path__ + \"static/Rockpools-c5ed7c6c0f61e733c9dd34151c7d19f4.jpg\";","export default __webpack_public_path__ + \"static/Peninsula-14c4cc8a04291127f1d44de0a5df5094.jpg\";","export default __webpack_public_path__ + \"static/Beach-1925512f8cf9fdd39b366b0a86f3a5ac.jpg\";","export default __webpack_public_path__ + \"static/Alpine-dce3ad8a8dad14bf4f91ee59f9f1d4d5.jpg\";","export default __webpack_public_path__ + \"static/Castle-0497a7aeb7662acc24ad384dc4033010.jpg\";","export default __webpack_public_path__ + \"static/Door-64edd5be60e0de4829874ee6f6c8c305.jpg\";","export default __webpack_public_path__ + \"static/Forest-8d608c1a2316d1ab64978b78f9f570c8.jpg\";","import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport * as style from \"./style.module.css\";\r\nimport CommonBlue from \"../../../static/photos/CommonBlue.jpg\";\r\nimport Alps from \"../../../static/photos/Alps.jpg\";\r\nimport Harvest from \"../../../static/photos/Harvest.jpg\";\r\nimport GreatWillowHerb from \"../../../static/photos/GreatWillowHerb.jpg\";\r\nimport Sunset from \"../../../static/photos/Sunset.jpg\";\r\nimport Rockpools from \"../../../static/photos/Rockpools.jpg\";\r\nimport Peninsula from \"../../../static/photos/Peninsula.jpg\";\r\nimport Beach from \"../../../static/photos/Beach.jpg\";\r\nimport Alpine from \"../../../static/photos/Alpine.jpg\";\r\nimport Castle from \"../../../static/photos/Castle.jpg\";\r\nimport Door from \"../../../static/photos/Door.jpg\";\r\nimport Forest from \"../../../static/photos/Forest.jpg\";\r\n\r\nexport default class Photos extends React.Component {\r\n render() {\r\n return (\r\n \r\n
\r\n

Photos

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Alps\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Sunset\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Beach\"\r\n \r\n
\r\n
\r\n \r\n \"Alpine\"\r\n \r\n
\r\n
\r\n \r\n \"Castle\"\r\n \r\n
\r\n
\r\n \r\n \"Door\"\r\n \r\n
\r\n
\r\n \r\n \"Forest\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg\";"],"names":["galleryImage","Photos","_React$Component","apply","arguments","_inheritsLoose","prototype","render","React","Layout","page","className","href","CommonBlue","style","src","alt","Alps","Harvest","GreatWillowHerb","Sunset","Rockpools","Peninsula","Beach","Alpine","Castle","Door","Forest"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-photos-index-js-e130782ec785ed63ae33.js b/component---src-pages-photos-index-js-e130782ec785ed63ae33.js deleted file mode 100644 index 96995cc..0000000 --- a/component---src-pages-photos-index-js-e130782ec785ed63ae33.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[286],{9165:function(e,a,t){t.r(a),t.d(a,{default:function(){return h}});var l=t(7294),c=t(8610),r="style-module--galleryImage--bde9d",s=t.p+"static/CommonBlue-51e85cf80267b07c5b3cade7461f265c.jpg",m=t.p+"static/Alps-3d26e21483b41658d4c72472e6d93970.jpg",n=t.p+"static/Harvest-f6a01799e4c8d2e47b52a2aa2e8e6996.jpg",d=t.p+"static/GreatWillowHerb-9d34a5c391c58cffac48beddb363c416.jpg",i=t(9339),E=t.p+"static/Rockpools-c5ed7c6c0f61e733c9dd34151c7d19f4.jpg",f=t.p+"static/Peninsula-14c4cc8a04291127f1d44de0a5df5094.jpg",p=t.p+"static/Beach-1925512f8cf9fdd39b366b0a86f3a5ac.jpg",o=t.p+"static/Alpine-dce3ad8a8dad14bf4f91ee59f9f1d4d5.jpg",u=t.p+"static/Castle-0497a7aeb7662acc24ad384dc4033010.jpg",g=t.p+"static/Door-64edd5be60e0de4829874ee6f6c8c305.jpg",b=t.p+"static/Forest-8d608c1a2316d1ab64978b78f9f570c8.jpg";var h=()=>l.createElement(c.Z,{page:"Photos"},l.createElement("div",null,l.createElement("h2",{className:"style-module--photosTitle--a013a"},"Photos"),l.createElement("div",{className:"style-module--gallery--89fc4"},l.createElement("div",null,l.createElement("a",{href:s},l.createElement("img",{className:r,src:s,alt:"CommonBlue"}))),l.createElement("div",null,l.createElement("a",{href:m},l.createElement("img",{className:r,src:m,alt:"Alps"}))),l.createElement("div",null,l.createElement("a",{href:n},l.createElement("img",{className:r,src:n,alt:"Harvest"}))),l.createElement("div",null,l.createElement("a",{href:d},l.createElement("img",{className:r,src:d,alt:"GreatWillowHerb"}))),l.createElement("div",null,l.createElement("a",{href:i.Z},l.createElement("img",{className:r,src:i.Z,alt:"Sunset"}))),l.createElement("div",null,l.createElement("a",{href:E},l.createElement("img",{className:r,src:E,alt:"Rockpools"}))),l.createElement("div",null,l.createElement("a",{href:f},l.createElement("img",{className:r,src:f,alt:"Peninsula"}))),l.createElement("div",null,l.createElement("a",{href:p},l.createElement("img",{className:r,src:p,alt:"Beach"}))),l.createElement("div",null,l.createElement("a",{href:o},l.createElement("img",{className:r,src:o,alt:"Alpine"}))),l.createElement("div",null,l.createElement("a",{href:u},l.createElement("img",{className:r,src:u,alt:"Castle"}))),l.createElement("div",null,l.createElement("a",{href:g},l.createElement("img",{className:r,src:g,alt:"Door"}))),l.createElement("div",null,l.createElement("a",{href:b},l.createElement("img",{className:r,src:b,alt:"Forest"}))))))},9339:function(e,a,t){a.Z=t.p+"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg"}}]); -//# sourceMappingURL=component---src-pages-photos-index-js-e130782ec785ed63ae33.js.map \ No newline at end of file diff --git a/component---src-pages-photos-index-js-e130782ec785ed63ae33.js.map b/component---src-pages-photos-index-js-e130782ec785ed63ae33.js.map deleted file mode 100644 index b984a61..0000000 --- a/component---src-pages-photos-index-js-e130782ec785ed63ae33.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-photos-index-js-e130782ec785ed63ae33.js","mappings":"sKAEWA,EAAe,oCCF1B,EAAe,IAA0B,yDCAzC,EAAe,IAA0B,mDCAzC,EAAe,IAA0B,sDCAzC,EAAe,IAA0B,8D,UCAzC,EAAe,IAA0B,wDCAzC,EAAe,IAA0B,wDCAzC,EAAe,IAA0B,oDCAzC,EAAe,IAA0B,qDCAzC,EAAe,IAA0B,qDCAzC,EAAe,IAA0B,mDCAzC,EAAe,IAA0B,qDC4GzC,MA5FeC,IAEXC,EAAAA,cAACC,EAAAA,EAAM,CAACC,KAAK,UACXF,EAAAA,cAAA,WACEA,EAAAA,cAAA,MAAIG,UZjBa,oCYiBiB,UAClCH,EAAAA,cAAA,OAAKG,UZpBQ,gCYqBXH,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMC,GACPL,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKF,EACLG,IAAI,iBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMK,GACPT,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKE,EAAMD,IAAI,WAGvDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMM,GACPV,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKG,EACLF,IAAI,cAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMO,GACPX,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKI,EACLH,IAAI,sBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMQ,EAAAA,GACPZ,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKK,EAAAA,EAAQJ,IAAI,aAGzDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMS,GACPb,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKM,EACLL,IAAI,gBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMU,GACPd,EAAAA,cAAA,OACEG,UAAWG,EACXC,IAAKO,EACLN,IAAI,gBAIVR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMW,GACPf,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKQ,EAAOP,IAAI,YAGxDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMY,GACPhB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKS,EAAQR,IAAI,aAGzDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMa,GACPjB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKU,EAAQT,IAAI,aAGzDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMc,GACPlB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKW,EAAMV,IAAI,WAGvDR,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGI,KAAMe,GACPnB,EAAAA,cAAA,OAAKG,UAAWG,EAAoBC,IAAKY,EAAQX,IAAI,e,uBCnGnE,IAAe,IAA0B,oD","sources":["webpack://blog/./src/pages/photos/style.module.css","webpack://blog/./static/photos/CommonBlue.jpg","webpack://blog/./static/photos/Alps.jpg","webpack://blog/./static/photos/Harvest.jpg","webpack://blog/./static/photos/GreatWillowHerb.jpg","webpack://blog/./static/photos/Rockpools.jpg","webpack://blog/./static/photos/Peninsula.jpg","webpack://blog/./static/photos/Beach.jpg","webpack://blog/./static/photos/Alpine.jpg","webpack://blog/./static/photos/Castle.jpg","webpack://blog/./static/photos/Door.jpg","webpack://blog/./static/photos/Forest.jpg","webpack://blog/./src/pages/photos/index.js","webpack://blog/./static/photos/Sunset.jpg"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var gallery = \"style-module--gallery--89fc4\";\nexport var galleryImage = \"style-module--galleryImage--bde9d\";\nexport var photosTitle = \"style-module--photosTitle--a013a\";","export default __webpack_public_path__ + \"static/CommonBlue-51e85cf80267b07c5b3cade7461f265c.jpg\";","export default __webpack_public_path__ + \"static/Alps-3d26e21483b41658d4c72472e6d93970.jpg\";","export default __webpack_public_path__ + \"static/Harvest-f6a01799e4c8d2e47b52a2aa2e8e6996.jpg\";","export default __webpack_public_path__ + \"static/GreatWillowHerb-9d34a5c391c58cffac48beddb363c416.jpg\";","export default __webpack_public_path__ + \"static/Rockpools-c5ed7c6c0f61e733c9dd34151c7d19f4.jpg\";","export default __webpack_public_path__ + \"static/Peninsula-14c4cc8a04291127f1d44de0a5df5094.jpg\";","export default __webpack_public_path__ + \"static/Beach-1925512f8cf9fdd39b366b0a86f3a5ac.jpg\";","export default __webpack_public_path__ + \"static/Alpine-dce3ad8a8dad14bf4f91ee59f9f1d4d5.jpg\";","export default __webpack_public_path__ + \"static/Castle-0497a7aeb7662acc24ad384dc4033010.jpg\";","export default __webpack_public_path__ + \"static/Door-64edd5be60e0de4829874ee6f6c8c305.jpg\";","export default __webpack_public_path__ + \"static/Forest-8d608c1a2316d1ab64978b78f9f570c8.jpg\";","import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport * as style from \"./style.module.css\";\r\nimport CommonBlue from \"../../../static/photos/CommonBlue.jpg\";\r\nimport Alps from \"../../../static/photos/Alps.jpg\";\r\nimport Harvest from \"../../../static/photos/Harvest.jpg\";\r\nimport GreatWillowHerb from \"../../../static/photos/GreatWillowHerb.jpg\";\r\nimport Sunset from \"../../../static/photos/Sunset.jpg\";\r\nimport Rockpools from \"../../../static/photos/Rockpools.jpg\";\r\nimport Peninsula from \"../../../static/photos/Peninsula.jpg\";\r\nimport Beach from \"../../../static/photos/Beach.jpg\";\r\nimport Alpine from \"../../../static/photos/Alpine.jpg\";\r\nimport Castle from \"../../../static/photos/Castle.jpg\";\r\nimport Door from \"../../../static/photos/Door.jpg\";\r\nimport Forest from \"../../../static/photos/Forest.jpg\";\r\n\r\nconst Photos = () => {\r\n return (\r\n \r\n
\r\n

Photos

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Alps\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Sunset\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \"Beach\"\r\n \r\n
\r\n
\r\n \r\n \"Alpine\"\r\n \r\n
\r\n
\r\n \r\n \"Castle\"\r\n \r\n
\r\n
\r\n \r\n \"Door\"\r\n \r\n
\r\n
\r\n \r\n \"Forest\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Photos;","export default __webpack_public_path__ + \"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg\";"],"names":["galleryImage","Photos","React","Layout","page","className","href","CommonBlue","style","src","alt","Alps","Harvest","GreatWillowHerb","Sunset","Rockpools","Peninsula","Beach","Alpine","Castle","Door","Forest"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js b/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js new file mode 100644 index 0000000..6181d8c --- /dev/null +++ b/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js @@ -0,0 +1,2 @@ +(self.webpackChunkblog=self.webpackChunkblog||[]).push([[813],{4608:function(e,t,l){"use strict";l.r(t),l.d(t,{Head:function(){return h},default:function(){return p}});var a=l(7294),s=l(3306),r=l(4527),n=l(5042),i=l.n(n),o=l(1883);var c=()=>a.createElement("section",null,a.createElement(i(),{className:"style-module--logoBrackets--7dd27"}),a.createElement("p",{className:"style-module--introText--dda49"},"This is a blog about software development, science, and other musings by ",a.createElement(o.Link,{className:"blueLink",to:"/about"},"George Pearson"),".")),m="style-module--paginatorLink--ba2d4",k=l(982),f=l(9417);var d=e=>{let{currentPage:t,numPages:l}=e;const s=1===t,r=t===l,n=t-1==1?"/":(t-1).toString(),i=(t+1).toString();return a.createElement("nav",{className:"style-module--paginator--19918"},a.createElement("ul",{className:"style-module--paginatorList--1c745"},!s&&a.createElement("li",null,a.createElement(o.Link,{"aria-label":"previous page",className:m,to:n},a.createElement(k.G,{icon:f.A35}))),Array.from({length:l},((e,l)=>a.createElement("li",{key:`pagination-number${l+1}`},a.createElement(o.Link,{className:l===t-1?"style-module--paginatorLinkActive--f9021":m,to:`/${0===l?"":l+1}`},l+1)))),!r&&a.createElement("li",null,a.createElement(o.Link,{"aria-label":"next page",className:m,to:`/${i}`},a.createElement(k.G,{icon:f._tD})))))};var y=e=>{let{post:t}=e;const l=t.frontmatter.image;return a.createElement("div",{className:"style-module--postListItem--1ed24"},a.createElement(o.Link,{className:"style-module--postLink--c9a09",to:t.fields.slug},a.createElement("h2",{className:"style-module--postTitle--f03a0"},t.frontmatter.title),a.createElement("p",{className:"style-module--postMeta--25012"},"Posted on ",t.frontmatter.date),a.createElement("p",{className:"style-module--postSubtitle--539a4"},t.frontmatter.subtitle),l&&a.createElement("img",{className:"style-module--postImage--efa23",src:l,alt:t.frontmatter.title})))};const h=()=>a.createElement(s.Z,{page:"Home"});var p=e=>{let{data:t,pageContext:l}=e;const s=t.allMdx.edges.map((e=>e.node)),{currentPage:n,numPages:i}=l;return a.createElement(r.Z,null,a.createElement(c,null),s.map((e=>a.createElement(y,{key:e.id,post:e}))),a.createElement(d,{currentPage:n,numPages:i}))}},5042:function(e,t,l){var a=l(7294);function s(e){return a.createElement("svg",e,[a.createElement("path",{id:"bracket1",className:"line",style:{fill:"#00c1c1",fillOpacity:"1",stroke:"#09616c",strokeWidth:"7.67999983"},d:"m 68.378313,250 c 10.56,-8 17.6,-15.36 21.12,-22.72 4.8,-8.96 7.36,-20.16 7.36,-32.96 V 81.681001 c 0,-11.52 3.519997,-21.12 10.239997,-29.12 7.04,-7.680001 15.36,-11.840001 25.6,-12.800002 6.72,-0.64 10.88,-1.6 12.8,-3.52 2.88,-2.88 4.16,-6.08 4.16,-9.92 0,-3.52 -1.28,-6.72 -3.84,-9.28 -2.56,-2.56 -6.72,-3.84 -11.84,-3.84 -16.64,0 -30.4,5.44 -41.279997,16 -14.72,14.400001 -22.08,31.680002 -22.08,52.480002 V 194.321 c 0,11.52 -3.52,21.12 -10.240003,29.12 -7.04,7.68 -16,11.84 -26.56,12.8 -5.76,0.64 -9.6,1.92 -11.84,4.16 -2.56,2.56 -3.84,5.439 -3.84,9.599 0,4.16 1.28,7.36 3.84,9.6 2.24,2.24 6.08,3.84 11.84,4.48 10.56,0.64 19.52,5.12 26.56,13.12 6.720003,7.68 10.240003,17.28 10.240003,28.48 v 112.639 c 0,19.52 6.08,35.84 18.56,48.64 12.799997,13.12 27.519997,19.84 44.799997,19.84 5.12,0 9.28,-1.28 11.84,-3.84 2.56,-2.56 3.84,-5.76 3.84,-9.6 0,-3.84 -1.28,-7.04 -3.84,-9.28 -1.92,-1.92 -6.4,-3.2 -13.12,-3.84 -10.24,-0.96 -18.88,-5.44 -25.6,-13.44 -6.72,-7.68 -10.239997,-17.28 -10.239997,-28.8 v -112.32 c 0,-13.12 -2.24,-23.68 -6.4,-31.68 -4.16,-8.32 -11.52,-16.32 -22.08,-23.999 z",key:0}),a.createElement("path",{id:"bracket2",className:"line",style:{fill:"#00c1c1",fillOpacity:"1",stroke:"#09616c",strokeWidth:"7.67999983"},d:"m 731.6217,249.84 c -10.56,-8 -17.6,-15.36 -21.12,-22.4 -4.8,-9.28 -7.36,-20.16 -7.36,-33.28 V 81.841001 c 0,-11.84 -3.2,-21.44 -10.24,-29.12 -6.72,-7.680001 -15.36,-12.16 -25.6,-12.8 -6.72,-0.64 -10.88,-1.92 -12.8,-3.84 -2.88,-2.56 -4.16,-5.76 -4.16,-9.6 0,-3.84 1.28,-7.04 3.84,-9.28 2.56,-2.56 6.72,-3.84 11.84,-3.84 16.64,0 30.4,5.12 41.28,16 14.72,14.08 22.08,31.68 22.08,52.48 V 194.161 c 0,11.52 3.52,21.12 10.56,29.12 7.04,7.68 15.68,11.84 26.56,12.8 5.44,0.64 9.28,2.24 11.84,4.48 2.24,2.24 3.52,5.44 3.52,9.279 0,4.16 -1.28,7.36 -3.52,9.6 -2.56,2.56 -6.4,3.84 -11.84,4.48 -10.88,0.96 -19.84,5.12 -26.56,13.12 -7.04,7.68 -10.56,17.28 -10.56,28.8 v 112.319 c 0,19.84 -6.08,35.84 -18.56,48.96 -12.48,13.12 -27.52,19.52 -44.8,19.52 -5.12,0 -9.28,-1.28 -11.84,-3.52 -2.56,-2.56 -3.84,-5.76 -3.84,-9.92 0,-3.52 1.28,-6.72 3.84,-9.28 1.92,-1.92 6.4,-3.2 13.12,-3.84 10.56,-0.96 18.88,-5.44 25.6,-13.44 7.04,-7.68 10.24,-17.28 10.24,-28.8 v -112 c 0,-13.12 2.24,-23.68 6.4,-32 4.16,-8 11.52,-15.999 22.08,-23.999 z",key:1}),a.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 249.72202,305.50867 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.6935,34.16911 1.47761,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37581 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z",key:2}),a.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 456.12002,430.30767 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98431 40.22076,-18.98365 5.07695,16.63333 21.0005,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.22774,-7.20227 -18.74084,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.9734,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z",key:3}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 523.88065,315.37383 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:4}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 376.47231,365.98867 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z",key:5}),a.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 554.04002,297.82867 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:6}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 400.76102,365.02867 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:7}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 525.56002,309.66867 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:8}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 403.64002,281.18867 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:9}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 382.20102,265.82867 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z",key:10}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 532.92002,233.82967 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:11}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 509.24002,219.10967 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z",key:12}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 268.59052,299.50781 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30665,13.62315 25.57877,25.66181 43.12447,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 -51.88853,-16.00534 -102.58791,-41.71575 -138.50215,-84.10982 -9.44505,-11.26967 -16.55959,-24.81855 -23.7516,-37.66125 z",key:13}),a.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 267.32202,297.82867 C 253.5857,246.67243 240.21363,191.94061 256.05986,139.59844 c 0.98871,-6.00064 11.53375,-30.35816 3.80091,-14.00791 -18.40755,32.68258 -26.39958,70.6153 -22.83875,107.96372 1.6528,24.26835 6.49434,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z",key:14}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 316.89547,109.19404 c 0.16868,5.9474 0.39752,13.66468 2.0767,15.77313 2.98389,-1.75987 38.22732,-34.35757 60.96102,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.95879 z",key:15}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 426.36002,111.26968 c 39.09517,-6.12609 72.80667,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.9588 -6.50128,9.86066 -6.72,15.68 z",key:16}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 297.08102,223.26967 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59041,-17.25402 -13.61969,-4.97772 -43.38529,35.78346 -99.4078,53.74047 -155.01931,57.77772 z",key:17}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 394.36002,242.46967 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 -78.75534,-5.71575 -73.02241,-101.88127 -12.95405,-123.33482 z",key:18}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 407.31407,365.80449 C 309.19791,384.67026 302.36433,240.82973 394.36002,242.46967",key:19}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 520.76002,203.74867 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z",key:20}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 505.40002,319.26867 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8",key:21}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 506.68002,319.90867 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16",key:22}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 506.04002,319.58867 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227",key:23}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 250.04002,306.46867 c -33.37089,-89.58384 -21.87248,-203.02025 78.4,-230.71799",key:24}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"m 328.31995,75.93151 c -7.72457,10.711 -10.58552,16.93638 -11.39893,31.17917 -0.92731,6.64494 -0.41032,14.67489 3.25217,19.60903",key:25}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 316.92102,107.11068 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441",key:26}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 464.43902,69.66968 c -11.97359,5.2494 -21.96258,14.21019 -30.08,24.32",key:27}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 434.36002,93.99068 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425",key:28}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 434.35902,93.98968 c 38.57084,1.08234 72.86725,22.97326 100.16,48.64",key:29}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 534.51902,142.62968 c -25.28601,-0.93692 -51.80898,3.74198 -74.6713,14.88614",key:30}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 297.08102,223.26967 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.23999",key:31}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 250.04002,306.46867 c 43.44477,-16.54532 48.84709,-47.98612 46.55386,-85.05616",key:32}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 478.20002,211.74867 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899",key:33}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 444.28102,396.06867 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:34}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 250.04002,306.46867 c -80.11607,39.6821 32.64458,116.1168 67.07408,71.90242",key:35}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 317.5741,377.85609 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:36}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 286.38602,340.03267 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:37})])}s.defaultProps={height:"500",width:"800",viewBox:"0 0 800 500"},e.exports=s,s.default=s}}]); +//# sourceMappingURL=component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js.map \ No newline at end of file diff --git a/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js.map b/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js.map new file mode 100644 index 0000000..4bc8807 --- /dev/null +++ b/component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js","mappings":"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","sources":["webpack://blog/./src/components/intro/intro.js","webpack://blog/./src/components/intro/style.module.css","webpack://blog/./src/components/paginator/style.module.css","webpack://blog/./src/components/paginator/paginator.js","webpack://blog/./src/components/postListItem/postListItem.js","webpack://blog/./src/components/postListItem/style.module.css","webpack://blog/./src/templates/postListTemplate/postListTemplate.js","webpack://blog/./static/logoBrackets.inline.svg"],"sourcesContent":["import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport LogoBrackets from \"../../../static/logoBrackets.inline.svg\";\r\nimport { Link } from \"gatsby\";\r\n\r\nconst Intro = () => {\r\n return (\r\n
\r\n \r\n

\r\n This is a blog about software development, science, and other musings\r\n by George Pearson.\r\n

\r\n
\r\n );\r\n};\r\n\r\nexport default Intro;","// extracted by mini-css-extract-plugin\nexport var introText = \"style-module--introText--dda49\";\nexport var logoBrackets = \"style-module--logoBrackets--7dd27\";","// extracted by mini-css-extract-plugin\nexport var paginator = \"style-module--paginator--19918\";\nexport var paginatorLink = \"style-module--paginatorLink--ba2d4\";\nexport var paginatorLinkActive = \"style-module--paginatorLinkActive--f9021\";\nexport var paginatorList = \"style-module--paginatorList--1c745\";","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport * as style from \"./style.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faChevronLeft,\r\n faChevronRight,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst Paginator = ({ currentPage, numPages }) => {\r\n const isFirst = currentPage === 1;\r\n const isLast = currentPage === numPages;\r\n const prevPage = currentPage - 1 === 1 ? \"/\" : (currentPage - 1).toString();\r\n const nextPage = (currentPage + 1).toString();\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Paginator;","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst PostListItem = ({ post }) => {\r\n const postImage = post.frontmatter.image;\r\n return (\r\n
\r\n \r\n

{post.frontmatter.title}

\r\n

Posted on {post.frontmatter.date}

\r\n

{post.frontmatter.subtitle}

\r\n {postImage && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PostListItem;","// extracted by mini-css-extract-plugin\nexport var postImage = \"style-module--postImage--efa23\";\nexport var postLink = \"style-module--postLink--c9a09\";\nexport var postListItem = \"style-module--postListItem--1ed24\";\nexport var postMeta = \"style-module--postMeta--25012\";\nexport var postSubtitle = \"style-module--postSubtitle--539a4\";\nexport var postTitle = \"style-module--postTitle--f03a0\";","import React from \"react\";\r\nimport Seo from \"../../components/seo/seo\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport Intro from \"../../components/intro/intro\";\r\nimport Paginator from \"../../components/paginator/paginator\";\r\nimport PostListItem from \"../../components/postListItem/postListItem\";\r\nimport { graphql } from \"gatsby\";\r\n\r\nconst PostListTemplate = ({ data, pageContext}) => {\r\n const posts = data.allMdx.edges.map(edge => edge.node);\r\n const { currentPage, numPages } = pageContext;\r\n return (\r\n \r\n \r\n {posts.map(post => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const Head = () => ;\r\n\r\nexport const pageQuery = graphql`\r\n query postListQuery($skip: Int!, $limit: Int!) {\r\n allMdx(sort: {frontmatter: {date: DESC}}, limit: $limit, skip: $skip) {\r\n edges {\r\n node {\r\n id\r\n fields {\r\n slug\r\n }\r\n frontmatter {\r\n title\r\n subtitle\r\n date(formatString: \"MMMM DD, YYYY\")\r\n image\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport default PostListTemplate;","var React = require('react');\n\nfunction LogoBracketsInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"id\":\"bracket1\",\"className\":\"line\",\"style\":{\"fill\":\"#00c1c1\",\"fillOpacity\":\"1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"7.67999983\"},\"d\":\"m 68.378313,250 c 10.56,-8 17.6,-15.36 21.12,-22.72 4.8,-8.96 7.36,-20.16 7.36,-32.96 V 81.681001 c 0,-11.52 3.519997,-21.12 10.239997,-29.12 7.04,-7.680001 15.36,-11.840001 25.6,-12.800002 6.72,-0.64 10.88,-1.6 12.8,-3.52 2.88,-2.88 4.16,-6.08 4.16,-9.92 0,-3.52 -1.28,-6.72 -3.84,-9.28 -2.56,-2.56 -6.72,-3.84 -11.84,-3.84 -16.64,0 -30.4,5.44 -41.279997,16 -14.72,14.400001 -22.08,31.680002 -22.08,52.480002 V 194.321 c 0,11.52 -3.52,21.12 -10.240003,29.12 -7.04,7.68 -16,11.84 -26.56,12.8 -5.76,0.64 -9.6,1.92 -11.84,4.16 -2.56,2.56 -3.84,5.439 -3.84,9.599 0,4.16 1.28,7.36 3.84,9.6 2.24,2.24 6.08,3.84 11.84,4.48 10.56,0.64 19.52,5.12 26.56,13.12 6.720003,7.68 10.240003,17.28 10.240003,28.48 v 112.639 c 0,19.52 6.08,35.84 18.56,48.64 12.799997,13.12 27.519997,19.84 44.799997,19.84 5.12,0 9.28,-1.28 11.84,-3.84 2.56,-2.56 3.84,-5.76 3.84,-9.6 0,-3.84 -1.28,-7.04 -3.84,-9.28 -1.92,-1.92 -6.4,-3.2 -13.12,-3.84 -10.24,-0.96 -18.88,-5.44 -25.6,-13.44 -6.72,-7.68 -10.239997,-17.28 -10.239997,-28.8 v -112.32 c 0,-13.12 -2.24,-23.68 -6.4,-31.68 -4.16,-8.32 -11.52,-16.32 -22.08,-23.999 z\",\"key\":0}),React.createElement(\"path\",{\"id\":\"bracket2\",\"className\":\"line\",\"style\":{\"fill\":\"#00c1c1\",\"fillOpacity\":\"1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"7.67999983\"},\"d\":\"m 731.6217,249.84 c -10.56,-8 -17.6,-15.36 -21.12,-22.4 -4.8,-9.28 -7.36,-20.16 -7.36,-33.28 V 81.841001 c 0,-11.84 -3.2,-21.44 -10.24,-29.12 -6.72,-7.680001 -15.36,-12.16 -25.6,-12.8 -6.72,-0.64 -10.88,-1.92 -12.8,-3.84 -2.88,-2.56 -4.16,-5.76 -4.16,-9.6 0,-3.84 1.28,-7.04 3.84,-9.28 2.56,-2.56 6.72,-3.84 11.84,-3.84 16.64,0 30.4,5.12 41.28,16 14.72,14.08 22.08,31.68 22.08,52.48 V 194.161 c 0,11.52 3.52,21.12 10.56,29.12 7.04,7.68 15.68,11.84 26.56,12.8 5.44,0.64 9.28,2.24 11.84,4.48 2.24,2.24 3.52,5.44 3.52,9.279 0,4.16 -1.28,7.36 -3.52,9.6 -2.56,2.56 -6.4,3.84 -11.84,4.48 -10.88,0.96 -19.84,5.12 -26.56,13.12 -7.04,7.68 -10.56,17.28 -10.56,28.8 v 112.319 c 0,19.84 -6.08,35.84 -18.56,48.96 -12.48,13.12 -27.52,19.52 -44.8,19.52 -5.12,0 -9.28,-1.28 -11.84,-3.52 -2.56,-2.56 -3.84,-5.76 -3.84,-9.92 0,-3.52 1.28,-6.72 3.84,-9.28 1.92,-1.92 6.4,-3.2 13.12,-3.84 10.56,-0.96 18.88,-5.44 25.6,-13.44 7.04,-7.68 10.24,-17.28 10.24,-28.8 v -112 c 0,-13.12 2.24,-23.68 6.4,-32 4.16,-8 11.52,-15.999 22.08,-23.999 z\",\"key\":1}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 249.72202,305.50867 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.6935,34.16911 1.47761,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37581 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 456.12002,430.30767 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98431 40.22076,-18.98365 5.07695,16.63333 21.0005,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.22774,-7.20227 -18.74084,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.9734,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 523.88065,315.37383 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 376.47231,365.98867 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 554.04002,297.82867 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 400.76102,365.02867 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 525.56002,309.66867 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 403.64002,281.18867 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 382.20102,265.82867 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 532.92002,233.82967 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 509.24002,219.10967 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 268.59052,299.50781 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30665,13.62315 25.57877,25.66181 43.12447,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 -51.88853,-16.00534 -102.58791,-41.71575 -138.50215,-84.10982 -9.44505,-11.26967 -16.55959,-24.81855 -23.7516,-37.66125 z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 267.32202,297.82867 C 253.5857,246.67243 240.21363,191.94061 256.05986,139.59844 c 0.98871,-6.00064 11.53375,-30.35816 3.80091,-14.00791 -18.40755,32.68258 -26.39958,70.6153 -22.83875,107.96372 1.6528,24.26835 6.49434,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 316.89547,109.19404 c 0.16868,5.9474 0.39752,13.66468 2.0767,15.77313 2.98389,-1.75987 38.22732,-34.35757 60.96102,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.95879 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 426.36002,111.26968 c 39.09517,-6.12609 72.80667,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.9588 -6.50128,9.86066 -6.72,15.68 z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 297.08102,223.26967 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59041,-17.25402 -13.61969,-4.97772 -43.38529,35.78346 -99.4078,53.74047 -155.01931,57.77772 z\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 394.36002,242.46967 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 -78.75534,-5.71575 -73.02241,-101.88127 -12.95405,-123.33482 z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 407.31407,365.80449 C 309.19791,384.67026 302.36433,240.82973 394.36002,242.46967\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 520.76002,203.74867 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 505.40002,319.26867 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 506.68002,319.90867 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 506.04002,319.58867 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 250.04002,306.46867 c -33.37089,-89.58384 -21.87248,-203.02025 78.4,-230.71799\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"m 328.31995,75.93151 c -7.72457,10.711 -10.58552,16.93638 -11.39893,31.17917 -0.92731,6.64494 -0.41032,14.67489 3.25217,19.60903\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 316.92102,107.11068 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 464.43902,69.66968 c -11.97359,5.2494 -21.96258,14.21019 -30.08,24.32\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 434.36002,93.99068 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 434.35902,93.98968 c 38.57084,1.08234 72.86725,22.97326 100.16,48.64\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 534.51902,142.62968 c -25.28601,-0.93692 -51.80898,3.74198 -74.6713,14.88614\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 297.08102,223.26967 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.23999\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 250.04002,306.46867 c 43.44477,-16.54532 48.84709,-47.98612 46.55386,-85.05616\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 478.20002,211.74867 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 444.28102,396.06867 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 250.04002,306.46867 c -80.11607,39.6821 32.64458,116.1168 67.07408,71.90242\",\"key\":35}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 317.5741,377.85609 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":36}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 286.38602,340.03267 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":37})]);\n}\n\nLogoBracketsInline.defaultProps = {\"height\":\"500\",\"width\":\"800\",\"viewBox\":\"0 0 800 500\"};\n\nmodule.exports = LogoBracketsInline;\n\nLogoBracketsInline.default = LogoBracketsInline;\n"],"names":["Intro","React","LogoBrackets","className","Link","to","paginatorLink","_ref","currentPage","numPages","isFirst","isLast","prevPage","toString","nextPage","style","FontAwesomeIcon","icon","faChevronLeft","Array","from","length","_","i","key","faChevronRight","post","postImage","frontmatter","image","fields","slug","title","date","subtitle","src","alt","Head","Seo","page","data","pageContext","posts","allMdx","edges","map","edge","node","Layout","PostListItem","id","Paginator","LogoBracketsInline","props","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js b/component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js deleted file mode 100644 index b914563..0000000 --- a/component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkblog=self.webpackChunkblog||[]).push([[813],{4608:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return h}});var a=l(4578),s=l(7294),r=l(7025),n=l(5042),i=l.n(n),o=l(1883);var c=()=>s.createElement("section",null,s.createElement(i(),{className:"style-module--logoBrackets--7dd27"}),s.createElement("p",{className:"style-module--introText--dda49"},"This is a blog about software development, science, and other musings by ",s.createElement(o.Link,{className:"blueLink",to:"/about"},"George Pearson"),".")),m="style-module--paginatorLink--ba2d4",k=l(982),f=l(9417);var d=e=>{let{currentPage:t,numPages:l}=e;const a=1===t,r=t===l,n=t-1==1?"/":(t-1).toString(),i=(t+1).toString();return s.createElement("nav",{className:"style-module--paginator--19918"},s.createElement("ul",{className:"style-module--paginatorList--1c745"},!a&&s.createElement("li",null,s.createElement(o.Link,{"aria-label":"previous page",className:m,to:n},s.createElement(k.G,{icon:f.A35}))),Array.from({length:l},((e,l)=>s.createElement("li",{key:`pagination-number${l+1}`},s.createElement(o.Link,{className:l===t-1?"style-module--paginatorLinkActive--f9021":m,to:`/${0===l?"":l+1}`},l+1)))),!r&&s.createElement("li",null,s.createElement(o.Link,{"aria-label":"next page",className:m,to:`/${i}`},s.createElement(k.G,{icon:f._tD})))))};var y=e=>{let{post:t}=e;const l=t.frontmatter.image;return s.createElement("div",{className:"style-module--postListItem--1ed24"},s.createElement(o.Link,{className:"style-module--postLink--c9a09",to:t.fields.slug},s.createElement("h2",{className:"style-module--postTitle--f03a0"},t.frontmatter.title),s.createElement("p",{className:"style-module--postMeta--25012"},"Posted on ",t.frontmatter.date),s.createElement("p",{className:"style-module--postSubtitle--539a4"},t.frontmatter.subtitle),l&&s.createElement("img",{className:"style-module--postImage--efa23",src:l,alt:t.frontmatter.title})))};let h=function(e){function t(){return e.apply(this,arguments)||this}return(0,a.Z)(t,e),t.prototype.render=function(){const{data:e}=this.props,t=e.allMdx.edges.map((e=>e.node)),{currentPage:l,numPages:a}=this.props.pageContext;return s.createElement(r.Z,{page:"Home"},s.createElement(c,null),t.map((e=>s.createElement(y,{key:e.id,post:e}))),s.createElement(d,{currentPage:l,numPages:a}))},t}(s.Component)},5042:function(e,t,l){var a=l(7294);function s(e){return a.createElement("svg",e,[a.createElement("path",{id:"bracket1",className:"line",style:{fill:"#00c1c1",fillOpacity:"1",stroke:"#09616c",strokeWidth:"7.67999983"},d:"m 68.378313,250 c 10.56,-8 17.6,-15.36 21.12,-22.72 4.8,-8.96 7.36,-20.16 7.36,-32.96 V 81.681001 c 0,-11.52 3.519997,-21.12 10.239997,-29.12 7.04,-7.680001 15.36,-11.840001 25.6,-12.800002 6.72,-0.64 10.88,-1.6 12.8,-3.52 2.88,-2.88 4.16,-6.08 4.16,-9.92 0,-3.52 -1.28,-6.72 -3.84,-9.28 -2.56,-2.56 -6.72,-3.84 -11.84,-3.84 -16.64,0 -30.4,5.44 -41.279997,16 -14.72,14.400001 -22.08,31.680002 -22.08,52.480002 V 194.321 c 0,11.52 -3.52,21.12 -10.240003,29.12 -7.04,7.68 -16,11.84 -26.56,12.8 -5.76,0.64 -9.6,1.92 -11.84,4.16 -2.56,2.56 -3.84,5.439 -3.84,9.599 0,4.16 1.28,7.36 3.84,9.6 2.24,2.24 6.08,3.84 11.84,4.48 10.56,0.64 19.52,5.12 26.56,13.12 6.720003,7.68 10.240003,17.28 10.240003,28.48 v 112.639 c 0,19.52 6.08,35.84 18.56,48.64 12.799997,13.12 27.519997,19.84 44.799997,19.84 5.12,0 9.28,-1.28 11.84,-3.84 2.56,-2.56 3.84,-5.76 3.84,-9.6 0,-3.84 -1.28,-7.04 -3.84,-9.28 -1.92,-1.92 -6.4,-3.2 -13.12,-3.84 -10.24,-0.96 -18.88,-5.44 -25.6,-13.44 -6.72,-7.68 -10.239997,-17.28 -10.239997,-28.8 v -112.32 c 0,-13.12 -2.24,-23.68 -6.4,-31.68 -4.16,-8.32 -11.52,-16.32 -22.08,-23.999 z",key:0}),a.createElement("path",{id:"bracket2",className:"line",style:{fill:"#00c1c1",fillOpacity:"1",stroke:"#09616c",strokeWidth:"7.67999983"},d:"m 731.6217,249.84 c -10.56,-8 -17.6,-15.36 -21.12,-22.4 -4.8,-9.28 -7.36,-20.16 -7.36,-33.28 V 81.841001 c 0,-11.84 -3.2,-21.44 -10.24,-29.12 -6.72,-7.680001 -15.36,-12.16 -25.6,-12.8 -6.72,-0.64 -10.88,-1.92 -12.8,-3.84 -2.88,-2.56 -4.16,-5.76 -4.16,-9.6 0,-3.84 1.28,-7.04 3.84,-9.28 2.56,-2.56 6.72,-3.84 11.84,-3.84 16.64,0 30.4,5.12 41.28,16 14.72,14.08 22.08,31.68 22.08,52.48 V 194.161 c 0,11.52 3.52,21.12 10.56,29.12 7.04,7.68 15.68,11.84 26.56,12.8 5.44,0.64 9.28,2.24 11.84,4.48 2.24,2.24 3.52,5.44 3.52,9.279 0,4.16 -1.28,7.36 -3.52,9.6 -2.56,2.56 -6.4,3.84 -11.84,4.48 -10.88,0.96 -19.84,5.12 -26.56,13.12 -7.04,7.68 -10.56,17.28 -10.56,28.8 v 112.319 c 0,19.84 -6.08,35.84 -18.56,48.96 -12.48,13.12 -27.52,19.52 -44.8,19.52 -5.12,0 -9.28,-1.28 -11.84,-3.52 -2.56,-2.56 -3.84,-5.76 -3.84,-9.92 0,-3.52 1.28,-6.72 3.84,-9.28 1.92,-1.92 6.4,-3.2 13.12,-3.84 10.56,-0.96 18.88,-5.44 25.6,-13.44 7.04,-7.68 10.24,-17.28 10.24,-28.8 v -112 c 0,-13.12 2.24,-23.68 6.4,-32 4.16,-8 11.52,-15.999 22.08,-23.999 z",key:1}),a.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 249.72202,305.50867 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.6935,34.16911 1.47761,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37581 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z",key:2}),a.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 456.12002,430.30767 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98431 40.22076,-18.98365 5.07695,16.63333 21.0005,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.22774,-7.20227 -18.74084,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.9734,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z",key:3}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 523.88065,315.37383 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:4}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 376.47231,365.98867 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z",key:5}),a.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 554.04002,297.82867 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:6}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 400.76102,365.02867 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:7}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 525.56002,309.66867 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:8}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 403.64002,281.18867 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:9}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 382.20102,265.82867 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z",key:10}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 532.92002,233.82967 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:11}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 509.24002,219.10967 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z",key:12}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 268.59052,299.50781 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30665,13.62315 25.57877,25.66181 43.12447,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 -51.88853,-16.00534 -102.58791,-41.71575 -138.50215,-84.10982 -9.44505,-11.26967 -16.55959,-24.81855 -23.7516,-37.66125 z",key:13}),a.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 267.32202,297.82867 C 253.5857,246.67243 240.21363,191.94061 256.05986,139.59844 c 0.98871,-6.00064 11.53375,-30.35816 3.80091,-14.00791 -18.40755,32.68258 -26.39958,70.6153 -22.83875,107.96372 1.6528,24.26835 6.49434,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z",key:14}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 316.89547,109.19404 c 0.16868,5.9474 0.39752,13.66468 2.0767,15.77313 2.98389,-1.75987 38.22732,-34.35757 60.96102,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.95879 z",key:15}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 426.36002,111.26968 c 39.09517,-6.12609 72.80667,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.9588 -6.50128,9.86066 -6.72,15.68 z",key:16}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 297.08102,223.26967 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59041,-17.25402 -13.61969,-4.97772 -43.38529,35.78346 -99.4078,53.74047 -155.01931,57.77772 z",key:17}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 394.36002,242.46967 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 -78.75534,-5.71575 -73.02241,-101.88127 -12.95405,-123.33482 z",key:18}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 407.31407,365.80449 C 309.19791,384.67026 302.36433,240.82973 394.36002,242.46967",key:19}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 520.76002,203.74867 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z",key:20}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 505.40002,319.26867 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8",key:21}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 506.68002,319.90867 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16",key:22}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 506.04002,319.58867 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227",key:23}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 250.04002,306.46867 c -33.37089,-89.58384 -21.87248,-203.02025 78.4,-230.71799",key:24}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"m 328.31995,75.93151 c -7.72457,10.711 -10.58552,16.93638 -11.39893,31.17917 -0.92731,6.64494 -0.41032,14.67489 3.25217,19.60903",key:25}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 316.92102,107.11068 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441",key:26}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 464.43902,69.66968 c -11.97359,5.2494 -21.96258,14.21019 -30.08,24.32",key:27}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 434.36002,93.99068 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425",key:28}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 434.35902,93.98968 c 38.57084,1.08234 72.86725,22.97326 100.16,48.64",key:29}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 534.51902,142.62968 c -25.28601,-0.93692 -51.80898,3.74198 -74.6713,14.88614",key:30}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 297.08102,223.26967 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.23999",key:31}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 250.04002,306.46867 c 43.44477,-16.54532 48.84709,-47.98612 46.55386,-85.05616",key:32}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 478.20002,211.74867 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899",key:33}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 444.28102,396.06867 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:34}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 250.04002,306.46867 c -80.11607,39.6821 32.64458,116.1168 67.07408,71.90242",key:35}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 317.5741,377.85609 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:36}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 286.38602,340.03267 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:37})])}s.defaultProps={height:"500",width:"800",viewBox:"0 0 800 500"},e.exports=s,s.default=s}}]); -//# sourceMappingURL=component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js.map \ No newline at end of file diff --git a/component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js.map b/component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js.map deleted file mode 100644 index a2559e4..0000000 --- a/component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-list-template-post-list-template-js-65df93a9df60d2b97e9d.js","mappings":"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","sources":["webpack://blog/./src/components/intro/intro.js","webpack://blog/./src/components/intro/style.module.css","webpack://blog/./src/components/paginator/style.module.css","webpack://blog/./src/components/paginator/paginator.js","webpack://blog/./src/components/postListItem/postListItem.js","webpack://blog/./src/components/postListItem/style.module.css","webpack://blog/./src/templates/postListTemplate/postListTemplate.js","webpack://blog/./static/logoBrackets.inline.svg"],"sourcesContent":["import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport LogoBrackets from \"../../../static/logoBrackets.inline.svg\";\r\nimport { Link } from \"gatsby\";\r\n\r\nconst Intro = () => {\r\n return (\r\n
\r\n \r\n

\r\n This is a blog about software development, science, and other musings\r\n by George Pearson.\r\n

\r\n
\r\n );\r\n};\r\n\r\nexport default Intro;","// extracted by mini-css-extract-plugin\nexport var introText = \"style-module--introText--dda49\";\nexport var logoBrackets = \"style-module--logoBrackets--7dd27\";","// extracted by mini-css-extract-plugin\nexport var paginator = \"style-module--paginator--19918\";\nexport var paginatorLink = \"style-module--paginatorLink--ba2d4\";\nexport var paginatorLinkActive = \"style-module--paginatorLinkActive--f9021\";\nexport var paginatorList = \"style-module--paginatorList--1c745\";","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport * as style from \"./style.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faChevronLeft,\r\n faChevronRight,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst Paginator = ({ currentPage, numPages }) => {\r\n const isFirst = currentPage === 1;\r\n const isLast = currentPage === numPages;\r\n const prevPage = currentPage - 1 === 1 ? \"/\" : (currentPage - 1).toString();\r\n const nextPage = (currentPage + 1).toString();\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Paginator;","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst PostListItem = ({ post }) => {\r\n const postImage = post.frontmatter.image;\r\n return (\r\n
\r\n \r\n

{post.frontmatter.title}

\r\n

Posted on {post.frontmatter.date}

\r\n

{post.frontmatter.subtitle}

\r\n {postImage && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PostListItem;","// extracted by mini-css-extract-plugin\nexport var postImage = \"style-module--postImage--efa23\";\nexport var postLink = \"style-module--postLink--c9a09\";\nexport var postListItem = \"style-module--postListItem--1ed24\";\nexport var postMeta = \"style-module--postMeta--25012\";\nexport var postSubtitle = \"style-module--postSubtitle--539a4\";\nexport var postTitle = \"style-module--postTitle--f03a0\";","import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport Intro from \"../../components/intro/intro\";\r\nimport Paginator from \"../../components/paginator/paginator\";\r\nimport PostListItem from \"../../components/postListItem/postListItem\";\r\nimport { graphql } from \"gatsby\";\r\n\r\nexport default class PostListTemplate extends React.Component {\r\n render() {\r\n const { data } = this.props;\r\n const posts = data.allMdx.edges.map(edge => edge.node);\r\n const { currentPage, numPages } = this.props.pageContext;\r\n return (\r\n \r\n \r\n {posts.map(post => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport const pageQuery = graphql`\r\n query postListQuery($skip: Int!, $limit: Int!) {\r\n allMdx(sort: {frontmatter: {date: DESC}}, limit: $limit, skip: $skip) {\r\n edges {\r\n node {\r\n id\r\n fields {\r\n slug\r\n }\r\n frontmatter {\r\n title\r\n subtitle\r\n date(formatString: \"MMMM DD, YYYY\")\r\n image\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","var React = require('react');\n\nfunction LogoBracketsInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"id\":\"bracket1\",\"className\":\"line\",\"style\":{\"fill\":\"#00c1c1\",\"fillOpacity\":\"1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"7.67999983\"},\"d\":\"m 68.378313,250 c 10.56,-8 17.6,-15.36 21.12,-22.72 4.8,-8.96 7.36,-20.16 7.36,-32.96 V 81.681001 c 0,-11.52 3.519997,-21.12 10.239997,-29.12 7.04,-7.680001 15.36,-11.840001 25.6,-12.800002 6.72,-0.64 10.88,-1.6 12.8,-3.52 2.88,-2.88 4.16,-6.08 4.16,-9.92 0,-3.52 -1.28,-6.72 -3.84,-9.28 -2.56,-2.56 -6.72,-3.84 -11.84,-3.84 -16.64,0 -30.4,5.44 -41.279997,16 -14.72,14.400001 -22.08,31.680002 -22.08,52.480002 V 194.321 c 0,11.52 -3.52,21.12 -10.240003,29.12 -7.04,7.68 -16,11.84 -26.56,12.8 -5.76,0.64 -9.6,1.92 -11.84,4.16 -2.56,2.56 -3.84,5.439 -3.84,9.599 0,4.16 1.28,7.36 3.84,9.6 2.24,2.24 6.08,3.84 11.84,4.48 10.56,0.64 19.52,5.12 26.56,13.12 6.720003,7.68 10.240003,17.28 10.240003,28.48 v 112.639 c 0,19.52 6.08,35.84 18.56,48.64 12.799997,13.12 27.519997,19.84 44.799997,19.84 5.12,0 9.28,-1.28 11.84,-3.84 2.56,-2.56 3.84,-5.76 3.84,-9.6 0,-3.84 -1.28,-7.04 -3.84,-9.28 -1.92,-1.92 -6.4,-3.2 -13.12,-3.84 -10.24,-0.96 -18.88,-5.44 -25.6,-13.44 -6.72,-7.68 -10.239997,-17.28 -10.239997,-28.8 v -112.32 c 0,-13.12 -2.24,-23.68 -6.4,-31.68 -4.16,-8.32 -11.52,-16.32 -22.08,-23.999 z\",\"key\":0}),React.createElement(\"path\",{\"id\":\"bracket2\",\"className\":\"line\",\"style\":{\"fill\":\"#00c1c1\",\"fillOpacity\":\"1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"7.67999983\"},\"d\":\"m 731.6217,249.84 c -10.56,-8 -17.6,-15.36 -21.12,-22.4 -4.8,-9.28 -7.36,-20.16 -7.36,-33.28 V 81.841001 c 0,-11.84 -3.2,-21.44 -10.24,-29.12 -6.72,-7.680001 -15.36,-12.16 -25.6,-12.8 -6.72,-0.64 -10.88,-1.92 -12.8,-3.84 -2.88,-2.56 -4.16,-5.76 -4.16,-9.6 0,-3.84 1.28,-7.04 3.84,-9.28 2.56,-2.56 6.72,-3.84 11.84,-3.84 16.64,0 30.4,5.12 41.28,16 14.72,14.08 22.08,31.68 22.08,52.48 V 194.161 c 0,11.52 3.52,21.12 10.56,29.12 7.04,7.68 15.68,11.84 26.56,12.8 5.44,0.64 9.28,2.24 11.84,4.48 2.24,2.24 3.52,5.44 3.52,9.279 0,4.16 -1.28,7.36 -3.52,9.6 -2.56,2.56 -6.4,3.84 -11.84,4.48 -10.88,0.96 -19.84,5.12 -26.56,13.12 -7.04,7.68 -10.56,17.28 -10.56,28.8 v 112.319 c 0,19.84 -6.08,35.84 -18.56,48.96 -12.48,13.12 -27.52,19.52 -44.8,19.52 -5.12,0 -9.28,-1.28 -11.84,-3.52 -2.56,-2.56 -3.84,-5.76 -3.84,-9.92 0,-3.52 1.28,-6.72 3.84,-9.28 1.92,-1.92 6.4,-3.2 13.12,-3.84 10.56,-0.96 18.88,-5.44 25.6,-13.44 7.04,-7.68 10.24,-17.28 10.24,-28.8 v -112 c 0,-13.12 2.24,-23.68 6.4,-32 4.16,-8 11.52,-15.999 22.08,-23.999 z\",\"key\":1}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 249.72202,305.50867 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.6935,34.16911 1.47761,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37581 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 456.12002,430.30767 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98431 40.22076,-18.98365 5.07695,16.63333 21.0005,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.22774,-7.20227 -18.74084,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.9734,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 523.88065,315.37383 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 376.47231,365.98867 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 554.04002,297.82867 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 400.76102,365.02867 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 525.56002,309.66867 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 403.64002,281.18867 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 382.20102,265.82867 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 532.92002,233.82967 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 509.24002,219.10967 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 268.59052,299.50781 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30665,13.62315 25.57877,25.66181 43.12447,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 -51.88853,-16.00534 -102.58791,-41.71575 -138.50215,-84.10982 -9.44505,-11.26967 -16.55959,-24.81855 -23.7516,-37.66125 z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 267.32202,297.82867 C 253.5857,246.67243 240.21363,191.94061 256.05986,139.59844 c 0.98871,-6.00064 11.53375,-30.35816 3.80091,-14.00791 -18.40755,32.68258 -26.39958,70.6153 -22.83875,107.96372 1.6528,24.26835 6.49434,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 316.89547,109.19404 c 0.16868,5.9474 0.39752,13.66468 2.0767,15.77313 2.98389,-1.75987 38.22732,-34.35757 60.96102,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.95879 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 426.36002,111.26968 c 39.09517,-6.12609 72.80667,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.9588 -6.50128,9.86066 -6.72,15.68 z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 297.08102,223.26967 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59041,-17.25402 -13.61969,-4.97772 -43.38529,35.78346 -99.4078,53.74047 -155.01931,57.77772 z\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 394.36002,242.46967 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 -78.75534,-5.71575 -73.02241,-101.88127 -12.95405,-123.33482 z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 407.31407,365.80449 C 309.19791,384.67026 302.36433,240.82973 394.36002,242.46967\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 520.76002,203.74867 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 505.40002,319.26867 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 506.68002,319.90867 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 506.04002,319.58867 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 250.04002,306.46867 c -33.37089,-89.58384 -21.87248,-203.02025 78.4,-230.71799\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"m 328.31995,75.93151 c -7.72457,10.711 -10.58552,16.93638 -11.39893,31.17917 -0.92731,6.64494 -0.41032,14.67489 3.25217,19.60903\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 316.92102,107.11068 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 464.43902,69.66968 c -11.97359,5.2494 -21.96258,14.21019 -30.08,24.32\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 434.36002,93.99068 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 434.35902,93.98968 c 38.57084,1.08234 72.86725,22.97326 100.16,48.64\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 534.51902,142.62968 c -25.28601,-0.93692 -51.80898,3.74198 -74.6713,14.88614\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 297.08102,223.26967 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.23999\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 250.04002,306.46867 c 43.44477,-16.54532 48.84709,-47.98612 46.55386,-85.05616\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 478.20002,211.74867 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 444.28102,396.06867 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 250.04002,306.46867 c -80.11607,39.6821 32.64458,116.1168 67.07408,71.90242\",\"key\":35}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 317.5741,377.85609 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":36}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 286.38602,340.03267 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":37})]);\n}\n\nLogoBracketsInline.defaultProps = {\"height\":\"500\",\"width\":\"800\",\"viewBox\":\"0 0 800 500\"};\n\nmodule.exports = LogoBracketsInline;\n\nLogoBracketsInline.default = LogoBracketsInline;\n"],"names":["Intro","React","LogoBrackets","className","Link","to","paginatorLink","_ref","currentPage","numPages","isFirst","isLast","prevPage","toString","nextPage","style","FontAwesomeIcon","icon","faChevronLeft","Array","from","length","_","i","key","faChevronRight","post","postImage","frontmatter","image","fields","slug","title","date","subtitle","src","alt","PostListTemplate","_React$Component","apply","arguments","_inheritsLoose","prototype","render","data","this","props","posts","allMdx","edges","map","edge","node","pageContext","Layout","page","PostListItem","id","Paginator","LogoBracketsInline","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js b/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js deleted file mode 100644 index 634836a..0000000 --- a/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkblog=self.webpackChunkblog||[]).push([[813],{4608:function(e,t,l){"use strict";l.r(t),l.d(t,{default:function(){return y}});var a=l(7294),s=l(8610),r=l(5042),n=l.n(r),i=l(1883);var o=()=>a.createElement("section",null,a.createElement(n(),{className:"style-module--logoBrackets--7dd27"}),a.createElement("p",{className:"style-module--introText--dda49"},"This is a blog about software development, science, and other musings by ",a.createElement(i.Link,{className:"blueLink",to:"/about"},"George Pearson"),".")),c="style-module--paginatorLink--ba2d4",m=l(982),k=l(9417);var f=e=>{let{currentPage:t,numPages:l}=e;const s=1===t,r=t===l,n=t-1==1?"/":(t-1).toString(),o=(t+1).toString();return a.createElement("nav",{className:"style-module--paginator--19918"},a.createElement("ul",{className:"style-module--paginatorList--1c745"},!s&&a.createElement("li",null,a.createElement(i.Link,{"aria-label":"previous page",className:c,to:n},a.createElement(m.G,{icon:k.A35}))),Array.from({length:l},((e,l)=>a.createElement("li",{key:`pagination-number${l+1}`},a.createElement(i.Link,{className:l===t-1?"style-module--paginatorLinkActive--f9021":c,to:`/${0===l?"":l+1}`},l+1)))),!r&&a.createElement("li",null,a.createElement(i.Link,{"aria-label":"next page",className:c,to:`/${o}`},a.createElement(m.G,{icon:k._tD})))))};var d=e=>{let{post:t}=e;const l=t.frontmatter.image;return a.createElement("div",{className:"style-module--postListItem--1ed24"},a.createElement(i.Link,{className:"style-module--postLink--c9a09",to:t.fields.slug},a.createElement("h2",{className:"style-module--postTitle--f03a0"},t.frontmatter.title),a.createElement("p",{className:"style-module--postMeta--25012"},"Posted on ",t.frontmatter.date),a.createElement("p",{className:"style-module--postSubtitle--539a4"},t.frontmatter.subtitle),l&&a.createElement("img",{className:"style-module--postImage--efa23",src:l,alt:t.frontmatter.title})))};var y=e=>{let{data:t,pageContext:l}=e;const r=t.allMdx.edges.map((e=>e.node)),{currentPage:n,numPages:i}=l;return a.createElement(s.Z,{page:"Home"},a.createElement(o,null),r.map((e=>a.createElement(d,{key:e.id,post:e}))),a.createElement(f,{currentPage:n,numPages:i}))}},5042:function(e,t,l){var a=l(7294);function s(e){return a.createElement("svg",e,[a.createElement("path",{id:"bracket1",className:"line",style:{fill:"#00c1c1",fillOpacity:"1",stroke:"#09616c",strokeWidth:"7.67999983"},d:"m 68.378313,250 c 10.56,-8 17.6,-15.36 21.12,-22.72 4.8,-8.96 7.36,-20.16 7.36,-32.96 V 81.681001 c 0,-11.52 3.519997,-21.12 10.239997,-29.12 7.04,-7.680001 15.36,-11.840001 25.6,-12.800002 6.72,-0.64 10.88,-1.6 12.8,-3.52 2.88,-2.88 4.16,-6.08 4.16,-9.92 0,-3.52 -1.28,-6.72 -3.84,-9.28 -2.56,-2.56 -6.72,-3.84 -11.84,-3.84 -16.64,0 -30.4,5.44 -41.279997,16 -14.72,14.400001 -22.08,31.680002 -22.08,52.480002 V 194.321 c 0,11.52 -3.52,21.12 -10.240003,29.12 -7.04,7.68 -16,11.84 -26.56,12.8 -5.76,0.64 -9.6,1.92 -11.84,4.16 -2.56,2.56 -3.84,5.439 -3.84,9.599 0,4.16 1.28,7.36 3.84,9.6 2.24,2.24 6.08,3.84 11.84,4.48 10.56,0.64 19.52,5.12 26.56,13.12 6.720003,7.68 10.240003,17.28 10.240003,28.48 v 112.639 c 0,19.52 6.08,35.84 18.56,48.64 12.799997,13.12 27.519997,19.84 44.799997,19.84 5.12,0 9.28,-1.28 11.84,-3.84 2.56,-2.56 3.84,-5.76 3.84,-9.6 0,-3.84 -1.28,-7.04 -3.84,-9.28 -1.92,-1.92 -6.4,-3.2 -13.12,-3.84 -10.24,-0.96 -18.88,-5.44 -25.6,-13.44 -6.72,-7.68 -10.239997,-17.28 -10.239997,-28.8 v -112.32 c 0,-13.12 -2.24,-23.68 -6.4,-31.68 -4.16,-8.32 -11.52,-16.32 -22.08,-23.999 z",key:0}),a.createElement("path",{id:"bracket2",className:"line",style:{fill:"#00c1c1",fillOpacity:"1",stroke:"#09616c",strokeWidth:"7.67999983"},d:"m 731.6217,249.84 c -10.56,-8 -17.6,-15.36 -21.12,-22.4 -4.8,-9.28 -7.36,-20.16 -7.36,-33.28 V 81.841001 c 0,-11.84 -3.2,-21.44 -10.24,-29.12 -6.72,-7.680001 -15.36,-12.16 -25.6,-12.8 -6.72,-0.64 -10.88,-1.92 -12.8,-3.84 -2.88,-2.56 -4.16,-5.76 -4.16,-9.6 0,-3.84 1.28,-7.04 3.84,-9.28 2.56,-2.56 6.72,-3.84 11.84,-3.84 16.64,0 30.4,5.12 41.28,16 14.72,14.08 22.08,31.68 22.08,52.48 V 194.161 c 0,11.52 3.52,21.12 10.56,29.12 7.04,7.68 15.68,11.84 26.56,12.8 5.44,0.64 9.28,2.24 11.84,4.48 2.24,2.24 3.52,5.44 3.52,9.279 0,4.16 -1.28,7.36 -3.52,9.6 -2.56,2.56 -6.4,3.84 -11.84,4.48 -10.88,0.96 -19.84,5.12 -26.56,13.12 -7.04,7.68 -10.56,17.28 -10.56,28.8 v 112.319 c 0,19.84 -6.08,35.84 -18.56,48.96 -12.48,13.12 -27.52,19.52 -44.8,19.52 -5.12,0 -9.28,-1.28 -11.84,-3.52 -2.56,-2.56 -3.84,-5.76 -3.84,-9.92 0,-3.52 1.28,-6.72 3.84,-9.28 1.92,-1.92 6.4,-3.2 13.12,-3.84 10.56,-0.96 18.88,-5.44 25.6,-13.44 7.04,-7.68 10.24,-17.28 10.24,-28.8 v -112 c 0,-13.12 2.24,-23.68 6.4,-32 4.16,-8 11.52,-15.999 22.08,-23.999 z",key:1}),a.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 249.72202,305.50867 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.6935,34.16911 1.47761,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37581 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z",key:2}),a.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 456.12002,430.30767 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98431 40.22076,-18.98365 5.07695,16.63333 21.0005,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.22774,-7.20227 -18.74084,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.9734,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z",key:3}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 523.88065,315.37383 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:4}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 376.47231,365.98867 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z",key:5}),a.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 554.04002,297.82867 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:6}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 400.76102,365.02867 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:7}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 525.56002,309.66867 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:8}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 403.64002,281.18867 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:9}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 382.20102,265.82867 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z",key:10}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 532.92002,233.82967 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:11}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 509.24002,219.10967 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z",key:12}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 268.59052,299.50781 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30665,13.62315 25.57877,25.66181 43.12447,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 -51.88853,-16.00534 -102.58791,-41.71575 -138.50215,-84.10982 -9.44505,-11.26967 -16.55959,-24.81855 -23.7516,-37.66125 z",key:13}),a.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 267.32202,297.82867 C 253.5857,246.67243 240.21363,191.94061 256.05986,139.59844 c 0.98871,-6.00064 11.53375,-30.35816 3.80091,-14.00791 -18.40755,32.68258 -26.39958,70.6153 -22.83875,107.96372 1.6528,24.26835 6.49434,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z",key:14}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 316.89547,109.19404 c 0.16868,5.9474 0.39752,13.66468 2.0767,15.77313 2.98389,-1.75987 38.22732,-34.35757 60.96102,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.95879 z",key:15}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 426.36002,111.26968 c 39.09517,-6.12609 72.80667,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.9588 -6.50128,9.86066 -6.72,15.68 z",key:16}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 297.08102,223.26967 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59041,-17.25402 -13.61969,-4.97772 -43.38529,35.78346 -99.4078,53.74047 -155.01931,57.77772 z",key:17}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 394.36002,242.46967 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 -78.75534,-5.71575 -73.02241,-101.88127 -12.95405,-123.33482 z",key:18}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 407.31407,365.80449 C 309.19791,384.67026 302.36433,240.82973 394.36002,242.46967",key:19}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 520.76002,203.74867 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z",key:20}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 505.40002,319.26867 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8",key:21}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 506.68002,319.90867 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16",key:22}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 506.04002,319.58867 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227",key:23}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 250.04002,306.46867 c -33.37089,-89.58384 -21.87248,-203.02025 78.4,-230.71799",key:24}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"m 328.31995,75.93151 c -7.72457,10.711 -10.58552,16.93638 -11.39893,31.17917 -0.92731,6.64494 -0.41032,14.67489 3.25217,19.60903",key:25}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 316.92102,107.11068 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441",key:26}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 464.43902,69.66968 c -11.97359,5.2494 -21.96258,14.21019 -30.08,24.32",key:27}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 434.36002,93.99068 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425",key:28}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 434.35902,93.98968 c 38.57084,1.08234 72.86725,22.97326 100.16,48.64",key:29}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 534.51902,142.62968 c -25.28601,-0.93692 -51.80898,3.74198 -74.6713,14.88614",key:30}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 297.08102,223.26967 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.23999",key:31}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"m 250.04002,306.46867 c 43.44477,-16.54532 48.84709,-47.98612 46.55386,-85.05616",key:32}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 478.20002,211.74867 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899",key:33}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 444.28102,396.06867 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:34}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 250.04002,306.46867 c -80.11607,39.6821 32.64458,116.1168 67.07408,71.90242",key:35}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 317.5741,377.85609 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:36}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 286.38602,340.03267 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:37})])}s.defaultProps={height:"500",width:"800",viewBox:"0 0 800 500"},e.exports=s,s.default=s}}]); -//# sourceMappingURL=component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js.map \ No newline at end of file diff --git a/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js.map b/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js.map deleted file mode 100644 index 73f8fb5..0000000 --- a/component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js","mappings":"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","sources":["webpack://blog/./src/components/intro/intro.js","webpack://blog/./src/components/intro/style.module.css","webpack://blog/./src/components/paginator/style.module.css","webpack://blog/./src/components/paginator/paginator.js","webpack://blog/./src/components/postListItem/postListItem.js","webpack://blog/./src/components/postListItem/style.module.css","webpack://blog/./src/templates/postListTemplate/postListTemplate.js","webpack://blog/./static/logoBrackets.inline.svg"],"sourcesContent":["import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport LogoBrackets from \"../../../static/logoBrackets.inline.svg\";\r\nimport { Link } from \"gatsby\";\r\n\r\nconst Intro = () => {\r\n return (\r\n
\r\n \r\n

\r\n This is a blog about software development, science, and other musings\r\n by George Pearson.\r\n

\r\n
\r\n );\r\n};\r\n\r\nexport default Intro;","// extracted by mini-css-extract-plugin\nexport var introText = \"style-module--introText--dda49\";\nexport var logoBrackets = \"style-module--logoBrackets--7dd27\";","// extracted by mini-css-extract-plugin\nexport var paginator = \"style-module--paginator--19918\";\nexport var paginatorLink = \"style-module--paginatorLink--ba2d4\";\nexport var paginatorLinkActive = \"style-module--paginatorLinkActive--f9021\";\nexport var paginatorList = \"style-module--paginatorList--1c745\";","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport * as style from \"./style.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faChevronLeft,\r\n faChevronRight,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst Paginator = ({ currentPage, numPages }) => {\r\n const isFirst = currentPage === 1;\r\n const isLast = currentPage === numPages;\r\n const prevPage = currentPage - 1 === 1 ? \"/\" : (currentPage - 1).toString();\r\n const nextPage = (currentPage + 1).toString();\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Paginator;","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst PostListItem = ({ post }) => {\r\n const postImage = post.frontmatter.image;\r\n return (\r\n
\r\n \r\n

{post.frontmatter.title}

\r\n

Posted on {post.frontmatter.date}

\r\n

{post.frontmatter.subtitle}

\r\n {postImage && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PostListItem;","// extracted by mini-css-extract-plugin\nexport var postImage = \"style-module--postImage--efa23\";\nexport var postLink = \"style-module--postLink--c9a09\";\nexport var postListItem = \"style-module--postListItem--1ed24\";\nexport var postMeta = \"style-module--postMeta--25012\";\nexport var postSubtitle = \"style-module--postSubtitle--539a4\";\nexport var postTitle = \"style-module--postTitle--f03a0\";","import React from \"react\";\r\nimport Layout from \"../../components/layout/layout\";\r\nimport Intro from \"../../components/intro/intro\";\r\nimport Paginator from \"../../components/paginator/paginator\";\r\nimport PostListItem from \"../../components/postListItem/postListItem\";\r\nimport { graphql } from \"gatsby\";\r\n\r\nconst PostListTemplate = ({ data, pageContext}) => {\r\n const posts = data.allMdx.edges.map(edge => edge.node);\r\n const { currentPage, numPages } = pageContext;\r\n return (\r\n \r\n \r\n {posts.map(post => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const pageQuery = graphql`\r\n query postListQuery($skip: Int!, $limit: Int!) {\r\n allMdx(sort: {frontmatter: {date: DESC}}, limit: $limit, skip: $skip) {\r\n edges {\r\n node {\r\n id\r\n fields {\r\n slug\r\n }\r\n frontmatter {\r\n title\r\n subtitle\r\n date(formatString: \"MMMM DD, YYYY\")\r\n image\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport default PostListTemplate;","var React = require('react');\n\nfunction LogoBracketsInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"id\":\"bracket1\",\"className\":\"line\",\"style\":{\"fill\":\"#00c1c1\",\"fillOpacity\":\"1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"7.67999983\"},\"d\":\"m 68.378313,250 c 10.56,-8 17.6,-15.36 21.12,-22.72 4.8,-8.96 7.36,-20.16 7.36,-32.96 V 81.681001 c 0,-11.52 3.519997,-21.12 10.239997,-29.12 7.04,-7.680001 15.36,-11.840001 25.6,-12.800002 6.72,-0.64 10.88,-1.6 12.8,-3.52 2.88,-2.88 4.16,-6.08 4.16,-9.92 0,-3.52 -1.28,-6.72 -3.84,-9.28 -2.56,-2.56 -6.72,-3.84 -11.84,-3.84 -16.64,0 -30.4,5.44 -41.279997,16 -14.72,14.400001 -22.08,31.680002 -22.08,52.480002 V 194.321 c 0,11.52 -3.52,21.12 -10.240003,29.12 -7.04,7.68 -16,11.84 -26.56,12.8 -5.76,0.64 -9.6,1.92 -11.84,4.16 -2.56,2.56 -3.84,5.439 -3.84,9.599 0,4.16 1.28,7.36 3.84,9.6 2.24,2.24 6.08,3.84 11.84,4.48 10.56,0.64 19.52,5.12 26.56,13.12 6.720003,7.68 10.240003,17.28 10.240003,28.48 v 112.639 c 0,19.52 6.08,35.84 18.56,48.64 12.799997,13.12 27.519997,19.84 44.799997,19.84 5.12,0 9.28,-1.28 11.84,-3.84 2.56,-2.56 3.84,-5.76 3.84,-9.6 0,-3.84 -1.28,-7.04 -3.84,-9.28 -1.92,-1.92 -6.4,-3.2 -13.12,-3.84 -10.24,-0.96 -18.88,-5.44 -25.6,-13.44 -6.72,-7.68 -10.239997,-17.28 -10.239997,-28.8 v -112.32 c 0,-13.12 -2.24,-23.68 -6.4,-31.68 -4.16,-8.32 -11.52,-16.32 -22.08,-23.999 z\",\"key\":0}),React.createElement(\"path\",{\"id\":\"bracket2\",\"className\":\"line\",\"style\":{\"fill\":\"#00c1c1\",\"fillOpacity\":\"1\",\"stroke\":\"#09616c\",\"strokeWidth\":\"7.67999983\"},\"d\":\"m 731.6217,249.84 c -10.56,-8 -17.6,-15.36 -21.12,-22.4 -4.8,-9.28 -7.36,-20.16 -7.36,-33.28 V 81.841001 c 0,-11.84 -3.2,-21.44 -10.24,-29.12 -6.72,-7.680001 -15.36,-12.16 -25.6,-12.8 -6.72,-0.64 -10.88,-1.92 -12.8,-3.84 -2.88,-2.56 -4.16,-5.76 -4.16,-9.6 0,-3.84 1.28,-7.04 3.84,-9.28 2.56,-2.56 6.72,-3.84 11.84,-3.84 16.64,0 30.4,5.12 41.28,16 14.72,14.08 22.08,31.68 22.08,52.48 V 194.161 c 0,11.52 3.52,21.12 10.56,29.12 7.04,7.68 15.68,11.84 26.56,12.8 5.44,0.64 9.28,2.24 11.84,4.48 2.24,2.24 3.52,5.44 3.52,9.279 0,4.16 -1.28,7.36 -3.52,9.6 -2.56,2.56 -6.4,3.84 -11.84,4.48 -10.88,0.96 -19.84,5.12 -26.56,13.12 -7.04,7.68 -10.56,17.28 -10.56,28.8 v 112.319 c 0,19.84 -6.08,35.84 -18.56,48.96 -12.48,13.12 -27.52,19.52 -44.8,19.52 -5.12,0 -9.28,-1.28 -11.84,-3.52 -2.56,-2.56 -3.84,-5.76 -3.84,-9.92 0,-3.52 1.28,-6.72 3.84,-9.28 1.92,-1.92 6.4,-3.2 13.12,-3.84 10.56,-0.96 18.88,-5.44 25.6,-13.44 7.04,-7.68 10.24,-17.28 10.24,-28.8 v -112 c 0,-13.12 2.24,-23.68 6.4,-32 4.16,-8 11.52,-15.999 22.08,-23.999 z\",\"key\":1}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 249.72202,305.50867 c -4.14064,-14.81568 -6.27591,-34.10848 -9.03708,-50.72733 -6.39511,-48.53633 -5.43133,-102.95897 26.30893,-143.18993 11.10558,-15.29491 27.91961,-25.27745 46.08003,-29.66443 4.10201,-0.68284 16.44015,-9.19631 10.37051,-0.20831 -4.33798,7.09987 -13.6935,34.16911 1.47761,20.59101 29.16454,-16.9913 61.45366,-29.52376 94.86517,-34.58094 13.57196,-0.81272 27.01177,1.74736 40.49383,2.90094 -8.25404,7.9407 -19.61107,13.35969 -25.92,22.72 38.0844,2.03755 72.17,23.17728 99.06212,48.93937 -6.85106,2.37581 -27.50231,-0.52607 -39.33625,3.16375 -17.32356,1.42384 -32.60892,10.38381 -46.28687,20.53688 -43.35668,30.73621 -94.29898,52.04883 -147.464,56.84999 -6.66152,6.47001 -0.11237,27.96215 -5.25688,39.6668 -4.24141,22.26047 -23.14418,39.27185 -45.03812,43.6422 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 456.12002,430.30767 c -49.78582,-1.78289 -93.69592,-27.95143 -136.59025,-50.49375 -12.65594,-5.54369 -24.74443,14.48778 -40.27821,10.77781 -26.51653,-0.42335 -48.75486,-23.75238 -55.23517,-48.31531 -5.4398,-18.92392 13.33247,-31.78863 29.22463,-36.12775 21.81863,-5.97249 36.85367,-25.11932 43.23398,-47.10102 3.29299,-15.19856 -9.6178,-40.41231 15.64781,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98431 40.22076,-18.98365 5.07695,16.63333 21.0005,36.64995 11.3002,53.19343 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.22774,-7.20227 -18.74084,13.69844 -23.48,-0.52 -17.17151,-22.97847 16.9734,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.73795,11.14121 17.8726,8.60518 26.4,2.6 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 523.88065,315.37383 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 376.47231,365.98867 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 554.04002,297.82867 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 400.76102,365.02867 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 525.56002,309.66867 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 403.64002,281.18867 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 382.20102,265.82867 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 532.92002,233.82967 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 509.24002,219.10967 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 268.59052,299.50781 c -15.17942,4.7639 -32.21554,11.09003 -39.95162,26.70032 -6.61419,12.96011 -5.50549,28.24165 6.20779,37.61233 10.30665,13.62315 25.57877,25.66181 43.12447,26.32297 13.77644,-0.0162 29.36851,-5.24351 39.75657,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 -51.88853,-16.00534 -102.58791,-41.71575 -138.50215,-84.10982 -9.44505,-11.26967 -16.55959,-24.81855 -23.7516,-37.66125 z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 267.32202,297.82867 C 253.5857,246.67243 240.21363,191.94061 256.05986,139.59844 c 0.98871,-6.00064 11.53375,-30.35816 3.80091,-14.00791 -18.40755,32.68258 -26.39958,70.6153 -22.83875,107.96372 1.6528,24.26835 6.49434,50.30059 12.83421,71.3799 6.56538,-1.56175 11.1465,-3.16529 17.46579,-7.10548 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 316.89547,109.19404 c 0.16868,5.9474 0.39752,13.66468 2.0767,15.77313 2.98389,-1.75987 38.22732,-34.35757 60.96102,-46.69356 -15.50568,5.03314 -32.04762,12.51889 -45.86676,20.95879 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 426.36002,111.26968 c 39.09517,-6.12609 72.80667,16.82333 107.06312,31.01937 -25.82848,-27.35425 -61.2529,-49.23465 -100.34312,-46.69937 -4.42206,3.9588 -6.50128,9.86066 -6.72,15.68 z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 297.08102,223.26967 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.86709 -5.59041,-17.25402 -13.61969,-4.97772 -43.38529,35.78346 -99.4078,53.74047 -155.01931,57.77772 z\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 394.36002,242.46967 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 -78.75534,-5.71575 -73.02241,-101.88127 -12.95405,-123.33482 z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 407.31407,365.80449 C 309.19791,384.67026 302.36433,240.82973 394.36002,242.46967\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 520.76002,203.74867 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 -48.06395,-22.31459 -43.77953,-88.16123 3.40512,-104.49962 z\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 505.40002,319.26867 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 506.68002,319.90867 c -52.10921,-21.01429 -59.67635,-69.84092 -28.48,-108.16\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 506.04002,319.58867 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 250.04002,306.46867 c -33.37089,-89.58384 -21.87248,-203.02025 78.4,-230.71799\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"m 328.31995,75.93151 c -7.72457,10.711 -10.58552,16.93638 -11.39893,31.17917 -0.92731,6.64494 -0.41032,14.67489 3.25217,19.60903\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 316.92102,107.11068 c 43.45272,-27.4525 95.84775,-43.32382 147.518,-37.441\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 464.43902,69.66968 c -11.97359,5.2494 -21.96258,14.21019 -30.08,24.32\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 434.36002,93.99068 c -4.96723,4.01422 -9.16337,13.47456 -8.125,19.2425\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 434.35902,93.98968 c 38.57084,1.08234 72.86725,22.97326 100.16,48.64\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 534.51902,142.62968 c -25.28601,-0.93692 -51.80898,3.74198 -74.6713,14.88614\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 297.08102,223.26967 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.23999\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"m 250.04002,306.46867 c 43.44477,-16.54532 48.84709,-47.98612 46.55386,-85.05616\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 478.20002,211.74867 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.07899\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 444.28102,396.06867 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 250.04002,306.46867 c -80.11607,39.6821 32.64458,116.1168 67.07408,71.90242\",\"key\":35}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 317.5741,377.85609 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":36}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 286.38602,340.03267 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":37})]);\n}\n\nLogoBracketsInline.defaultProps = {\"height\":\"500\",\"width\":\"800\",\"viewBox\":\"0 0 800 500\"};\n\nmodule.exports = LogoBracketsInline;\n\nLogoBracketsInline.default = LogoBracketsInline;\n"],"names":["Intro","React","LogoBrackets","className","Link","to","paginatorLink","_ref","currentPage","numPages","isFirst","isLast","prevPage","toString","nextPage","style","FontAwesomeIcon","icon","faChevronLeft","Array","from","length","_","i","key","faChevronRight","post","postImage","frontmatter","image","fields","slug","title","date","subtitle","src","alt","data","pageContext","posts","allMdx","edges","map","edge","node","Layout","page","PostListItem","id","Paginator","LogoBracketsInline","props","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js similarity index 87% rename from component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js rename to component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js index 7287e5a..9926332 100644 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[511],{5567:function(e,t,n){n.r(t);var a=n(1151),l=n(7294),r=n(9339),s=n(2906);function o(e){const t=Object.assign({p:"p",h2:"h2",strong:"strong",pre:"pre",code:"code",ul:"ul",li:"li"},(0,a.ah)(),e.components);return l.createElement(l.Fragment,null,l.createElement(t.p,null,"I've finally shipped! After about a month of what seems like going backwards and forwards I've made my first post on my brand new website. I’m going to try and do at least one post a month, and I plan to keep them relatively short. I can’t promise they won’t end up longer though if I really get into it!"),"\n",l.createElement(t.h2,null,"Jekyll and GitHub Pages"),"\n",l.createElement(t.p,null,"So you want to know how I made this site right? Well initially I was thinking of using what I know from work - C# ",l.createElement("a",{href:"https://dotnet.microsoft.com/apps/aspnet/mvc",class:"blueLink"},"ASP.NET MVC"),". But I figured it would be better if I learnt something new and all that server side setup and maintenance seemed like a pain. After a recommendation from a friend I found that GitHub offers ",l.createElement(t.strong,null,"free hosting")," for websites running ",l.createElement("a",{class:"blueLink",href:"https://pages.github.com/"},"GitHub Pages"),". This seemed perfect for what I needed and no server side hassle! From GitHub Pages I was directed to ",l.createElement("a",{href:"https://jekyllrb.com/",class:"blueLink"},"Jekyll"),". Jekyll is an amazing open source blogging tool, which among other things has inbuilt support for ",l.createElement("a",{href:"https://daringfireball.net/projects/markdown/",class:"blueLink"},"Markdown")," making writing blog posts a breeze[^1]."),"\n",l.createElement(t.p,null,"Here's an example of the JavaScript markdown which uses ",l.createElement("a",{href:"https://pypi.org/project/Pygments/",class:"blueLink"},"Pygments"),":"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-javascript"},'(function() {\r\n console.log("Hello World! 😊");\r\n})();\n')),"\n",l.createElement(t.p,null,"Jekyll also has a great HTML templating through use of ",l.createElement("a",{href:"https://jekyllrb.com/docs/includes/",class:"blueLink"},"includes")," and ",l.createElement("a",{href:"https://jekyllrb.com/docs/step-by-step/04-layouts/",class:"blueLink"},"layouts")," which help keep your project well structured."),"\n",l.createElement(t.h2,null,"Sass and Gulp"),"\n",l.createElement(t.p,null,"At work we predominantly use CSS libraries like ",l.createElement("a",{href:"https://getbootstrap.com/",class:"blueLink"},"Bootstrap"),", but one thing I decided fairly early on was that I was going to develop all the CSS myself to improve my front-end skills. After a bit of online research I decided I was going to use the ",l.createElement("a",{href:"https://sass-lang.com/",class:"blueLink"},"Sass")," CSS templating language. Here's the Sass for those crazy blue links:"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-scss"},"$color--skyblue: #00c1c1;\r\n$color--white: #fff;\r\n\r\n%transition-duration {\r\n transition-duration: 0.5s;\r\n}\r\n\r\n.blueLink,\r\n%blueLink {\r\n color: $color--skyblue;\r\n text-decoration: none;\r\n background-image: linear-gradient(\r\n to top,\r\n $color--skyblue,\r\n $color--skyblue 50%,\r\n transparent 50%,\r\n transparent\r\n );\r\n background-position: 0% 0%;\r\n background-size: 100% 200%;\r\n @extend %transition-duration;\r\n\r\n &:hover {\r\n color: $color--white;\r\n background-position: 0 100%;\r\n }\r\n}\n")),"\n",l.createElement(t.p,null,"Sass makes your CSS code simpler with things like variables ",l.createElement(t.code,null,"$color--skyblue"),", placeholder selectors ",l.createElement(t.code,null,"%transition-duration")," and parent selectors ",l.createElement(t.code,null,"&:hover"),". Essentially Sass means you don't have to repeat yourself so often!"),"\n",l.createElement(t.p,null,"While investigating Sass I was directed to ",l.createElement("a",{href:"https://gulpjs.com/",class:"blueLink"},"Gulp")," a DevOps build tool. Gulp essentially allows you to automate command line tools for things like:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Compiling Sass files to CSS when they change."),"\n",l.createElement(t.li,null,"Minifying JavaScript and CSS files."),"\n",l.createElement(t.li,null,"Running a Jekyll build when a markdown file is updated."),"\n",l.createElement(t.li,null,"Reloading your browser once a build is complete."),"\n"),"\n",l.createElement(t.p,null,"This makes development a lot easier and faster. Here's an example of a gulp command that compiles a Sass file and minifies the outputed CSS:"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-javascript"},'/**\r\n * Compile .scss files.\r\n */\r\ngulp.task("sass", function() {\r\n return gulp\r\n .src("_scss/main.scss")\r\n .pipe(sass().on("error", sass.logError))\r\n .pipe(cssnano())\r\n .pipe(rename("main.min.css"))\r\n .pipe(gulp.dest("assets/css/"));\r\n});\n')),"\n",l.createElement(t.h2,null,"Photos"),"\n",l.createElement("div",{className:s.rY},l.createElement("div",{className:s.U4},l.createElement("img",{style:{width:"100%"},src:r.Z,alt:"sunset"})),l.createElement("div",{className:s.y4},l.createElement("p",null,l.createElement(t.p,null,"One thing I thought I'd share on this blog is\r\nsome ",l.createElement("a",{class:"blueLink",href:"/Photos"},"photos")," I've\r\ntaken on my travels. In the future I'd like to develop that\r\narea into a gallery of some kind. The photos have been compressed\r\nusing ",l.createElement("a",{class:"blueLink",href:"https://squoosh.app/"},"Squoosh")," making\r\nthem take up less space and load quickly (hopefully).")))),"\n",l.createElement(t.h2,null,"Conclusion"),"\n",l.createElement(t.p,null,'In fact creating this website was a lot easier than I imagined thanks to all the great freely available open source tools on the web. Now that I started writing about some of these tools I realised most of them probably need an entire post to be explained with any detail. So I might be doing some "idiots guide to..." posts in the near future. Anyhow hope you enjoyed my first post and are looking forward to the next instalment. 😏'),"\n",l.createElement(t.p,null,"[^1]: That's the plan anyway!"))}t.default=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?l.createElement(t,e,l.createElement(o,e)):o(e)}},2821:function(e,t,n){n.r(t),n.d(t,{default:function(){return h}});var a=n(5567),l=n(7294),r=n(8610),s=n(1750),o=n(8013),i=n(5814),c=n(1151),u=n(8977);const m=e=>{let{data:{mdx:t},children:n}=e;const a={code:o.Z,inlineCode:i.Z},m=t;return l.createElement(r.Z,{page:"Post",post:m},l.createElement("div",{className:u.fI},l.createElement("div",{className:u.v_},l.createElement(s.Z,{post:m}),l.createElement(c.Zo,{components:a},n))))};function h(e){return l.createElement(m,e,l.createElement(a.default,e))}},2906:function(e,t,n){n.d(t,{U4:function(){return l},rY:function(){return a},y4:function(){return r}});var a="common-module--halfWidthContainer--10282",l="common-module--halfWidthLeft--83707",r="common-module--halfWidthRight--3851a"},9339:function(e,t,n){t.Z=n.p+"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg"}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js.map \ No newline at end of file +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[511],{5567:function(e,t,n){n.r(t);var a=n(1151),l=n(7294),r=n(9339),s=n(2906);function o(e){const t=Object.assign({p:"p",h2:"h2",strong:"strong",pre:"pre",code:"code",ul:"ul",li:"li"},(0,a.ah)(),e.components);return l.createElement(l.Fragment,null,l.createElement(t.p,null,"I've finally shipped! After about a month of what seems like going backwards and forwards I've made my first post on my brand new website. I’m going to try and do at least one post a month, and I plan to keep them relatively short. I can’t promise they won’t end up longer though if I really get into it!"),"\n",l.createElement(t.h2,null,"Jekyll and GitHub Pages"),"\n",l.createElement(t.p,null,"So you want to know how I made this site right? Well initially I was thinking of using what I know from work - C# ",l.createElement("a",{href:"https://dotnet.microsoft.com/apps/aspnet/mvc",class:"blueLink"},"ASP.NET MVC"),". But I figured it would be better if I learnt something new and all that server side setup and maintenance seemed like a pain. After a recommendation from a friend I found that GitHub offers ",l.createElement(t.strong,null,"free hosting")," for websites running ",l.createElement("a",{class:"blueLink",href:"https://pages.github.com/"},"GitHub Pages"),". This seemed perfect for what I needed and no server side hassle! From GitHub Pages I was directed to ",l.createElement("a",{href:"https://jekyllrb.com/",class:"blueLink"},"Jekyll"),". Jekyll is an amazing open source blogging tool, which among other things has inbuilt support for ",l.createElement("a",{href:"https://daringfireball.net/projects/markdown/",class:"blueLink"},"Markdown")," making writing blog posts a breeze[^1]."),"\n",l.createElement(t.p,null,"Here's an example of the JavaScript markdown which uses ",l.createElement("a",{href:"https://pypi.org/project/Pygments/",class:"blueLink"},"Pygments"),":"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-javascript"},'(function() {\r\n console.log("Hello World! 😊");\r\n})();\n')),"\n",l.createElement(t.p,null,"Jekyll also has a great HTML templating through use of ",l.createElement("a",{href:"https://jekyllrb.com/docs/includes/",class:"blueLink"},"includes")," and ",l.createElement("a",{href:"https://jekyllrb.com/docs/step-by-step/04-layouts/",class:"blueLink"},"layouts")," which help keep your project well structured."),"\n",l.createElement(t.h2,null,"Sass and Gulp"),"\n",l.createElement(t.p,null,"At work we predominantly use CSS libraries like ",l.createElement("a",{href:"https://getbootstrap.com/",class:"blueLink"},"Bootstrap"),", but one thing I decided fairly early on was that I was going to develop all the CSS myself to improve my front-end skills. After a bit of online research I decided I was going to use the ",l.createElement("a",{href:"https://sass-lang.com/",class:"blueLink"},"Sass")," CSS templating language. Here's the Sass for those crazy blue links:"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-scss"},"$color--skyblue: #00c1c1;\r\n$color--white: #fff;\r\n\r\n%transition-duration {\r\n transition-duration: 0.5s;\r\n}\r\n\r\n.blueLink,\r\n%blueLink {\r\n color: $color--skyblue;\r\n text-decoration: none;\r\n background-image: linear-gradient(\r\n to top,\r\n $color--skyblue,\r\n $color--skyblue 50%,\r\n transparent 50%,\r\n transparent\r\n );\r\n background-position: 0% 0%;\r\n background-size: 100% 200%;\r\n @extend %transition-duration;\r\n\r\n &:hover {\r\n color: $color--white;\r\n background-position: 0 100%;\r\n }\r\n}\n")),"\n",l.createElement(t.p,null,"Sass makes your CSS code simpler with things like variables ",l.createElement(t.code,null,"$color--skyblue"),", placeholder selectors ",l.createElement(t.code,null,"%transition-duration")," and parent selectors ",l.createElement(t.code,null,"&:hover"),". Essentially Sass means you don't have to repeat yourself so often!"),"\n",l.createElement(t.p,null,"While investigating Sass I was directed to ",l.createElement("a",{href:"https://gulpjs.com/",class:"blueLink"},"Gulp")," a DevOps build tool. Gulp essentially allows you to automate command line tools for things like:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Compiling Sass files to CSS when they change."),"\n",l.createElement(t.li,null,"Minifying JavaScript and CSS files."),"\n",l.createElement(t.li,null,"Running a Jekyll build when a markdown file is updated."),"\n",l.createElement(t.li,null,"Reloading your browser once a build is complete."),"\n"),"\n",l.createElement(t.p,null,"This makes development a lot easier and faster. Here's an example of a gulp command that compiles a Sass file and minifies the outputed CSS:"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-javascript"},'/**\r\n * Compile .scss files.\r\n */\r\ngulp.task("sass", function() {\r\n return gulp\r\n .src("_scss/main.scss")\r\n .pipe(sass().on("error", sass.logError))\r\n .pipe(cssnano())\r\n .pipe(rename("main.min.css"))\r\n .pipe(gulp.dest("assets/css/"));\r\n});\n')),"\n",l.createElement(t.h2,null,"Photos"),"\n",l.createElement("div",{className:s.rY},l.createElement("div",{className:s.U4},l.createElement("img",{style:{width:"100%"},src:r.Z,alt:"sunset"})),l.createElement("div",{className:s.y4},l.createElement("p",null,l.createElement(t.p,null,"One thing I thought I'd share on this blog is\r\nsome ",l.createElement("a",{class:"blueLink",href:"/Photos"},"photos")," I've\r\ntaken on my travels. In the future I'd like to develop that\r\narea into a gallery of some kind. The photos have been compressed\r\nusing ",l.createElement("a",{class:"blueLink",href:"https://squoosh.app/"},"Squoosh")," making\r\nthem take up less space and load quickly (hopefully).")))),"\n",l.createElement(t.h2,null,"Conclusion"),"\n",l.createElement(t.p,null,'In fact creating this website was a lot easier than I imagined thanks to all the great freely available open source tools on the web. Now that I started writing about some of these tools I realised most of them probably need an entire post to be explained with any detail. So I might be doing some "idiots guide to..." posts in the near future. Anyhow hope you enjoyed my first post and are looking forward to the next instalment. 😏'),"\n",l.createElement(t.p,null,"[^1]: That's the plan anyway!"))}t.default=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?l.createElement(t,e,l.createElement(o,e)):o(e)}},2821:function(e,t,n){n.r(t),n.d(t,{Head:function(){return d},default:function(){return p}});var a=n(5567),l=n(7294),r=n(3306),s=n(4527),o=n(1750),i=n(8013),c=n(5814),u=n(1151),m=n(8977);const h=e=>{let{data:{mdx:t},children:n}=e;const a={code:i.Z,inlineCode:c.Z},r=t;return l.createElement(s.Z,null,l.createElement("div",{className:m.fI},l.createElement("div",{className:m.v_},l.createElement(o.Z,{post:r}),l.createElement(u.Zo,{components:a},n))))},d=e=>{let{data:{mdx:t}}=e;const n=t;return l.createElement(r.Z,{page:"Post",post:n})};function p(e){return l.createElement(h,e,l.createElement(a.default,e))}},2906:function(e,t,n){n.d(t,{U4:function(){return l},rY:function(){return a},y4:function(){return r}});var a="common-module--halfWidthContainer--10282",l="common-module--halfWidthLeft--83707",r="common-module--halfWidthRight--3851a"},9339:function(e,t,n){t.Z=n.p+"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg"}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js.map new file mode 100644 index 0000000..7842856 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js","mappings":"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","sources":["webpack://blog/./src/pages/posts/2019-02-09-hello-world/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js","webpack://blog/./src/pages/posts/common.module.css","webpack://blog/./static/photos/Sunset.jpg"],"sourcesContent":["/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport sunset from \"../../../../static/photos/Sunset.jpg\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n h2: \"h2\",\n strong: \"strong\",\n pre: \"pre\",\n code: \"code\",\n ul: \"ul\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I've finally shipped! After about a month of what seems like going backwards and forwards I've made my first post on my brand new website. I’m going to try and do at least one post a month, and I plan to keep them relatively short. I can’t promise they won’t end up longer though if I really get into it!\"), \"\\n\", React.createElement(_components.h2, null, \"Jekyll and GitHub Pages\"), \"\\n\", React.createElement(_components.p, null, \"So you want to know how I made this site right? Well initially I was thinking of using what I know from work - C# \", React.createElement(\"a\", {\n href: \"https://dotnet.microsoft.com/apps/aspnet/mvc\",\n class: \"blueLink\"\n }, \"ASP.NET MVC\"), \". But I figured it would be better if I learnt something new and all that server side setup and maintenance seemed like a pain. After a recommendation from a friend I found that GitHub offers \", React.createElement(_components.strong, null, \"free hosting\"), \" for websites running \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://pages.github.com/\"\n }, \"GitHub Pages\"), \". This seemed perfect for what I needed and no server side hassle! From GitHub Pages I was directed to \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/\",\n class: \"blueLink\"\n }, \"Jekyll\"), \". Jekyll is an amazing open source blogging tool, which among other things has inbuilt support for \", React.createElement(\"a\", {\n href: \"https://daringfireball.net/projects/markdown/\",\n class: \"blueLink\"\n }, \"Markdown\"), \" making writing blog posts a breeze[^1].\"), \"\\n\", React.createElement(_components.p, null, \"Here's an example of the JavaScript markdown which uses \", React.createElement(\"a\", {\n href: \"https://pypi.org/project/Pygments/\",\n class: \"blueLink\"\n }, \"Pygments\"), \":\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"(function() {\\r\\n console.log(\\\"Hello World! 😊\\\");\\r\\n})();\\n\")), \"\\n\", React.createElement(_components.p, null, \"Jekyll also has a great HTML templating through use of \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/docs/includes/\",\n class: \"blueLink\"\n }, \"includes\"), \" and \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/docs/step-by-step/04-layouts/\",\n class: \"blueLink\"\n }, \"layouts\"), \" which help keep your project well structured.\"), \"\\n\", React.createElement(_components.h2, null, \"Sass and Gulp\"), \"\\n\", React.createElement(_components.p, null, \"At work we predominantly use CSS libraries like \", React.createElement(\"a\", {\n href: \"https://getbootstrap.com/\",\n class: \"blueLink\"\n }, \"Bootstrap\"), \", but one thing I decided fairly early on was that I was going to develop all the CSS myself to improve my front-end skills. After a bit of online research I decided I was going to use the \", React.createElement(\"a\", {\n href: \"https://sass-lang.com/\",\n class: \"blueLink\"\n }, \"Sass\"), \" CSS templating language. Here's the Sass for those crazy blue links:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-scss\"\n }, \"$color--skyblue: #00c1c1;\\r\\n$color--white: #fff;\\r\\n\\r\\n%transition-duration {\\r\\n transition-duration: 0.5s;\\r\\n}\\r\\n\\r\\n.blueLink,\\r\\n%blueLink {\\r\\n color: $color--skyblue;\\r\\n text-decoration: none;\\r\\n background-image: linear-gradient(\\r\\n to top,\\r\\n $color--skyblue,\\r\\n $color--skyblue 50%,\\r\\n transparent 50%,\\r\\n transparent\\r\\n );\\r\\n background-position: 0% 0%;\\r\\n background-size: 100% 200%;\\r\\n @extend %transition-duration;\\r\\n\\r\\n &:hover {\\r\\n color: $color--white;\\r\\n background-position: 0 100%;\\r\\n }\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"Sass makes your CSS code simpler with things like variables \", React.createElement(_components.code, null, \"$color--skyblue\"), \", placeholder selectors \", React.createElement(_components.code, null, \"%transition-duration\"), \" and parent selectors \", React.createElement(_components.code, null, \"&:hover\"), \". Essentially Sass means you don't have to repeat yourself so often!\"), \"\\n\", React.createElement(_components.p, null, \"While investigating Sass I was directed to \", React.createElement(\"a\", {\n href: \"https://gulpjs.com/\",\n class: \"blueLink\"\n }, \"Gulp\"), \" a DevOps build tool. Gulp essentially allows you to automate command line tools for things like:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Compiling Sass files to CSS when they change.\"), \"\\n\", React.createElement(_components.li, null, \"Minifying JavaScript and CSS files.\"), \"\\n\", React.createElement(_components.li, null, \"Running a Jekyll build when a markdown file is updated.\"), \"\\n\", React.createElement(_components.li, null, \"Reloading your browser once a build is complete.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"This makes development a lot easier and faster. Here's an example of a gulp command that compiles a Sass file and minifies the outputed CSS:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"/**\\r\\n * Compile .scss files.\\r\\n */\\r\\ngulp.task(\\\"sass\\\", function() {\\r\\n return gulp\\r\\n .src(\\\"_scss/main.scss\\\")\\r\\n .pipe(sass().on(\\\"error\\\", sass.logError))\\r\\n .pipe(cssnano())\\r\\n .pipe(rename(\\\"main.min.css\\\"))\\r\\n .pipe(gulp.dest(\\\"assets/css/\\\"));\\r\\n});\\n\")), \"\\n\", React.createElement(_components.h2, null, \"Photos\"), \"\\n\", React.createElement(\"div\", {\n className: commonStyle.halfWidthContainer\n }, React.createElement(\"div\", {\n className: commonStyle.halfWidthLeft\n }, React.createElement(\"img\", {\n style: {\n width: \"100%\"\n },\n src: sunset,\n alt: \"sunset\"\n })), React.createElement(\"div\", {\n className: commonStyle.halfWidthRight\n }, React.createElement(\"p\", null, React.createElement(_components.p, null, \"One thing I thought I'd share on this blog is\\r\\nsome \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/Photos\"\n }, \"photos\"), \" I've\\r\\ntaken on my travels. In the future I'd like to develop that\\r\\narea into a gallery of some kind. The photos have been compressed\\r\\nusing \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://squoosh.app/\"\n }, \"Squoosh\"), \" making\\r\\nthem take up less space and load quickly (hopefully).\")))), \"\\n\", React.createElement(_components.h2, null, \"Conclusion\"), \"\\n\", React.createElement(_components.p, null, \"In fact creating this website was a lot easier than I imagined thanks to all the great freely available open source tools on the web. Now that I started writing about some of these tools I realised most of them probably need an entire post to be explained with any detail. So I might be doing some \\\"idiots guide to...\\\" posts in the near future. Anyhow hope you enjoyed my first post and are looking forward to the next instalment. 😏\"), \"\\n\", React.createElement(_components.p, null, \"[^1]: That's the plan anyway!\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-02-09-hello-world/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n","// extracted by mini-css-extract-plugin\nexport var halfWidthContainer = \"common-module--halfWidthContainer--10282\";\nexport var halfWidthLeft = \"common-module--halfWidthLeft--83707\";\nexport var halfWidthRight = \"common-module--halfWidthRight--3851a\";","export default __webpack_public_path__ + \"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg\";"],"names":["_createMdxContent","props","_components","Object","assign","p","h2","strong","pre","code","ul","li","_provideComponents","components","React","href","class","className","commonStyle","style","width","src","sunset","alt","wrapper","MDXLayout","PostTemplate","_ref","data","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","GATSBY_COMPILED_MDX","halfWidthContainer","halfWidthLeft","halfWidthRight"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js.map deleted file mode 100644 index 68a49a1..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js","mappings":"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","sources":["webpack://blog/./src/pages/posts/2019-02-09-hello-world/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js","webpack://blog/./src/pages/posts/common.module.css","webpack://blog/./static/photos/Sunset.jpg"],"sourcesContent":["/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport sunset from \"../../../../static/photos/Sunset.jpg\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n h2: \"h2\",\n strong: \"strong\",\n pre: \"pre\",\n code: \"code\",\n ul: \"ul\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I've finally shipped! After about a month of what seems like going backwards and forwards I've made my first post on my brand new website. I’m going to try and do at least one post a month, and I plan to keep them relatively short. I can’t promise they won’t end up longer though if I really get into it!\"), \"\\n\", React.createElement(_components.h2, null, \"Jekyll and GitHub Pages\"), \"\\n\", React.createElement(_components.p, null, \"So you want to know how I made this site right? Well initially I was thinking of using what I know from work - C# \", React.createElement(\"a\", {\n href: \"https://dotnet.microsoft.com/apps/aspnet/mvc\",\n class: \"blueLink\"\n }, \"ASP.NET MVC\"), \". But I figured it would be better if I learnt something new and all that server side setup and maintenance seemed like a pain. After a recommendation from a friend I found that GitHub offers \", React.createElement(_components.strong, null, \"free hosting\"), \" for websites running \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://pages.github.com/\"\n }, \"GitHub Pages\"), \". This seemed perfect for what I needed and no server side hassle! From GitHub Pages I was directed to \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/\",\n class: \"blueLink\"\n }, \"Jekyll\"), \". Jekyll is an amazing open source blogging tool, which among other things has inbuilt support for \", React.createElement(\"a\", {\n href: \"https://daringfireball.net/projects/markdown/\",\n class: \"blueLink\"\n }, \"Markdown\"), \" making writing blog posts a breeze[^1].\"), \"\\n\", React.createElement(_components.p, null, \"Here's an example of the JavaScript markdown which uses \", React.createElement(\"a\", {\n href: \"https://pypi.org/project/Pygments/\",\n class: \"blueLink\"\n }, \"Pygments\"), \":\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"(function() {\\r\\n console.log(\\\"Hello World! 😊\\\");\\r\\n})();\\n\")), \"\\n\", React.createElement(_components.p, null, \"Jekyll also has a great HTML templating through use of \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/docs/includes/\",\n class: \"blueLink\"\n }, \"includes\"), \" and \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/docs/step-by-step/04-layouts/\",\n class: \"blueLink\"\n }, \"layouts\"), \" which help keep your project well structured.\"), \"\\n\", React.createElement(_components.h2, null, \"Sass and Gulp\"), \"\\n\", React.createElement(_components.p, null, \"At work we predominantly use CSS libraries like \", React.createElement(\"a\", {\n href: \"https://getbootstrap.com/\",\n class: \"blueLink\"\n }, \"Bootstrap\"), \", but one thing I decided fairly early on was that I was going to develop all the CSS myself to improve my front-end skills. After a bit of online research I decided I was going to use the \", React.createElement(\"a\", {\n href: \"https://sass-lang.com/\",\n class: \"blueLink\"\n }, \"Sass\"), \" CSS templating language. Here's the Sass for those crazy blue links:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-scss\"\n }, \"$color--skyblue: #00c1c1;\\r\\n$color--white: #fff;\\r\\n\\r\\n%transition-duration {\\r\\n transition-duration: 0.5s;\\r\\n}\\r\\n\\r\\n.blueLink,\\r\\n%blueLink {\\r\\n color: $color--skyblue;\\r\\n text-decoration: none;\\r\\n background-image: linear-gradient(\\r\\n to top,\\r\\n $color--skyblue,\\r\\n $color--skyblue 50%,\\r\\n transparent 50%,\\r\\n transparent\\r\\n );\\r\\n background-position: 0% 0%;\\r\\n background-size: 100% 200%;\\r\\n @extend %transition-duration;\\r\\n\\r\\n &:hover {\\r\\n color: $color--white;\\r\\n background-position: 0 100%;\\r\\n }\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"Sass makes your CSS code simpler with things like variables \", React.createElement(_components.code, null, \"$color--skyblue\"), \", placeholder selectors \", React.createElement(_components.code, null, \"%transition-duration\"), \" and parent selectors \", React.createElement(_components.code, null, \"&:hover\"), \". Essentially Sass means you don't have to repeat yourself so often!\"), \"\\n\", React.createElement(_components.p, null, \"While investigating Sass I was directed to \", React.createElement(\"a\", {\n href: \"https://gulpjs.com/\",\n class: \"blueLink\"\n }, \"Gulp\"), \" a DevOps build tool. Gulp essentially allows you to automate command line tools for things like:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Compiling Sass files to CSS when they change.\"), \"\\n\", React.createElement(_components.li, null, \"Minifying JavaScript and CSS files.\"), \"\\n\", React.createElement(_components.li, null, \"Running a Jekyll build when a markdown file is updated.\"), \"\\n\", React.createElement(_components.li, null, \"Reloading your browser once a build is complete.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"This makes development a lot easier and faster. Here's an example of a gulp command that compiles a Sass file and minifies the outputed CSS:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"/**\\r\\n * Compile .scss files.\\r\\n */\\r\\ngulp.task(\\\"sass\\\", function() {\\r\\n return gulp\\r\\n .src(\\\"_scss/main.scss\\\")\\r\\n .pipe(sass().on(\\\"error\\\", sass.logError))\\r\\n .pipe(cssnano())\\r\\n .pipe(rename(\\\"main.min.css\\\"))\\r\\n .pipe(gulp.dest(\\\"assets/css/\\\"));\\r\\n});\\n\")), \"\\n\", React.createElement(_components.h2, null, \"Photos\"), \"\\n\", React.createElement(\"div\", {\n className: commonStyle.halfWidthContainer\n }, React.createElement(\"div\", {\n className: commonStyle.halfWidthLeft\n }, React.createElement(\"img\", {\n style: {\n width: \"100%\"\n },\n src: sunset,\n alt: \"sunset\"\n })), React.createElement(\"div\", {\n className: commonStyle.halfWidthRight\n }, React.createElement(\"p\", null, React.createElement(_components.p, null, \"One thing I thought I'd share on this blog is\\r\\nsome \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/Photos\"\n }, \"photos\"), \" I've\\r\\ntaken on my travels. In the future I'd like to develop that\\r\\narea into a gallery of some kind. The photos have been compressed\\r\\nusing \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://squoosh.app/\"\n }, \"Squoosh\"), \" making\\r\\nthem take up less space and load quickly (hopefully).\")))), \"\\n\", React.createElement(_components.h2, null, \"Conclusion\"), \"\\n\", React.createElement(_components.p, null, \"In fact creating this website was a lot easier than I imagined thanks to all the great freely available open source tools on the web. Now that I started writing about some of these tools I realised most of them probably need an entire post to be explained with any detail. So I might be doing some \\\"idiots guide to...\\\" posts in the near future. Anyhow hope you enjoyed my first post and are looking forward to the next instalment. 😏\"), \"\\n\", React.createElement(_components.p, null, \"[^1]: That's the plan anyway!\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-02-09-hello-world/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n","// extracted by mini-css-extract-plugin\nexport var halfWidthContainer = \"common-module--halfWidthContainer--10282\";\nexport var halfWidthLeft = \"common-module--halfWidthLeft--83707\";\nexport var halfWidthRight = \"common-module--halfWidthRight--3851a\";","export default __webpack_public_path__ + \"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg\";"],"names":["_createMdxContent","props","_components","Object","assign","p","h2","strong","pre","code","ul","li","_provideComponents","components","React","href","class","className","commonStyle","style","width","src","sunset","alt","wrapper","MDXLayout","PostTemplate","_ref","data","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX","halfWidthContainer","halfWidthLeft","halfWidthRight"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js deleted file mode 100644 index b5ed2f3..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[511],{5567:function(e,t,n){n.r(t);var a=n(1151),l=n(7294),r=n(9339),s=n(2906);function o(e){const t=Object.assign({p:"p",h2:"h2",strong:"strong",pre:"pre",code:"code",ul:"ul",li:"li"},(0,a.ah)(),e.components);return l.createElement(l.Fragment,null,l.createElement(t.p,null,"I've finally shipped! After about a month of what seems like going backwards and forwards I've made my first post on my brand new website. I’m going to try and do at least one post a month, and I plan to keep them relatively short. I can’t promise they won’t end up longer though if I really get into it!"),"\n",l.createElement(t.h2,null,"Jekyll and GitHub Pages"),"\n",l.createElement(t.p,null,"So you want to know how I made this site right? Well initially I was thinking of using what I know from work - C# ",l.createElement("a",{href:"https://dotnet.microsoft.com/apps/aspnet/mvc",class:"blueLink"},"ASP.NET MVC"),". But I figured it would be better if I learnt something new and all that server side setup and maintenance seemed like a pain. After a recommendation from a friend I found that GitHub offers ",l.createElement(t.strong,null,"free hosting")," for websites running ",l.createElement("a",{class:"blueLink",href:"https://pages.github.com/"},"GitHub Pages"),". This seemed perfect for what I needed and no server side hassle! From GitHub Pages I was directed to ",l.createElement("a",{href:"https://jekyllrb.com/",class:"blueLink"},"Jekyll"),". Jekyll is an amazing open source blogging tool, which among other things has inbuilt support for ",l.createElement("a",{href:"https://daringfireball.net/projects/markdown/",class:"blueLink"},"Markdown")," making writing blog posts a breeze[^1]."),"\n",l.createElement(t.p,null,"Here's an example of the JavaScript markdown which uses ",l.createElement("a",{href:"https://pypi.org/project/Pygments/",class:"blueLink"},"Pygments"),":"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-javascript"},'(function() {\r\n console.log("Hello World! 😊");\r\n})();\n')),"\n",l.createElement(t.p,null,"Jekyll also has a great HTML templating through use of ",l.createElement("a",{href:"https://jekyllrb.com/docs/includes/",class:"blueLink"},"includes")," and ",l.createElement("a",{href:"https://jekyllrb.com/docs/step-by-step/04-layouts/",class:"blueLink"},"layouts")," which help keep your project well structured."),"\n",l.createElement(t.h2,null,"Sass and Gulp"),"\n",l.createElement(t.p,null,"At work we predominantly use CSS libraries like ",l.createElement("a",{href:"https://getbootstrap.com/",class:"blueLink"},"Bootstrap"),", but one thing I decided fairly early on was that I was going to develop all the CSS myself to improve my front-end skills. After a bit of online research I decided I was going to use the ",l.createElement("a",{href:"https://sass-lang.com/",class:"blueLink"},"Sass")," CSS templating language. Here's the Sass for those crazy blue links:"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-scss"},"$color--skyblue: #00c1c1;\r\n$color--white: #fff;\r\n\r\n%transition-duration {\r\n transition-duration: 0.5s;\r\n}\r\n\r\n.blueLink,\r\n%blueLink {\r\n color: $color--skyblue;\r\n text-decoration: none;\r\n background-image: linear-gradient(\r\n to top,\r\n $color--skyblue,\r\n $color--skyblue 50%,\r\n transparent 50%,\r\n transparent\r\n );\r\n background-position: 0% 0%;\r\n background-size: 100% 200%;\r\n @extend %transition-duration;\r\n\r\n &:hover {\r\n color: $color--white;\r\n background-position: 0 100%;\r\n }\r\n}\n")),"\n",l.createElement(t.p,null,"Sass makes your CSS code simpler with things like variables ",l.createElement(t.code,null,"$color--skyblue"),", placeholder selectors ",l.createElement(t.code,null,"%transition-duration")," and parent selectors ",l.createElement(t.code,null,"&:hover"),". Essentially Sass means you don't have to repeat yourself so often!"),"\n",l.createElement(t.p,null,"While investigating Sass I was directed to ",l.createElement("a",{href:"https://gulpjs.com/",class:"blueLink"},"Gulp")," a DevOps build tool. Gulp essentially allows you to automate command line tools for things like:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Compiling Sass files to CSS when they change."),"\n",l.createElement(t.li,null,"Minifying JavaScript and CSS files."),"\n",l.createElement(t.li,null,"Running a Jekyll build when a markdown file is updated."),"\n",l.createElement(t.li,null,"Reloading your browser once a build is complete."),"\n"),"\n",l.createElement(t.p,null,"This makes development a lot easier and faster. Here's an example of a gulp command that compiles a Sass file and minifies the outputed CSS:"),"\n",l.createElement(t.pre,null,l.createElement(t.code,{className:"language-javascript"},'/**\r\n * Compile .scss files.\r\n */\r\ngulp.task("sass", function() {\r\n return gulp\r\n .src("_scss/main.scss")\r\n .pipe(sass().on("error", sass.logError))\r\n .pipe(cssnano())\r\n .pipe(rename("main.min.css"))\r\n .pipe(gulp.dest("assets/css/"));\r\n});\n')),"\n",l.createElement(t.h2,null,"Photos"),"\n",l.createElement("div",{className:s.rY},l.createElement("div",{className:s.U4},l.createElement("img",{style:{width:"100%"},src:r.Z,alt:"sunset"})),l.createElement("div",{className:s.y4},l.createElement("p",null,l.createElement(t.p,null,"One thing I thought I'd share on this blog is\r\nsome ",l.createElement("a",{class:"blueLink",href:"/Photos"},"photos")," I've\r\ntaken on my travels. In the future I'd like to develop that\r\narea into a gallery of some kind. The photos have been compressed\r\nusing ",l.createElement("a",{class:"blueLink",href:"https://squoosh.app/"},"Squoosh")," making\r\nthem take up less space and load quickly (hopefully).")))),"\n",l.createElement(t.h2,null,"Conclusion"),"\n",l.createElement(t.p,null,'In fact creating this website was a lot easier than I imagined thanks to all the great freely available open source tools on the web. Now that I started writing about some of these tools I realised most of them probably need an entire post to be explained with any detail. So I might be doing some "idiots guide to..." posts in the near future. Anyhow hope you enjoyed my first post and are looking forward to the next instalment. 😏'),"\n",l.createElement(t.p,null,"[^1]: That's the plan anyway!"))}t.default=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?l.createElement(t,e,l.createElement(o,e)):o(e)}},2821:function(e,t,n){n.r(t),n.d(t,{default:function(){return h}});var a=n(5567),l=n(7294),r=n(7025),s=n(1750),o=n(8013),i=n(5814),c=n(1151),u=n(8977);function m(e){let{data:{mdx:t},children:n}=e;const a={code:o.Z,inlineCode:i.Z},m=t;return l.createElement(r.Z,{page:"Post",post:m},l.createElement("div",{className:u.fI},l.createElement("div",{className:u.v_},l.createElement(s.Z,{post:m}),l.createElement(c.Zo,{components:a},n))))}function h(e){return l.createElement(m,e,l.createElement(a.default,e))}},2906:function(e,t,n){n.d(t,{U4:function(){return l},rY:function(){return a},y4:function(){return r}});var a="common-module--halfWidthContainer--10282",l="common-module--halfWidthLeft--83707",r="common-module--halfWidthRight--3851a"},9339:function(e,t,n){t.Z=n.p+"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg"}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js.map deleted file mode 100644 index 1fd66fc..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-be9f19332aaad51ab25f.js","mappings":"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","sources":["webpack://blog/./src/pages/posts/2019-02-09-hello-world/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js","webpack://blog/./src/pages/posts/common.module.css","webpack://blog/./static/photos/Sunset.jpg"],"sourcesContent":["/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport sunset from \"../../../../static/photos/Sunset.jpg\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n h2: \"h2\",\n strong: \"strong\",\n pre: \"pre\",\n code: \"code\",\n ul: \"ul\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I've finally shipped! After about a month of what seems like going backwards and forwards I've made my first post on my brand new website. I’m going to try and do at least one post a month, and I plan to keep them relatively short. I can’t promise they won’t end up longer though if I really get into it!\"), \"\\n\", React.createElement(_components.h2, null, \"Jekyll and GitHub Pages\"), \"\\n\", React.createElement(_components.p, null, \"So you want to know how I made this site right? Well initially I was thinking of using what I know from work - C# \", React.createElement(\"a\", {\n href: \"https://dotnet.microsoft.com/apps/aspnet/mvc\",\n class: \"blueLink\"\n }, \"ASP.NET MVC\"), \". But I figured it would be better if I learnt something new and all that server side setup and maintenance seemed like a pain. After a recommendation from a friend I found that GitHub offers \", React.createElement(_components.strong, null, \"free hosting\"), \" for websites running \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://pages.github.com/\"\n }, \"GitHub Pages\"), \". This seemed perfect for what I needed and no server side hassle! From GitHub Pages I was directed to \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/\",\n class: \"blueLink\"\n }, \"Jekyll\"), \". Jekyll is an amazing open source blogging tool, which among other things has inbuilt support for \", React.createElement(\"a\", {\n href: \"https://daringfireball.net/projects/markdown/\",\n class: \"blueLink\"\n }, \"Markdown\"), \" making writing blog posts a breeze[^1].\"), \"\\n\", React.createElement(_components.p, null, \"Here's an example of the JavaScript markdown which uses \", React.createElement(\"a\", {\n href: \"https://pypi.org/project/Pygments/\",\n class: \"blueLink\"\n }, \"Pygments\"), \":\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"(function() {\\r\\n console.log(\\\"Hello World! 😊\\\");\\r\\n})();\\n\")), \"\\n\", React.createElement(_components.p, null, \"Jekyll also has a great HTML templating through use of \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/docs/includes/\",\n class: \"blueLink\"\n }, \"includes\"), \" and \", React.createElement(\"a\", {\n href: \"https://jekyllrb.com/docs/step-by-step/04-layouts/\",\n class: \"blueLink\"\n }, \"layouts\"), \" which help keep your project well structured.\"), \"\\n\", React.createElement(_components.h2, null, \"Sass and Gulp\"), \"\\n\", React.createElement(_components.p, null, \"At work we predominantly use CSS libraries like \", React.createElement(\"a\", {\n href: \"https://getbootstrap.com/\",\n class: \"blueLink\"\n }, \"Bootstrap\"), \", but one thing I decided fairly early on was that I was going to develop all the CSS myself to improve my front-end skills. After a bit of online research I decided I was going to use the \", React.createElement(\"a\", {\n href: \"https://sass-lang.com/\",\n class: \"blueLink\"\n }, \"Sass\"), \" CSS templating language. Here's the Sass for those crazy blue links:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-scss\"\n }, \"$color--skyblue: #00c1c1;\\r\\n$color--white: #fff;\\r\\n\\r\\n%transition-duration {\\r\\n transition-duration: 0.5s;\\r\\n}\\r\\n\\r\\n.blueLink,\\r\\n%blueLink {\\r\\n color: $color--skyblue;\\r\\n text-decoration: none;\\r\\n background-image: linear-gradient(\\r\\n to top,\\r\\n $color--skyblue,\\r\\n $color--skyblue 50%,\\r\\n transparent 50%,\\r\\n transparent\\r\\n );\\r\\n background-position: 0% 0%;\\r\\n background-size: 100% 200%;\\r\\n @extend %transition-duration;\\r\\n\\r\\n &:hover {\\r\\n color: $color--white;\\r\\n background-position: 0 100%;\\r\\n }\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"Sass makes your CSS code simpler with things like variables \", React.createElement(_components.code, null, \"$color--skyblue\"), \", placeholder selectors \", React.createElement(_components.code, null, \"%transition-duration\"), \" and parent selectors \", React.createElement(_components.code, null, \"&:hover\"), \". Essentially Sass means you don't have to repeat yourself so often!\"), \"\\n\", React.createElement(_components.p, null, \"While investigating Sass I was directed to \", React.createElement(\"a\", {\n href: \"https://gulpjs.com/\",\n class: \"blueLink\"\n }, \"Gulp\"), \" a DevOps build tool. Gulp essentially allows you to automate command line tools for things like:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Compiling Sass files to CSS when they change.\"), \"\\n\", React.createElement(_components.li, null, \"Minifying JavaScript and CSS files.\"), \"\\n\", React.createElement(_components.li, null, \"Running a Jekyll build when a markdown file is updated.\"), \"\\n\", React.createElement(_components.li, null, \"Reloading your browser once a build is complete.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"This makes development a lot easier and faster. Here's an example of a gulp command that compiles a Sass file and minifies the outputed CSS:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"/**\\r\\n * Compile .scss files.\\r\\n */\\r\\ngulp.task(\\\"sass\\\", function() {\\r\\n return gulp\\r\\n .src(\\\"_scss/main.scss\\\")\\r\\n .pipe(sass().on(\\\"error\\\", sass.logError))\\r\\n .pipe(cssnano())\\r\\n .pipe(rename(\\\"main.min.css\\\"))\\r\\n .pipe(gulp.dest(\\\"assets/css/\\\"));\\r\\n});\\n\")), \"\\n\", React.createElement(_components.h2, null, \"Photos\"), \"\\n\", React.createElement(\"div\", {\n className: commonStyle.halfWidthContainer\n }, React.createElement(\"div\", {\n className: commonStyle.halfWidthLeft\n }, React.createElement(\"img\", {\n style: {\n width: \"100%\"\n },\n src: sunset,\n alt: \"sunset\"\n })), React.createElement(\"div\", {\n className: commonStyle.halfWidthRight\n }, React.createElement(\"p\", null, React.createElement(_components.p, null, \"One thing I thought I'd share on this blog is\\r\\nsome \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/Photos\"\n }, \"photos\"), \" I've\\r\\ntaken on my travels. In the future I'd like to develop that\\r\\narea into a gallery of some kind. The photos have been compressed\\r\\nusing \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://squoosh.app/\"\n }, \"Squoosh\"), \" making\\r\\nthem take up less space and load quickly (hopefully).\")))), \"\\n\", React.createElement(_components.h2, null, \"Conclusion\"), \"\\n\", React.createElement(_components.p, null, \"In fact creating this website was a lot easier than I imagined thanks to all the great freely available open source tools on the web. Now that I started writing about some of these tools I realised most of them probably need an entire post to be explained with any detail. So I might be doing some \\\"idiots guide to...\\\" posts in the near future. Anyhow hope you enjoyed my first post and are looking forward to the next instalment. 😏\"), \"\\n\", React.createElement(_components.p, null, \"[^1]: That's the plan anyway!\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-02-09-hello-world/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n","// extracted by mini-css-extract-plugin\nexport var halfWidthContainer = \"common-module--halfWidthContainer--10282\";\nexport var halfWidthLeft = \"common-module--halfWidthLeft--83707\";\nexport var halfWidthRight = \"common-module--halfWidthRight--3851a\";","export default __webpack_public_path__ + \"static/Sunset-c8281b903a04016037eaaa62ec1600a9.jpg\";"],"names":["_createMdxContent","props","_components","Object","assign","p","h2","strong","pre","code","ul","li","_provideComponents","components","React","href","class","className","commonStyle","style","width","src","sunset","alt","wrapper","MDXLayout","PostTemplate","_ref","data","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX","halfWidthContainer","halfWidthLeft","halfWidthRight"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js similarity index 92% rename from component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js rename to component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js index 48f5af4..4d78cdb 100644 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[342],{9255:function(e,n,t){t.r(n),t.d(n,{default:function(){return h}});var r=t(1151),a=t(7294),o=t.p+"static/cloudImage-87f1914e207807a93c4e80ec41197865.jpg",l="style-module--displayBlock--24073",i="style-module--displayHidden--bb185",s="style-module--inputControl--78869";function c(e,n,t,r,a,o,l){for(let i=0;i0&&n0))continue;let r=0,d=0;for(let a=0;a0&&c0&&(r+=t[l][c],d+=1)}t[e][n]+=r/d+l*(2*Math.random()-1)}}}var d=()=>{const e=(0,a.useRef)(),{0:n,1:t}=(0,a.useState)("#3c69ff"),{0:r,1:d}=(0,a.useState)("#ffffff"),{0:m,1:h}=(0,a.useState)(!1),f=Math.pow(2,9)+1;return a.createElement("div",{className:"style-module--container--889be"},a.createElement("canvas",{ref:e,className:m?l:i}),a.createElement("img",{className:m?i:l,src:o,alt:"cloud"}),a.createElement("div",{className:"style-module--controls--02552"},a.createElement("input",{className:s,type:"color",value:n,onChange:e=>t(e.target.value)}),a.createElement("input",{className:s,type:"color",value:r,onChange:e=>d(e.target.value)}),a.createElement("button",{onClick:t=>{const a=function(e){const n=function(e,n,t){const r=[];for(let a=0;a1;){const o=Math.round(t/2);let l,i;c(l,i,n,r,t,o,a),u(l,i,n,r,t,o,a,e),t=o,r*=2,a/=2}for(let o=0;o1&&(n[o][t]=1);return n}(f);!function(e,n,t,r){n.current.width=e.length,n.current.height=e.length;const a=n.current.getContext("2d"),o=a.getImageData(0,0,e.length,e.length),l=function(e){const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null}(t);for(let i=0;i 1) {\r\n var sideo2 = Math.round(side / 2);\r\n var x0, x1, y0, y1, xc, yc, tot, ntot, dx, dy, xs, ys;\r\n var diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\r\n // Diamond step:\r\n for (var ix = 0; ix < nSq; ix++) {\r\n for (var iy = 0; iy < nSq; iy++) {\r\n x0 = ix * side;\r\n x1 = (ix + 1) * side;\r\n y0 = iy * side;\r\n y1 = (iy + 1) * side;\r\n xc = x0 + sideo2;\r\n yc = y0 + sideo2;\r\n // Set this pixel to the mean of its "diamond" neighbours plus\r\n // a random offset.\r\n arr[xc][yc] =\r\n (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\r\n arr[xc][yc] += f * (2 * Math.random() - 1);\r\n }\r\n }\r\n\r\n //Square step:\r\n for (var ix = 0; ix < 2 * nSq + 1; ix++) {\r\n xc = sideo2 * ix;\r\n for (var iy = 0; iy < 2 * nSq + 1; iy++) {\r\n yc = side * iy + sideo2 * (1 - (ix % 2));\r\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\r\n continue;\r\n }\r\n tot = 0.0;\r\n ntot = 0;\r\n // Set this pixel to the mean of its "square" neighbours plus\r\n // a random offset. At the edges, it has only three neighbours.\r\n for (var ii = 0; ii < diff.length; ii++) {\r\n dx = diff[ii][0];\r\n dy = diff[ii][1];\r\n xs = xc + dx * sideo2;\r\n ys = yc + dy * sideo2;\r\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\r\n continue;\r\n } else {\r\n tot += arr[xs][ys];\r\n ntot += 1;\r\n }\r\n }\r\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\r\n }\r\n }\r\n side = sideo2;\r\n nSq = nSq * 2;\r\n f = f / 2;\r\n }\r\n return arr;\r\n}\n')),"\n",a.createElement(n.p,null,"I've packaged the DSA code up into a easy to use tool with colour selectors below. This code:"),"\n",a.createElement(n.ol,null,"\n",a.createElement(n.li,null,"Runs the DSA, for ",a.createElement(n.code,null,"n = 9"),"."),"\n",a.createElement(n.li,null,"Scales the range from ",a.createElement(n.code,null,"[-1, +1]")," to ",a.createElement(n.code,null,"[0, +1]"),"."),"\n",a.createElement(n.li,null,"Creates a hidden ",a.createElement("a",{href:"https://www.w3schools.com/graphics/canvas_intro.asp",class:"blueLink"},"Canvas")," of size ",a.createElement(n.code,null,"N = 2^(n+1)"),"."),"\n",a.createElement(n.li,null,"Adds pixels to the Canvas with ",a.createElement("a",{href:"https://en.wikipedia.org/wiki/RGBA_color_space",class:"blueLink"},"RGBA")," values scaled by the DSA output."),"\n",a.createElement(n.li,null,"Converts the canvas to an image and displays it on the screen."),"\n"),"\n",a.createElement(n.p,null,'Just hit "Reload" below and you\'ll have your very own cloud image!'),"\n",a.createElement(d),"\n",a.createElement(n.p,null,"The full code for this is available on my ",a.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),". If you want a bigger image just increase ",a.createElement(n.code,null,"n"),". Please bear in mind I've found ",a.createElement(n.code,null,"n > 11")," tends to give my laptop a hard time and I haven't tested this on mobile so be careful (wouldn't want your browser to crash!)."))}var h=function(e){void 0===e&&(e={});const{wrapper:n}=Object.assign({},(0,r.ah)(),e.components);return n?a.createElement(n,e,a.createElement(m,e)):m(e)}},5741:function(e,n,t){t.r(n),t.d(n,{default:function(){return m}});var r=t(9255),a=t(7294),o=t(7025),l=t(1750),i=t(8013),s=t(5814),c=t(1151),u=t(8977);function d(e){let{data:{mdx:n},children:t}=e;const r={code:i.Z,inlineCode:s.Z},d=n;return a.createElement(o.Z,{page:"Post",post:d},a.createElement("div",{className:u.fI},a.createElement("div",{className:u.v_},a.createElement(l.Z,{post:d}),a.createElement(c.Zo,{components:r},t))))}function m(e){return a.createElement(d,e,a.createElement(r.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js.map \ No newline at end of file +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[342],{9255:function(e,n,t){t.r(n),t.d(n,{default:function(){return h}});var r=t(1151),a=t(7294),o=t.p+"static/cloudImage-87f1914e207807a93c4e80ec41197865.jpg",l="style-module--displayBlock--24073",i="style-module--displayHidden--bb185",s="style-module--inputControl--78869";function c(e,n,t,r,a,o,l){for(let i=0;i0&&n0))continue;let r=0,d=0;for(let a=0;a0&&c0&&(r+=t[l][c],d+=1)}t[e][n]+=r/d+l*(2*Math.random()-1)}}}var d=()=>{const e=(0,a.useRef)(),{0:n,1:t}=(0,a.useState)("#3c69ff"),{0:r,1:d}=(0,a.useState)("#ffffff"),{0:m,1:h}=(0,a.useState)(!1),f=Math.pow(2,9)+1;return a.createElement("div",{className:"style-module--container--889be"},a.createElement("canvas",{ref:e,className:m?l:i}),a.createElement("img",{className:m?i:l,src:o,alt:"cloud"}),a.createElement("div",{className:"style-module--controls--02552"},a.createElement("input",{className:s,type:"color",value:n,onChange:e=>t(e.target.value)}),a.createElement("input",{className:s,type:"color",value:r,onChange:e=>d(e.target.value)}),a.createElement("button",{onClick:t=>{const a=function(e){const n=function(e,n,t){const r=[];for(let a=0;a1;){const o=Math.round(t/2);let l,i;c(l,i,n,r,t,o,a),u(l,i,n,r,t,o,a,e),t=o,r*=2,a/=2}for(let o=0;o1&&(n[o][t]=1);return n}(f);!function(e,n,t,r){n.current.width=e.length,n.current.height=e.length;const a=n.current.getContext("2d"),o=a.getImageData(0,0,e.length,e.length),l=function(e){const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null}(t);for(let i=0;i 1) {\r\n var sideo2 = Math.round(side / 2);\r\n var x0, x1, y0, y1, xc, yc, tot, ntot, dx, dy, xs, ys;\r\n var diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\r\n // Diamond step:\r\n for (var ix = 0; ix < nSq; ix++) {\r\n for (var iy = 0; iy < nSq; iy++) {\r\n x0 = ix * side;\r\n x1 = (ix + 1) * side;\r\n y0 = iy * side;\r\n y1 = (iy + 1) * side;\r\n xc = x0 + sideo2;\r\n yc = y0 + sideo2;\r\n // Set this pixel to the mean of its "diamond" neighbours plus\r\n // a random offset.\r\n arr[xc][yc] =\r\n (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\r\n arr[xc][yc] += f * (2 * Math.random() - 1);\r\n }\r\n }\r\n\r\n //Square step:\r\n for (var ix = 0; ix < 2 * nSq + 1; ix++) {\r\n xc = sideo2 * ix;\r\n for (var iy = 0; iy < 2 * nSq + 1; iy++) {\r\n yc = side * iy + sideo2 * (1 - (ix % 2));\r\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\r\n continue;\r\n }\r\n tot = 0.0;\r\n ntot = 0;\r\n // Set this pixel to the mean of its "square" neighbours plus\r\n // a random offset. At the edges, it has only three neighbours.\r\n for (var ii = 0; ii < diff.length; ii++) {\r\n dx = diff[ii][0];\r\n dy = diff[ii][1];\r\n xs = xc + dx * sideo2;\r\n ys = yc + dy * sideo2;\r\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\r\n continue;\r\n } else {\r\n tot += arr[xs][ys];\r\n ntot += 1;\r\n }\r\n }\r\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\r\n }\r\n }\r\n side = sideo2;\r\n nSq = nSq * 2;\r\n f = f / 2;\r\n }\r\n return arr;\r\n}\n')),"\n",a.createElement(n.p,null,"I've packaged the DSA code up into a easy to use tool with colour selectors below. This code:"),"\n",a.createElement(n.ol,null,"\n",a.createElement(n.li,null,"Runs the DSA, for ",a.createElement(n.code,null,"n = 9"),"."),"\n",a.createElement(n.li,null,"Scales the range from ",a.createElement(n.code,null,"[-1, +1]")," to ",a.createElement(n.code,null,"[0, +1]"),"."),"\n",a.createElement(n.li,null,"Creates a hidden ",a.createElement("a",{href:"https://www.w3schools.com/graphics/canvas_intro.asp",class:"blueLink"},"Canvas")," of size ",a.createElement(n.code,null,"N = 2^(n+1)"),"."),"\n",a.createElement(n.li,null,"Adds pixels to the Canvas with ",a.createElement("a",{href:"https://en.wikipedia.org/wiki/RGBA_color_space",class:"blueLink"},"RGBA")," values scaled by the DSA output."),"\n",a.createElement(n.li,null,"Converts the canvas to an image and displays it on the screen."),"\n"),"\n",a.createElement(n.p,null,'Just hit "Reload" below and you\'ll have your very own cloud image!'),"\n",a.createElement(d),"\n",a.createElement(n.p,null,"The full code for this is available on my ",a.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),". If you want a bigger image just increase ",a.createElement(n.code,null,"n"),". Please bear in mind I've found ",a.createElement(n.code,null,"n > 11")," tends to give my laptop a hard time and I haven't tested this on mobile so be careful (wouldn't want your browser to crash!)."))}var h=function(e){void 0===e&&(e={});const{wrapper:n}=Object.assign({},(0,r.ah)(),e.components);return n?a.createElement(n,e,a.createElement(m,e)):m(e)}},5741:function(e,n,t){t.r(n),t.d(n,{Head:function(){return h},default:function(){return f}});var r=t(9255),a=t(7294),o=t(3306),l=t(4527),i=t(1750),s=t(8013),c=t(5814),u=t(1151),d=t(8977);const m=e=>{let{data:{mdx:n},children:t}=e;const r={code:s.Z,inlineCode:c.Z},o=n;return a.createElement(l.Z,null,a.createElement("div",{className:d.fI},a.createElement("div",{className:d.v_},a.createElement(i.Z,{post:o}),a.createElement(u.Zo,{components:r},t))))},h=e=>{let{data:{mdx:n}}=e;const t=n;return a.createElement(o.Z,{page:"Post",post:t})};function f(e){return a.createElement(m,e,a.createElement(r.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js.map new file mode 100644 index 0000000..5339a51 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js","mappings":"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","sources":["webpack://blog/./static/cloudImage.jpg","webpack://blog/./src/components/posts/dsaTool/style.module.css","webpack://blog/./src/components/posts/dsaTool/dsaTool.js","webpack://blog/./src/pages/posts/2019-02-20-dsa-cloud-images/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/cloudImage-87f1914e207807a93c4e80ec41197865.jpg\";","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--889be\";\nexport var controls = \"style-module--controls--02552\";\nexport var displayBlock = \"style-module--displayBlock--24073\";\nexport var displayHidden = \"style-module--displayHidden--bb185\";\nexport var inputControl = \"style-module--inputControl--78869\";","import React, { useState, useRef } from \"react\";\r\nimport cloudImage from \"../../../../static/cloudImage.jpg\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst DSATool = () => {\r\n const canvas = useRef();\r\n const [color1, setColor1] = useState(\"#3c69ff\");\r\n const [color2, setColor2] = useState(\"#ffffff\");\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n const n = 9;\r\n const N = Math.pow(2, n) + 1;\r\n\r\n const reloadClickHandler = event => {\r\n const arr = runDSA(N);\r\n printToCanvas(arr, canvas, color1, color2);\r\n setDefaultImageHidden(true);\r\n event.preventDefault();\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n setColor1(e.target.value)}\r\n />\r\n setColor2(e.target.value)}\r\n />\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction runDSA(N) {\r\n // Initialise the array with random numbers at its corners\r\n const arr = create2Darray(N, N, 0);\r\n arr[0][0] = 2 * Math.random() - 1;\r\n arr[0][N - 1] = 2 * Math.random() - 1;\r\n arr[N - 1][0] = 2 * Math.random() - 1;\r\n arr[N - 1][N - 1] = 2 * Math.random() - 1;\r\n\r\n let side = N - 1;\r\n let nSq = 1; // Number of Squares.\r\n let f = 1.0; // f scales the random numbers at each stage of the algorithm\r\n while (side > 1) {\r\n const sideo2 = Math.round(side / 2);\r\n let xc, yc;\r\n // Diamond step:\r\n diamondStep(xc, yc, arr, nSq, side, sideo2, f);\r\n //Square step:\r\n squareStep(xc, yc, arr, nSq, side, sideo2, f, N);\r\n side = sideo2;\r\n nSq = nSq * 2;\r\n f = f / 2;\r\n }\r\n\r\n // Scale range to 0 to +1 and cut off outliers.\r\n for (let ix = 0; ix < N; ix++) {\r\n for (let iy = 0; iy < N; iy++) {\r\n arr[ix][iy] = (arr[ix][iy] + 1.0) / 2.0;\r\n if (arr[ix][iy] < 0.0) {\r\n arr[ix][iy] = 0;\r\n }\r\n if (arr[ix][iy] > 1.0) {\r\n arr[ix][iy] = 1.0;\r\n }\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\nfunction diamondStep(xc, yc, arr, nSq, side, sideo2, f) {\r\n for (let ix = 0; ix < nSq; ix++) {\r\n for (let iy = 0; iy < nSq; iy++) {\r\n const x0 = ix * side;\r\n const x1 = (ix + 1) * side;\r\n const y0 = iy * side;\r\n const y1 = (iy + 1) * side;\r\n xc = x0 + sideo2;\r\n yc = y0 + sideo2;\r\n // Set this pixel to the mean of its \"diamond\" neighbours plus\r\n // a random offset.\r\n arr[xc][yc] = (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\r\n arr[xc][yc] += f * (2 * Math.random() - 1);\r\n }\r\n }\r\n}\r\n\r\nfunction squareStep(xc, yc, arr, nSq, side, sideo2, f, N) {\r\n const diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\r\n for (let ix = 0; ix < 2 * nSq + 1; ix++) {\r\n xc = sideo2 * ix;\r\n for (let iy = 0; iy < 2 * nSq + 1; iy++) {\r\n yc = side * iy + sideo2 * (1 - (ix % 2));\r\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\r\n continue;\r\n }\r\n let tot = 0.0;\r\n let ntot = 0;\r\n // Set this pixel to the mean of its \"square\" neighbours plus\r\n // a random offset. At the edges, it has only three neighbours.\r\n for (let ii = 0; ii < diff.length; ii++) {\r\n const dx = diff[ii][0];\r\n const dy = diff[ii][1];\r\n const xs = xc + dx * sideo2;\r\n const ys = yc + dy * sideo2;\r\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\r\n continue;\r\n } else {\r\n tot += arr[xs][ys];\r\n ntot += 1;\r\n }\r\n }\r\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\r\n }\r\n }\r\n}\r\n\r\n// Creates a 2D array, initialised to value\r\nfunction create2Darray(w, h, value) {\r\n const arr = [];\r\n for (let x = 0; x < w; x++) {\r\n arr[x] = [];\r\n }\r\n for (let x = 0; x < w; x++) {\r\n for (let y = 0; y < h; y++) {\r\n arr[x][y] = value;\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\n//Print array to screen:\r\nfunction printToCanvas(arr, canvas, color1, color2) {\r\n canvas.current.width = arr.length;\r\n canvas.current.height = arr.length;\r\n const ctx = canvas.current.getContext(\"2d\");\r\n\r\n const myImageData = ctx.getImageData(0, 0, arr.length, arr.length);\r\n const rgb = hexToRgb(color1);\r\n for (let x = 0; x < arr.length; x++) {\r\n for (let y = 0; y < arr.length; y++) {\r\n const index = (x + y * arr.length) * 4;\r\n myImageData.data[index + 0] = rgb.r * arr[x][y]; //r\r\n myImageData.data[index + 1] = rgb.g * arr[x][y]; // g\r\n myImageData.data[index + 2] = rgb.b * arr[x][y]; //b\r\n myImageData.data[index + 3] = 255 * arr[x][y]; //a\r\n }\r\n }\r\n\r\n ctx.fillStyle = color2;\r\n ctx.fillRect(0, 0, canvas.current.width, canvas.current.height);\r\n ctx.globalCompositeOperation = \"source-atop\";\r\n createImageBitmap(myImageData).then(function(imgBitmap) {\r\n ctx.drawImage(imgBitmap, 0, 0);\r\n });\r\n}\r\n\r\nfunction hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n}\r\n\r\nexport default DSATool;","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport DSATool from \"../../../components/posts/dsaTool/dsaTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n code: \"code\",\n pre: \"pre\",\n ol: \"ol\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"The \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Diamond-square_algorithm\",\n class: \"blueLink\"\n }, \"Diamond-square algorithm (DSA)\"), \" is a popular method used to generate realistic \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Heightmap\",\n class: \"blueLink\"\n }, \"heightmaps\"), \" which resemble clouds, terrain and/or plasma. The JavaScript code below can be used to generate square cloud images of size \", React.createElement(_components.code, null, \"N = 2^(n+1)\"), \". The images make great unique backgrounds (I have one on my phone!) and look rather pretty in my opinion.\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var n = 9;\\r\\nvar N = Math.pow(2, n) + 1;\\r\\nvar arr;\\r\\n\\r\\nfunction runDSA(N) {\\r\\n // Initialise the array with random numbers at its corners\\r\\n arr = create2Darray(N, N);\\r\\n arr[0][0] = 2 * Math.random() - 1;\\r\\n arr[0][N - 1] = 2 * Math.random() - 1;\\r\\n arr[N - 1][0] = 2 * Math.random() - 1;\\r\\n arr[N - 1][N - 1] = 2 * Math.random() - 1;\\r\\n\\r\\n var side = N - 1;\\r\\n var nSq = 1; // Number of Squares.\\r\\n var f = 1.0; // f scales the random numbers at each stage of the algorithm\\r\\n while (side > 1) {\\r\\n var sideo2 = Math.round(side / 2);\\r\\n var x0, x1, y0, y1, xc, yc, tot, ntot, dx, dy, xs, ys;\\r\\n var diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\\r\\n // Diamond step:\\r\\n for (var ix = 0; ix < nSq; ix++) {\\r\\n for (var iy = 0; iy < nSq; iy++) {\\r\\n x0 = ix * side;\\r\\n x1 = (ix + 1) * side;\\r\\n y0 = iy * side;\\r\\n y1 = (iy + 1) * side;\\r\\n xc = x0 + sideo2;\\r\\n yc = y0 + sideo2;\\r\\n // Set this pixel to the mean of its \\\"diamond\\\" neighbours plus\\r\\n // a random offset.\\r\\n arr[xc][yc] =\\r\\n (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\\r\\n arr[xc][yc] += f * (2 * Math.random() - 1);\\r\\n }\\r\\n }\\r\\n\\r\\n //Square step:\\r\\n for (var ix = 0; ix < 2 * nSq + 1; ix++) {\\r\\n xc = sideo2 * ix;\\r\\n for (var iy = 0; iy < 2 * nSq + 1; iy++) {\\r\\n yc = side * iy + sideo2 * (1 - (ix % 2));\\r\\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\\r\\n continue;\\r\\n }\\r\\n tot = 0.0;\\r\\n ntot = 0;\\r\\n // Set this pixel to the mean of its \\\"square\\\" neighbours plus\\r\\n // a random offset. At the edges, it has only three neighbours.\\r\\n for (var ii = 0; ii < diff.length; ii++) {\\r\\n dx = diff[ii][0];\\r\\n dy = diff[ii][1];\\r\\n xs = xc + dx * sideo2;\\r\\n ys = yc + dy * sideo2;\\r\\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\\r\\n continue;\\r\\n } else {\\r\\n tot += arr[xs][ys];\\r\\n ntot += 1;\\r\\n }\\r\\n }\\r\\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\\r\\n }\\r\\n }\\r\\n side = sideo2;\\r\\n nSq = nSq * 2;\\r\\n f = f / 2;\\r\\n }\\r\\n return arr;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"I've packaged the DSA code up into a easy to use tool with colour selectors below. This code:\"), \"\\n\", React.createElement(_components.ol, null, \"\\n\", React.createElement(_components.li, null, \"Runs the DSA, for \", React.createElement(_components.code, null, \"n = 9\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Scales the range from \", React.createElement(_components.code, null, \"[-1, +1]\"), \" to \", React.createElement(_components.code, null, \"[0, +1]\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Creates a hidden \", React.createElement(\"a\", {\n href: \"https://www.w3schools.com/graphics/canvas_intro.asp\",\n class: \"blueLink\"\n }, \"Canvas\"), \" of size \", React.createElement(_components.code, null, \"N = 2^(n+1)\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Adds pixels to the Canvas with \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/RGBA_color_space\",\n class: \"blueLink\"\n }, \"RGBA\"), \" values scaled by the DSA output.\"), \"\\n\", React.createElement(_components.li, null, \"Converts the canvas to an image and displays it on the screen.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"Just hit \\\"Reload\\\" below and you'll have your very own cloud image!\"), \"\\n\", React.createElement(DSATool), \"\\n\", React.createElement(_components.p, null, \"The full code for this is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \". If you want a bigger image just increase \", React.createElement(_components.code, null, \"n\"), \". Please bear in mind I've found \", React.createElement(_components.code, null, \"n > 11\"), \" tends to give my laptop a hard time and I haven't tested this on mobile so be careful (wouldn't want your browser to crash!).\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-02-20-dsa-cloud-images/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["displayBlock","displayHidden","inputControl","diamondStep","xc","yc","arr","nSq","side","sideo2","f","ix","iy","x0","x1","y0","y1","Math","random","squareStep","N","diff","tot","ntot","ii","length","xs","ys","DSATool","canvas","useRef","color1","setColor1","useState","color2","setColor2","defaultImageHidden","setDefaultImageHidden","pow","React","className","ref","style","src","cloudImage","alt","type","value","onChange","e","target","onClick","event","w","h","x","y","create2Darray","round","runDSA","current","width","height","ctx","getContext","myImageData","getImageData","rgb","hex","result","exec","r","parseInt","g","b","hexToRgb","index","data","fillStyle","fillRect","globalCompositeOperation","createImageBitmap","then","imgBitmap","drawImage","printToCanvas","preventDefault","_createMdxContent","props","_components","Object","assign","p","code","pre","ol","li","_provideComponents","components","href","class","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js.map deleted file mode 100644 index 437e701..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-4471dcdcd409786da3e6.js","mappings":"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","sources":["webpack://blog/./static/cloudImage.jpg","webpack://blog/./src/components/posts/dsaTool/style.module.css","webpack://blog/./src/components/posts/dsaTool/dsaTool.js","webpack://blog/./src/pages/posts/2019-02-20-dsa-cloud-images/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/cloudImage-87f1914e207807a93c4e80ec41197865.jpg\";","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--889be\";\nexport var controls = \"style-module--controls--02552\";\nexport var displayBlock = \"style-module--displayBlock--24073\";\nexport var displayHidden = \"style-module--displayHidden--bb185\";\nexport var inputControl = \"style-module--inputControl--78869\";","import React, { useState, useRef } from \"react\";\r\nimport cloudImage from \"../../../../static/cloudImage.jpg\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst DSATool = () => {\r\n const canvas = useRef();\r\n const [color1, setColor1] = useState(\"#3c69ff\");\r\n const [color2, setColor2] = useState(\"#ffffff\");\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n const n = 9;\r\n const N = Math.pow(2, n) + 1;\r\n\r\n const reloadClickHandler = event => {\r\n const arr = runDSA(N);\r\n printToCanvas(arr, canvas, color1, color2);\r\n setDefaultImageHidden(true);\r\n event.preventDefault();\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n setColor1(e.target.value)}\r\n />\r\n setColor2(e.target.value)}\r\n />\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction runDSA(N) {\r\n // Initialise the array with random numbers at its corners\r\n const arr = create2Darray(N, N, 0);\r\n arr[0][0] = 2 * Math.random() - 1;\r\n arr[0][N - 1] = 2 * Math.random() - 1;\r\n arr[N - 1][0] = 2 * Math.random() - 1;\r\n arr[N - 1][N - 1] = 2 * Math.random() - 1;\r\n\r\n let side = N - 1;\r\n let nSq = 1; // Number of Squares.\r\n let f = 1.0; // f scales the random numbers at each stage of the algorithm\r\n while (side > 1) {\r\n const sideo2 = Math.round(side / 2);\r\n let xc, yc;\r\n // Diamond step:\r\n diamondStep(xc, yc, arr, nSq, side, sideo2, f);\r\n //Square step:\r\n squareStep(xc, yc, arr, nSq, side, sideo2, f, N);\r\n side = sideo2;\r\n nSq = nSq * 2;\r\n f = f / 2;\r\n }\r\n\r\n // Scale range to 0 to +1 and cut off outliers.\r\n for (let ix = 0; ix < N; ix++) {\r\n for (let iy = 0; iy < N; iy++) {\r\n arr[ix][iy] = (arr[ix][iy] + 1.0) / 2.0;\r\n if (arr[ix][iy] < 0.0) {\r\n arr[ix][iy] = 0;\r\n }\r\n if (arr[ix][iy] > 1.0) {\r\n arr[ix][iy] = 1.0;\r\n }\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\nfunction diamondStep(xc, yc, arr, nSq, side, sideo2, f) {\r\n for (let ix = 0; ix < nSq; ix++) {\r\n for (let iy = 0; iy < nSq; iy++) {\r\n const x0 = ix * side;\r\n const x1 = (ix + 1) * side;\r\n const y0 = iy * side;\r\n const y1 = (iy + 1) * side;\r\n xc = x0 + sideo2;\r\n yc = y0 + sideo2;\r\n // Set this pixel to the mean of its \"diamond\" neighbours plus\r\n // a random offset.\r\n arr[xc][yc] = (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\r\n arr[xc][yc] += f * (2 * Math.random() - 1);\r\n }\r\n }\r\n}\r\n\r\nfunction squareStep(xc, yc, arr, nSq, side, sideo2, f, N) {\r\n const diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\r\n for (let ix = 0; ix < 2 * nSq + 1; ix++) {\r\n xc = sideo2 * ix;\r\n for (let iy = 0; iy < 2 * nSq + 1; iy++) {\r\n yc = side * iy + sideo2 * (1 - (ix % 2));\r\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\r\n continue;\r\n }\r\n let tot = 0.0;\r\n let ntot = 0;\r\n // Set this pixel to the mean of its \"square\" neighbours plus\r\n // a random offset. At the edges, it has only three neighbours.\r\n for (let ii = 0; ii < diff.length; ii++) {\r\n const dx = diff[ii][0];\r\n const dy = diff[ii][1];\r\n const xs = xc + dx * sideo2;\r\n const ys = yc + dy * sideo2;\r\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\r\n continue;\r\n } else {\r\n tot += arr[xs][ys];\r\n ntot += 1;\r\n }\r\n }\r\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\r\n }\r\n }\r\n}\r\n\r\n// Creates a 2D array, initialised to value\r\nfunction create2Darray(w, h, value) {\r\n const arr = [];\r\n for (let x = 0; x < w; x++) {\r\n arr[x] = [];\r\n }\r\n for (let x = 0; x < w; x++) {\r\n for (let y = 0; y < h; y++) {\r\n arr[x][y] = value;\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\n//Print array to screen:\r\nfunction printToCanvas(arr, canvas, color1, color2) {\r\n canvas.current.width = arr.length;\r\n canvas.current.height = arr.length;\r\n const ctx = canvas.current.getContext(\"2d\");\r\n\r\n const myImageData = ctx.getImageData(0, 0, arr.length, arr.length);\r\n const rgb = hexToRgb(color1);\r\n for (let x = 0; x < arr.length; x++) {\r\n for (let y = 0; y < arr.length; y++) {\r\n const index = (x + y * arr.length) * 4;\r\n myImageData.data[index + 0] = rgb.r * arr[x][y]; //r\r\n myImageData.data[index + 1] = rgb.g * arr[x][y]; // g\r\n myImageData.data[index + 2] = rgb.b * arr[x][y]; //b\r\n myImageData.data[index + 3] = 255 * arr[x][y]; //a\r\n }\r\n }\r\n\r\n ctx.fillStyle = color2;\r\n ctx.fillRect(0, 0, canvas.current.width, canvas.current.height);\r\n ctx.globalCompositeOperation = \"source-atop\";\r\n createImageBitmap(myImageData).then(function(imgBitmap) {\r\n ctx.drawImage(imgBitmap, 0, 0);\r\n });\r\n}\r\n\r\nfunction hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n}\r\n\r\nexport default DSATool;","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport DSATool from \"../../../components/posts/dsaTool/dsaTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n code: \"code\",\n pre: \"pre\",\n ol: \"ol\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"The \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Diamond-square_algorithm\",\n class: \"blueLink\"\n }, \"Diamond-square algorithm (DSA)\"), \" is a popular method used to generate realistic \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Heightmap\",\n class: \"blueLink\"\n }, \"heightmaps\"), \" which resemble clouds, terrain and/or plasma. The JavaScript code below can be used to generate square cloud images of size \", React.createElement(_components.code, null, \"N = 2^(n+1)\"), \". The images make great unique backgrounds (I have one on my phone!) and look rather pretty in my opinion.\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var n = 9;\\r\\nvar N = Math.pow(2, n) + 1;\\r\\nvar arr;\\r\\n\\r\\nfunction runDSA(N) {\\r\\n // Initialise the array with random numbers at its corners\\r\\n arr = create2Darray(N, N);\\r\\n arr[0][0] = 2 * Math.random() - 1;\\r\\n arr[0][N - 1] = 2 * Math.random() - 1;\\r\\n arr[N - 1][0] = 2 * Math.random() - 1;\\r\\n arr[N - 1][N - 1] = 2 * Math.random() - 1;\\r\\n\\r\\n var side = N - 1;\\r\\n var nSq = 1; // Number of Squares.\\r\\n var f = 1.0; // f scales the random numbers at each stage of the algorithm\\r\\n while (side > 1) {\\r\\n var sideo2 = Math.round(side / 2);\\r\\n var x0, x1, y0, y1, xc, yc, tot, ntot, dx, dy, xs, ys;\\r\\n var diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\\r\\n // Diamond step:\\r\\n for (var ix = 0; ix < nSq; ix++) {\\r\\n for (var iy = 0; iy < nSq; iy++) {\\r\\n x0 = ix * side;\\r\\n x1 = (ix + 1) * side;\\r\\n y0 = iy * side;\\r\\n y1 = (iy + 1) * side;\\r\\n xc = x0 + sideo2;\\r\\n yc = y0 + sideo2;\\r\\n // Set this pixel to the mean of its \\\"diamond\\\" neighbours plus\\r\\n // a random offset.\\r\\n arr[xc][yc] =\\r\\n (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\\r\\n arr[xc][yc] += f * (2 * Math.random() - 1);\\r\\n }\\r\\n }\\r\\n\\r\\n //Square step:\\r\\n for (var ix = 0; ix < 2 * nSq + 1; ix++) {\\r\\n xc = sideo2 * ix;\\r\\n for (var iy = 0; iy < 2 * nSq + 1; iy++) {\\r\\n yc = side * iy + sideo2 * (1 - (ix % 2));\\r\\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\\r\\n continue;\\r\\n }\\r\\n tot = 0.0;\\r\\n ntot = 0;\\r\\n // Set this pixel to the mean of its \\\"square\\\" neighbours plus\\r\\n // a random offset. At the edges, it has only three neighbours.\\r\\n for (var ii = 0; ii < diff.length; ii++) {\\r\\n dx = diff[ii][0];\\r\\n dy = diff[ii][1];\\r\\n xs = xc + dx * sideo2;\\r\\n ys = yc + dy * sideo2;\\r\\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\\r\\n continue;\\r\\n } else {\\r\\n tot += arr[xs][ys];\\r\\n ntot += 1;\\r\\n }\\r\\n }\\r\\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\\r\\n }\\r\\n }\\r\\n side = sideo2;\\r\\n nSq = nSq * 2;\\r\\n f = f / 2;\\r\\n }\\r\\n return arr;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"I've packaged the DSA code up into a easy to use tool with colour selectors below. This code:\"), \"\\n\", React.createElement(_components.ol, null, \"\\n\", React.createElement(_components.li, null, \"Runs the DSA, for \", React.createElement(_components.code, null, \"n = 9\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Scales the range from \", React.createElement(_components.code, null, \"[-1, +1]\"), \" to \", React.createElement(_components.code, null, \"[0, +1]\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Creates a hidden \", React.createElement(\"a\", {\n href: \"https://www.w3schools.com/graphics/canvas_intro.asp\",\n class: \"blueLink\"\n }, \"Canvas\"), \" of size \", React.createElement(_components.code, null, \"N = 2^(n+1)\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Adds pixels to the Canvas with \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/RGBA_color_space\",\n class: \"blueLink\"\n }, \"RGBA\"), \" values scaled by the DSA output.\"), \"\\n\", React.createElement(_components.li, null, \"Converts the canvas to an image and displays it on the screen.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"Just hit \\\"Reload\\\" below and you'll have your very own cloud image!\"), \"\\n\", React.createElement(DSATool), \"\\n\", React.createElement(_components.p, null, \"The full code for this is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \". If you want a bigger image just increase \", React.createElement(_components.code, null, \"n\"), \". Please bear in mind I've found \", React.createElement(_components.code, null, \"n > 11\"), \" tends to give my laptop a hard time and I haven't tested this on mobile so be careful (wouldn't want your browser to crash!).\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-02-20-dsa-cloud-images/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["displayBlock","displayHidden","inputControl","diamondStep","xc","yc","arr","nSq","side","sideo2","f","ix","iy","x0","x1","y0","y1","Math","random","squareStep","N","diff","tot","ntot","ii","length","xs","ys","DSATool","canvas","useRef","color1","setColor1","useState","color2","setColor2","defaultImageHidden","setDefaultImageHidden","pow","React","className","ref","style","src","cloudImage","alt","type","value","onChange","e","target","onClick","event","w","h","x","y","create2Darray","round","runDSA","current","width","height","ctx","getContext","myImageData","getImageData","rgb","hex","result","exec","r","parseInt","g","b","hexToRgb","index","data","fillStyle","fillRect","globalCompositeOperation","createImageBitmap","then","imgBitmap","drawImage","printToCanvas","preventDefault","_createMdxContent","props","_components","Object","assign","p","code","pre","ol","li","_provideComponents","components","href","class","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js deleted file mode 100644 index 0cad851..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[342],{9255:function(e,n,t){t.r(n),t.d(n,{default:function(){return h}});var r=t(1151),a=t(7294),o=t.p+"static/cloudImage-87f1914e207807a93c4e80ec41197865.jpg",l="style-module--displayBlock--24073",i="style-module--displayHidden--bb185",s="style-module--inputControl--78869";function c(e,n,t,r,a,o,l){for(let i=0;i0&&n0))continue;let r=0,d=0;for(let a=0;a0&&c0&&(r+=t[l][c],d+=1)}t[e][n]+=r/d+l*(2*Math.random()-1)}}}var d=()=>{const e=(0,a.useRef)(),{0:n,1:t}=(0,a.useState)("#3c69ff"),{0:r,1:d}=(0,a.useState)("#ffffff"),{0:m,1:h}=(0,a.useState)(!1),f=Math.pow(2,9)+1;return a.createElement("div",{className:"style-module--container--889be"},a.createElement("canvas",{ref:e,className:m?l:i}),a.createElement("img",{className:m?i:l,src:o,alt:"cloud"}),a.createElement("div",{className:"style-module--controls--02552"},a.createElement("input",{className:s,type:"color",value:n,onChange:e=>t(e.target.value)}),a.createElement("input",{className:s,type:"color",value:r,onChange:e=>d(e.target.value)}),a.createElement("button",{onClick:t=>{const a=function(e){const n=function(e,n,t){const r=[];for(let a=0;a1;){const o=Math.round(t/2);let l,i;c(l,i,n,r,t,o,a),u(l,i,n,r,t,o,a,e),t=o,r*=2,a/=2}for(let o=0;o1&&(n[o][t]=1);return n}(f);!function(e,n,t,r){n.current.width=e.length,n.current.height=e.length;const a=n.current.getContext("2d"),o=a.getImageData(0,0,e.length,e.length),l=function(e){const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null}(t);for(let i=0;i 1) {\r\n var sideo2 = Math.round(side / 2);\r\n var x0, x1, y0, y1, xc, yc, tot, ntot, dx, dy, xs, ys;\r\n var diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\r\n // Diamond step:\r\n for (var ix = 0; ix < nSq; ix++) {\r\n for (var iy = 0; iy < nSq; iy++) {\r\n x0 = ix * side;\r\n x1 = (ix + 1) * side;\r\n y0 = iy * side;\r\n y1 = (iy + 1) * side;\r\n xc = x0 + sideo2;\r\n yc = y0 + sideo2;\r\n // Set this pixel to the mean of its "diamond" neighbours plus\r\n // a random offset.\r\n arr[xc][yc] =\r\n (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\r\n arr[xc][yc] += f * (2 * Math.random() - 1);\r\n }\r\n }\r\n\r\n //Square step:\r\n for (var ix = 0; ix < 2 * nSq + 1; ix++) {\r\n xc = sideo2 * ix;\r\n for (var iy = 0; iy < 2 * nSq + 1; iy++) {\r\n yc = side * iy + sideo2 * (1 - (ix % 2));\r\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\r\n continue;\r\n }\r\n tot = 0.0;\r\n ntot = 0;\r\n // Set this pixel to the mean of its "square" neighbours plus\r\n // a random offset. At the edges, it has only three neighbours.\r\n for (var ii = 0; ii < diff.length; ii++) {\r\n dx = diff[ii][0];\r\n dy = diff[ii][1];\r\n xs = xc + dx * sideo2;\r\n ys = yc + dy * sideo2;\r\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\r\n continue;\r\n } else {\r\n tot += arr[xs][ys];\r\n ntot += 1;\r\n }\r\n }\r\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\r\n }\r\n }\r\n side = sideo2;\r\n nSq = nSq * 2;\r\n f = f / 2;\r\n }\r\n return arr;\r\n}\n')),"\n",a.createElement(n.p,null,"I've packaged the DSA code up into a easy to use tool with colour selectors below. This code:"),"\n",a.createElement(n.ol,null,"\n",a.createElement(n.li,null,"Runs the DSA, for ",a.createElement(n.code,null,"n = 9"),"."),"\n",a.createElement(n.li,null,"Scales the range from ",a.createElement(n.code,null,"[-1, +1]")," to ",a.createElement(n.code,null,"[0, +1]"),"."),"\n",a.createElement(n.li,null,"Creates a hidden ",a.createElement("a",{href:"https://www.w3schools.com/graphics/canvas_intro.asp",class:"blueLink"},"Canvas")," of size ",a.createElement(n.code,null,"N = 2^(n+1)"),"."),"\n",a.createElement(n.li,null,"Adds pixels to the Canvas with ",a.createElement("a",{href:"https://en.wikipedia.org/wiki/RGBA_color_space",class:"blueLink"},"RGBA")," values scaled by the DSA output."),"\n",a.createElement(n.li,null,"Converts the canvas to an image and displays it on the screen."),"\n"),"\n",a.createElement(n.p,null,'Just hit "Reload" below and you\'ll have your very own cloud image!'),"\n",a.createElement(d),"\n",a.createElement(n.p,null,"The full code for this is available on my ",a.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),". If you want a bigger image just increase ",a.createElement(n.code,null,"n"),". Please bear in mind I've found ",a.createElement(n.code,null,"n > 11")," tends to give my laptop a hard time and I haven't tested this on mobile so be careful (wouldn't want your browser to crash!)."))}var h=function(e){void 0===e&&(e={});const{wrapper:n}=Object.assign({},(0,r.ah)(),e.components);return n?a.createElement(n,e,a.createElement(m,e)):m(e)}},5741:function(e,n,t){t.r(n),t.d(n,{default:function(){return m}});var r=t(9255),a=t(7294),o=t(8610),l=t(1750),i=t(8013),s=t(5814),c=t(1151),u=t(8977);const d=e=>{let{data:{mdx:n},children:t}=e;const r={code:i.Z,inlineCode:s.Z},d=n;return a.createElement(o.Z,{page:"Post",post:d},a.createElement("div",{className:u.fI},a.createElement("div",{className:u.v_},a.createElement(l.Z,{post:d}),a.createElement(c.Zo,{components:r},t))))};function m(e){return a.createElement(d,e,a.createElement(r.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js.map deleted file mode 100644 index fb3876c..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js","mappings":"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","sources":["webpack://blog/./static/cloudImage.jpg","webpack://blog/./src/components/posts/dsaTool/style.module.css","webpack://blog/./src/components/posts/dsaTool/dsaTool.js","webpack://blog/./src/pages/posts/2019-02-20-dsa-cloud-images/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/cloudImage-87f1914e207807a93c4e80ec41197865.jpg\";","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--889be\";\nexport var controls = \"style-module--controls--02552\";\nexport var displayBlock = \"style-module--displayBlock--24073\";\nexport var displayHidden = \"style-module--displayHidden--bb185\";\nexport var inputControl = \"style-module--inputControl--78869\";","import React, { useState, useRef } from \"react\";\r\nimport cloudImage from \"../../../../static/cloudImage.jpg\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst DSATool = () => {\r\n const canvas = useRef();\r\n const [color1, setColor1] = useState(\"#3c69ff\");\r\n const [color2, setColor2] = useState(\"#ffffff\");\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n const n = 9;\r\n const N = Math.pow(2, n) + 1;\r\n\r\n const reloadClickHandler = event => {\r\n const arr = runDSA(N);\r\n printToCanvas(arr, canvas, color1, color2);\r\n setDefaultImageHidden(true);\r\n event.preventDefault();\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n setColor1(e.target.value)}\r\n />\r\n setColor2(e.target.value)}\r\n />\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction runDSA(N) {\r\n // Initialise the array with random numbers at its corners\r\n const arr = create2Darray(N, N, 0);\r\n arr[0][0] = 2 * Math.random() - 1;\r\n arr[0][N - 1] = 2 * Math.random() - 1;\r\n arr[N - 1][0] = 2 * Math.random() - 1;\r\n arr[N - 1][N - 1] = 2 * Math.random() - 1;\r\n\r\n let side = N - 1;\r\n let nSq = 1; // Number of Squares.\r\n let f = 1.0; // f scales the random numbers at each stage of the algorithm\r\n while (side > 1) {\r\n const sideo2 = Math.round(side / 2);\r\n let xc, yc;\r\n // Diamond step:\r\n diamondStep(xc, yc, arr, nSq, side, sideo2, f);\r\n //Square step:\r\n squareStep(xc, yc, arr, nSq, side, sideo2, f, N);\r\n side = sideo2;\r\n nSq = nSq * 2;\r\n f = f / 2;\r\n }\r\n\r\n // Scale range to 0 to +1 and cut off outliers.\r\n for (let ix = 0; ix < N; ix++) {\r\n for (let iy = 0; iy < N; iy++) {\r\n arr[ix][iy] = (arr[ix][iy] + 1.0) / 2.0;\r\n if (arr[ix][iy] < 0.0) {\r\n arr[ix][iy] = 0;\r\n }\r\n if (arr[ix][iy] > 1.0) {\r\n arr[ix][iy] = 1.0;\r\n }\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\nfunction diamondStep(xc, yc, arr, nSq, side, sideo2, f) {\r\n for (let ix = 0; ix < nSq; ix++) {\r\n for (let iy = 0; iy < nSq; iy++) {\r\n const x0 = ix * side;\r\n const x1 = (ix + 1) * side;\r\n const y0 = iy * side;\r\n const y1 = (iy + 1) * side;\r\n xc = x0 + sideo2;\r\n yc = y0 + sideo2;\r\n // Set this pixel to the mean of its \"diamond\" neighbours plus\r\n // a random offset.\r\n arr[xc][yc] = (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\r\n arr[xc][yc] += f * (2 * Math.random() - 1);\r\n }\r\n }\r\n}\r\n\r\nfunction squareStep(xc, yc, arr, nSq, side, sideo2, f, N) {\r\n const diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\r\n for (let ix = 0; ix < 2 * nSq + 1; ix++) {\r\n xc = sideo2 * ix;\r\n for (let iy = 0; iy < 2 * nSq + 1; iy++) {\r\n yc = side * iy + sideo2 * (1 - (ix % 2));\r\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\r\n continue;\r\n }\r\n let tot = 0.0;\r\n let ntot = 0;\r\n // Set this pixel to the mean of its \"square\" neighbours plus\r\n // a random offset. At the edges, it has only three neighbours.\r\n for (let ii = 0; ii < diff.length; ii++) {\r\n const dx = diff[ii][0];\r\n const dy = diff[ii][1];\r\n const xs = xc + dx * sideo2;\r\n const ys = yc + dy * sideo2;\r\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\r\n continue;\r\n } else {\r\n tot += arr[xs][ys];\r\n ntot += 1;\r\n }\r\n }\r\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\r\n }\r\n }\r\n}\r\n\r\n// Creates a 2D array, initialised to value\r\nfunction create2Darray(w, h, value) {\r\n const arr = [];\r\n for (let x = 0; x < w; x++) {\r\n arr[x] = [];\r\n }\r\n for (let x = 0; x < w; x++) {\r\n for (let y = 0; y < h; y++) {\r\n arr[x][y] = value;\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\n//Print array to screen:\r\nfunction printToCanvas(arr, canvas, color1, color2) {\r\n canvas.current.width = arr.length;\r\n canvas.current.height = arr.length;\r\n const ctx = canvas.current.getContext(\"2d\");\r\n\r\n const myImageData = ctx.getImageData(0, 0, arr.length, arr.length);\r\n const rgb = hexToRgb(color1);\r\n for (let x = 0; x < arr.length; x++) {\r\n for (let y = 0; y < arr.length; y++) {\r\n const index = (x + y * arr.length) * 4;\r\n myImageData.data[index + 0] = rgb.r * arr[x][y]; //r\r\n myImageData.data[index + 1] = rgb.g * arr[x][y]; // g\r\n myImageData.data[index + 2] = rgb.b * arr[x][y]; //b\r\n myImageData.data[index + 3] = 255 * arr[x][y]; //a\r\n }\r\n }\r\n\r\n ctx.fillStyle = color2;\r\n ctx.fillRect(0, 0, canvas.current.width, canvas.current.height);\r\n ctx.globalCompositeOperation = \"source-atop\";\r\n createImageBitmap(myImageData).then(function(imgBitmap) {\r\n ctx.drawImage(imgBitmap, 0, 0);\r\n });\r\n}\r\n\r\nfunction hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n}\r\n\r\nexport default DSATool;","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport DSATool from \"../../../components/posts/dsaTool/dsaTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n code: \"code\",\n pre: \"pre\",\n ol: \"ol\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"The \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Diamond-square_algorithm\",\n class: \"blueLink\"\n }, \"Diamond-square algorithm (DSA)\"), \" is a popular method used to generate realistic \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Heightmap\",\n class: \"blueLink\"\n }, \"heightmaps\"), \" which resemble clouds, terrain and/or plasma. The JavaScript code below can be used to generate square cloud images of size \", React.createElement(_components.code, null, \"N = 2^(n+1)\"), \". The images make great unique backgrounds (I have one on my phone!) and look rather pretty in my opinion.\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var n = 9;\\r\\nvar N = Math.pow(2, n) + 1;\\r\\nvar arr;\\r\\n\\r\\nfunction runDSA(N) {\\r\\n // Initialise the array with random numbers at its corners\\r\\n arr = create2Darray(N, N);\\r\\n arr[0][0] = 2 * Math.random() - 1;\\r\\n arr[0][N - 1] = 2 * Math.random() - 1;\\r\\n arr[N - 1][0] = 2 * Math.random() - 1;\\r\\n arr[N - 1][N - 1] = 2 * Math.random() - 1;\\r\\n\\r\\n var side = N - 1;\\r\\n var nSq = 1; // Number of Squares.\\r\\n var f = 1.0; // f scales the random numbers at each stage of the algorithm\\r\\n while (side > 1) {\\r\\n var sideo2 = Math.round(side / 2);\\r\\n var x0, x1, y0, y1, xc, yc, tot, ntot, dx, dy, xs, ys;\\r\\n var diff = [[-1, 0], [1, 0], [0, -1], [0, 1]];\\r\\n // Diamond step:\\r\\n for (var ix = 0; ix < nSq; ix++) {\\r\\n for (var iy = 0; iy < nSq; iy++) {\\r\\n x0 = ix * side;\\r\\n x1 = (ix + 1) * side;\\r\\n y0 = iy * side;\\r\\n y1 = (iy + 1) * side;\\r\\n xc = x0 + sideo2;\\r\\n yc = y0 + sideo2;\\r\\n // Set this pixel to the mean of its \\\"diamond\\\" neighbours plus\\r\\n // a random offset.\\r\\n arr[xc][yc] =\\r\\n (arr[y0][x0] + arr[y0][x1] + arr[y1][x0] + arr[y1][x1]) / 4;\\r\\n arr[xc][yc] += f * (2 * Math.random() - 1);\\r\\n }\\r\\n }\\r\\n\\r\\n //Square step:\\r\\n for (var ix = 0; ix < 2 * nSq + 1; ix++) {\\r\\n xc = sideo2 * ix;\\r\\n for (var iy = 0; iy < 2 * nSq + 1; iy++) {\\r\\n yc = side * iy + sideo2 * (1 - (ix % 2));\\r\\n if (!(xc < N && xc > 0 && yc < N && yc > 0)) {\\r\\n continue;\\r\\n }\\r\\n tot = 0.0;\\r\\n ntot = 0;\\r\\n // Set this pixel to the mean of its \\\"square\\\" neighbours plus\\r\\n // a random offset. At the edges, it has only three neighbours.\\r\\n for (var ii = 0; ii < diff.length; ii++) {\\r\\n dx = diff[ii][0];\\r\\n dy = diff[ii][1];\\r\\n xs = xc + dx * sideo2;\\r\\n ys = yc + dy * sideo2;\\r\\n if (!(xs < N && xs > 0 && ys < N && ys > 0)) {\\r\\n continue;\\r\\n } else {\\r\\n tot += arr[xs][ys];\\r\\n ntot += 1;\\r\\n }\\r\\n }\\r\\n arr[xc][yc] += tot / ntot + f * (2 * Math.random() - 1);\\r\\n }\\r\\n }\\r\\n side = sideo2;\\r\\n nSq = nSq * 2;\\r\\n f = f / 2;\\r\\n }\\r\\n return arr;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"I've packaged the DSA code up into a easy to use tool with colour selectors below. This code:\"), \"\\n\", React.createElement(_components.ol, null, \"\\n\", React.createElement(_components.li, null, \"Runs the DSA, for \", React.createElement(_components.code, null, \"n = 9\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Scales the range from \", React.createElement(_components.code, null, \"[-1, +1]\"), \" to \", React.createElement(_components.code, null, \"[0, +1]\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Creates a hidden \", React.createElement(\"a\", {\n href: \"https://www.w3schools.com/graphics/canvas_intro.asp\",\n class: \"blueLink\"\n }, \"Canvas\"), \" of size \", React.createElement(_components.code, null, \"N = 2^(n+1)\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Adds pixels to the Canvas with \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/RGBA_color_space\",\n class: \"blueLink\"\n }, \"RGBA\"), \" values scaled by the DSA output.\"), \"\\n\", React.createElement(_components.li, null, \"Converts the canvas to an image and displays it on the screen.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"Just hit \\\"Reload\\\" below and you'll have your very own cloud image!\"), \"\\n\", React.createElement(DSATool), \"\\n\", React.createElement(_components.p, null, \"The full code for this is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \". If you want a bigger image just increase \", React.createElement(_components.code, null, \"n\"), \". Please bear in mind I've found \", React.createElement(_components.code, null, \"n > 11\"), \" tends to give my laptop a hard time and I haven't tested this on mobile so be careful (wouldn't want your browser to crash!).\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-02-20-dsa-cloud-images/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["displayBlock","displayHidden","inputControl","diamondStep","xc","yc","arr","nSq","side","sideo2","f","ix","iy","x0","x1","y0","y1","Math","random","squareStep","N","diff","tot","ntot","ii","length","xs","ys","DSATool","canvas","useRef","color1","setColor1","useState","color2","setColor2","defaultImageHidden","setDefaultImageHidden","pow","React","className","ref","style","src","cloudImage","alt","type","value","onChange","e","target","onClick","event","w","h","x","y","create2Darray","round","runDSA","current","width","height","ctx","getContext","myImageData","getImageData","rgb","hex","result","exec","r","parseInt","g","b","hexToRgb","index","data","fillStyle","fillRect","globalCompositeOperation","createImageBitmap","then","imgBitmap","drawImage","printToCanvas","preventDefault","_createMdxContent","props","_components","Object","assign","p","code","pre","ol","li","_provideComponents","components","href","class","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js new file mode 100644 index 0000000..1cf0675 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[485],{1081:function(e,t,n){n.r(t),n.d(t,{Head:function(){return f},default:function(){return E}});var a=n(3141),c=n(7294),l=n(3306),r=n(4527),o=n(1750),s=n(8013),u=n(5814),d=n(1151),m=n(8977);const i=e=>{let{data:{mdx:t},children:n}=e;const a={code:s.Z,inlineCode:u.Z},l=t;return c.createElement(r.Z,null,c.createElement("div",{className:m.fI},c.createElement("div",{className:m.v_},c.createElement(o.Z,{post:l}),c.createElement(d.Zo,{components:a},n))))},f=e=>{let{data:{mdx:t}}=e;const n=t;return c.createElement(l.Z,{page:"Post",post:n})};function E(e){return c.createElement(i,e,c.createElement(a.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js.map new file mode 100644 index 0000000..bf37df8 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js","mappings":"sQAUA,MAAMA,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,KAAMD,EAAAA,cAAoB,MAAO,CAClEE,UAAWC,EAAAA,IACVH,EAAAA,cAAoB,MAAO,CAC5BE,UAAWC,EAAAA,IACVH,EAAAA,cAAoBI,EAAAA,EAAY,CACjCL,KAAMA,IACJC,EAAAA,cAAoBK,EAAAA,GAAa,CACnCX,WAAYA,GACXD,KAAY,EAEJa,EAAOC,IAAmB,IAAjBhB,MAAM,IAACC,IAAKe,EAChC,MAAMR,EAAOP,EACb,OAAOQ,EAAAA,cAAoBQ,EAAAA,EAAK,CAC9BC,KAAM,OACNV,KAAMA,GACN,EAmBW,SAASW,EAAiBC,GACvC,OAAOX,EAAAA,cAAoBX,EAAcsB,EAAOX,EAAAA,cAAoBY,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-03-06-svg-path-animations/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","className","style","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js deleted file mode 100644 index cb41d3b..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[485],{1081:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var c=n(3141),a=n(7294),l=n(8610),r=n(1750),o=n(8013),s=n(5814),u=n(1151),m=n(8977);const d=e=>{let{data:{mdx:t},children:n}=e;const c={code:o.Z,inlineCode:s.Z},d=t;return a.createElement(l.Z,{page:"Post",post:d},a.createElement("div",{className:m.fI},a.createElement("div",{className:m.v_},a.createElement(r.Z,{post:d}),a.createElement(u.Zo,{components:c},n))))};function i(e){return a.createElement(d,e,a.createElement(c.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js.map deleted file mode 100644 index 3e1de44..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js","mappings":"kOASA,MAAMA,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,CACjCC,KAAM,OACNH,KAAMA,GACLC,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoBK,EAAAA,EAAY,CACjCN,KAAMA,IACJC,EAAAA,cAAoBM,EAAAA,GAAa,CACnCZ,WAAYA,GACXD,KAAY,EAmBF,SAASc,EAAiBC,GACvC,OAAOR,EAAAA,cAAoBX,EAAcmB,EAAOR,EAAAA,cAAoBS,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-03-06-svg-path-animations/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","page","className","style","PostHeader","MDXProvider","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js deleted file mode 100644 index fb3a842..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[485],{1081:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var c=n(3141),a=n(7294),l=n(7025),r=n(1750),o=n(8013),s=n(5814),u=n(1151),m=n(8977);function d(e){let{data:{mdx:t},children:n}=e;const c={code:o.Z,inlineCode:s.Z},d=t;return a.createElement(l.Z,{page:"Post",post:d},a.createElement("div",{className:m.fI},a.createElement("div",{className:m.v_},a.createElement(r.Z,{post:d}),a.createElement(u.Zo,{components:c},n))))}function i(e){return a.createElement(d,e,a.createElement(c.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js.map deleted file mode 100644 index 6b1b935..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-ecbab336b183358c432f.js","mappings":"kOASA,SAASA,EAAYC,GAA0B,IAAxBC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,CACjCC,KAAM,OACNH,KAAMA,GACLC,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoBK,EAAAA,EAAY,CACjCN,KAAMA,IACJC,EAAAA,cAAoBM,EAAAA,GAAa,CACnCZ,WAAYA,GACXD,KACL,CAkBe,SAASc,EAAiBC,GACvC,OAAOR,EAAAA,cAAoBX,EAAcmB,EAAOR,EAAAA,cAAoBS,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-03-06-svg-path-animations/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","page","className","style","PostHeader","MDXProvider","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js.map deleted file mode 100644 index 1d5ae50..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js","mappings":"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","sources":["webpack://blog/./src/components/posts/golTool/style.module.css","webpack://blog/./src/components/posts/golTool/golTool.js","webpack://blog/./src/pages/posts/2019-04-06-the-game-of-life/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--b0d11\";\nexport var control = \"style-module--control--14a5d\";\nexport var controls = \"style-module--controls--8241a\";","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlay, faPause } from \"@fortawesome/free-solid-svg-icons\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nexport default class GOLTool extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.ALIVE = 1;\r\n this.DEAD = 0;\r\n this.N = 200;\r\n this.cellSize = 3;\r\n this.neighbourhood = [\r\n [1, 0],\r\n [1, 1],\r\n [0, 1],\r\n [-1, 1],\r\n [-1, 0],\r\n [-1, -1],\r\n [0, -1],\r\n [1, -1],\r\n ];\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.canvas = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n const canvas = this.canvas.current;\r\n canvas.width = this.arr.length * this.cellSize;\r\n canvas.height = this.arr[0].length * this.cellSize;\r\n this.initialiseAcorn(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, canvas);\r\n }\r\n\r\n state = {\r\n color1: \"#00ff00\",\r\n color2: \"#000000\",\r\n running: false,\r\n };\r\n\r\n color1ChangeHandler = e => {\r\n this.setState({ color1: e.target.value });\r\n };\r\n\r\n color2ChangeHandler = e => {\r\n this.setState({ color2: e.target.value });\r\n };\r\n\r\n startClickHandler = () => {\r\n if (!this.state.running) {\r\n this.setState({ running: true });\r\n this.requestId = requestAnimationFrame(this.gameLoop);\r\n } else {\r\n cancelAnimationFrame(this.requestId);\r\n this.requestId = undefined;\r\n this.setState({ running: false });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n gameLoop = () => {\r\n if (this.canvas.current !== null)\r\n {\r\n this.arr = this.iterate(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n this.requestId = requestAnimationFrame(this.gameLoop);\r\n }\r\n };\r\n\r\n iterate(oldArray) {\r\n const newArray = this.clone2Darray(oldArray);\r\n for (let x = 0; x < oldArray.length; x++) {\r\n for (let y = 0; y < oldArray[0].length; y++) {\r\n const aliveNeighbourCount = this.getneighcount(oldArray, x, y);\r\n if (oldArray[x][y] === this.ALIVE) {\r\n if (aliveNeighbourCount < 2) {\r\n newArray[x][y] = this.DEAD; // Underpopulation kills cell.\r\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\r\n newArray[x][y] = this.ALIVE; // Surivies!\r\n } else if (aliveNeighbourCount > 3) {\r\n newArray[x][y] = this.DEAD; // Overpopulation kills cell.\r\n }\r\n } else if (oldArray[x][y] === this.DEAD && aliveNeighbourCount === 3) {\r\n newArray[x][y] = this.ALIVE; // Reproduction.\r\n }\r\n }\r\n }\r\n return newArray;\r\n }\r\n\r\n // Get number of ALIVE neighbours for point (x,y)\r\n getneighcount(arr, x, y) {\r\n let nc = 0;\r\n for (let nn = 0; nn < this.neighbourhood.length; nn++) {\r\n const dx = this.neighbourhood[nn][0];\r\n const dy = this.neighbourhood[nn][1];\r\n if (\r\n arr[this.pbcz(x + dx, arr.length)][this.pbcz(y + dy, arr[x].length)] ===\r\n this.ALIVE\r\n ) {\r\n nc++;\r\n }\r\n }\r\n return nc;\r\n }\r\n\r\n // Periodic boundary conditions in z-direction:\r\n pbcz(iz, Lz) {\r\n if (iz >= Lz) {\r\n iz = iz - Lz;\r\n }\r\n if (iz < 0) {\r\n iz = iz + Lz;\r\n }\r\n return iz;\r\n }\r\n\r\n // Scales and prints the input array to canvas.\r\n printToCanvas(arr, cellSize, canvas) {\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const data = imageData.data;\r\n const rgb1 = this.hexToRgb(this.state.color1);\r\n const rgb2 = this.hexToRgb(this.state.color2);\r\n\r\n for (let x = 0; x < arr.length; x++) {\r\n for (let y = 0; y < arr[0].length; y++) {\r\n const isAlive = arr[x][y] === this.ALIVE;\r\n for (let i = 0; i < cellSize; i++) {\r\n for (let j = 0; j < cellSize; j++) {\r\n const row = x * cellSize + i;\r\n const col = y * cellSize + j;\r\n const index = (row + col * arr.length * cellSize) * 4;\r\n data[index + 0] = isAlive ? rgb1.r : rgb2.r;\r\n data[index + 1] = isAlive ? rgb1.g : rgb2.g;\r\n data[index + 2] = isAlive ? rgb1.b : rgb2.b;\r\n data[index + 3] = 255;\r\n }\r\n }\r\n }\r\n }\r\n ctx.putImageData(imageData, 0, 0);\r\n }\r\n\r\n // Converts a hex color string to rgb.\r\n hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n }\r\n\r\n acornClickHandler = () => {\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.initialiseAcorn(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n };\r\n\r\n initialiseAcorn(arr) {\r\n const cx = Math.round(arr.length / 2);\r\n const cy = Math.round(arr[0].length / 2);\r\n const acorn = [\r\n [0, 0],\r\n [-3, -1],\r\n [-2, -1],\r\n [-2, 1],\r\n [1, -1],\r\n [2, -1],\r\n [3, -1],\r\n ];\r\n for (let i = 0; i < acorn.length; i++) {\r\n const dx = acorn[i][0];\r\n const dy = acorn[i][1];\r\n arr[cx + dx][cy + dy] = this.ALIVE;\r\n }\r\n }\r\n\r\n crossClickHandler = () => {\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.initialiseCross(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n };\r\n\r\n initialiseCross(arr) {\r\n const Lx = arr.length;\r\n const Ly = arr[0].length;\r\n for (let x = 0; x < Lx; x++) {\r\n const y = x;\r\n if (y >= 0 && y < Ly) {\r\n arr[x][y] = this.ALIVE;\r\n }\r\n }\r\n for (let x = Lx - 1; x >= 0; x--) {\r\n const y = Ly - (x + 1);\r\n if (y >= 0 && y < Ly) {\r\n arr[x][y] = this.ALIVE;\r\n }\r\n }\r\n }\r\n\r\n clone2Darray(oldArray) {\r\n const newArray = oldArray.map(i => {\r\n return i.slice(0);\r\n });\r\n return newArray;\r\n }\r\n\r\n // Creates a 2D array, initialised to value\r\n create2Darray(w, h, value) {\r\n const arr = [];\r\n for (let x = 0; x < w; x++) {\r\n arr[x] = [];\r\n }\r\n for (let x = 0; x < w; x++) {\r\n for (let y = 0; y < h; y++) {\r\n arr[x][y] = value;\r\n }\r\n }\r\n return arr;\r\n }\r\n}\r\n","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport GOLTool from \"../../../components/posts/golTool/golTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n em: \"em\",\n ul: \"ul\",\n li: \"li\",\n pre: \"pre\",\n code: \"code\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"The \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\n }, \"Game of Life\"), \" is a \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Cellular_automaton\"\n }, \"cellular automataton\"), \" designed by the British mathematician \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/John_Horton_Conway\"\n }, \"John Conway\"), \". A cellular automataton is a mathematical model that consists of a grid of cells, with each cell having an finite number of states (e.g \\\"on\\\" or \\\"off\\\"). A new grid configuration (a new \", React.createElement(_components.em, null, \"generation\"), \") is created according to a fixed set of rules that determine the state of each cell based on its current state and the state of the cells around it (its \", React.createElement(_components.em, null, \"neighbourhood\"), \"). Cellular automata can be used to simulate a variety of real-world systems, from the \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Belousov%E2%80%93Zhabotinsky_reaction\"\n }, \"Belousov–Zhabotinsky reaction\"), \" to \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://blogs.msdn.microsoft.com/calvin_hsia/2014/09/30/fish-vs-sharks-predator-prey-simulation/\"\n }, \"predator prey relationships\"), \".\"), \"\\n\", React.createElement(_components.p, null, \"In Conway's Game of Life, the grid is a 2D array of square cells each with two states \", React.createElement(_components.em, null, \"alive\"), \" and \", React.createElement(_components.em, null, \"dead\"), \". Each cell interacts with its 8 neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent to it. The rules are:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Any live cell with fewer than two live neighbours dies, as if by underpopulation.\"), \"\\n\", React.createElement(_components.li, null, \"Any live cell with two or three live neighbours lives on to the next generation.\"), \"\\n\", React.createElement(_components.li, null, \"Any live cell with more than three live neighbours dies, as if by overpopulation.\"), \"\\n\", React.createElement(_components.li, null, \"Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"We can get the number of alive neighbours of a cell in 2D array with the code below. Note we are applying \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Periodic_boundary_conditions\",\n class: \"blueLink\"\n }, \"periodic boundary conditions\"), \" in both the x and y directions.\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var ALIVE = 1;\\r\\nvar DEAD = 0;\\r\\nvar N = 200;\\r\\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\\r\\nvar neighbourhood = [\\r\\n [1, 0],\\r\\n [1, 1],\\r\\n [0, 1],\\r\\n [-1, 1],\\r\\n [-1, 0],\\r\\n [-1, -1],\\r\\n [0, -1],\\r\\n [1, -1],\\r\\n];\\r\\n\\r\\n// Get number of ALIVE neighbours for point (x,y)\\r\\nfunction getneighcount(arr, x, y) {\\r\\n var nc = 0;\\r\\n for (var nn = 0; nn < neighbourhood.length; nn++) {\\r\\n var dx = neighbourhood[nn][0];\\r\\n var dy = neighbourhood[nn][1];\\r\\n if (arr[pbcz(x + dx, arr.length)][pbcz(y + dy, arr[x].length)] === ALIVE) {\\r\\n nc++;\\r\\n }\\r\\n }\\r\\n return nc;\\r\\n}\\r\\n\\r\\n// Periodic boundary conditions in z-direction:\\r\\nfunction pbcz(iz, Lz) {\\r\\n if (iz >= Lz) {\\r\\n iz = iz - Lz;\\r\\n }\\r\\n if (iz < 0) {\\r\\n iz = iz + Lz;\\r\\n }\\r\\n return iz;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"Then we can just turn the Game of Life rules into some simple JavaScript code:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var ALIVE = 1;\\r\\nvar DEAD = 0;\\r\\nvar N = 200;\\r\\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\\r\\nvar requestId;\\r\\ngameLoop();\\r\\n\\r\\n// Runs forever, call cancelAnimationFrame(requestId) to stop.\\r\\nfunction gameLoop() {\\r\\n arr = iterate(arr);\\r\\n print_to_canvas(arr);\\r\\n requestId = requestAnimationFrame(gameLoop);\\r\\n}\\r\\n\\r\\n// Iterate the next state of the array.\\r\\nfunction iterate(oldArray) {\\r\\n var newArray = clone2Darray(oldArray);\\r\\n for (var x = 0; x < oldArray.length; x++) {\\r\\n for (var y = 0; y < oldArray[0].length; y++) {\\r\\n var aliveNeighbourCount = getneighcount(oldArray, x, y);\\r\\n if (oldArray[x][y] === ALIVE) {\\r\\n if (aliveNeighbourCount < 2) {\\r\\n newArray[x][y] = DEAD; // Underpopulation kills cell.\\r\\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\\r\\n newArray[x][y] = ALIVE; // Surivies!\\r\\n } else if (aliveNeighbourCount > 3) {\\r\\n newArray[x][y] = DEAD; // Overpopulation kills cell.\\r\\n }\\r\\n } else if (oldArray[x][y] === DEAD && aliveNeighbourCount === 3) {\\r\\n newArray[x][y] = ALIVE; // Reproduction.\\r\\n }\\r\\n }\\r\\n }\\r\\n return newArray;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"I've packaged the Game of Life code up into interactive tool below.\"), \"\\n\", React.createElement(GOLTool), \"\\n\", React.createElement(_components.p, null, \"The full code for this tool is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \".\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-04-06-the-game-of-life/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["control","GOLTool","_React$Component","props","_this","call","state","color1","color2","running","color1ChangeHandler","e","setState","target","value","color2ChangeHandler","startClickHandler","cancelAnimationFrame","requestId","undefined","requestAnimationFrame","gameLoop","canvas","current","arr","iterate","printToCanvas","cellSize","acornClickHandler","create2Darray","N","DEAD","initialiseAcorn","crossClickHandler","initialiseCross","ALIVE","neighbourhood","React","_inheritsLoose","_proto","prototype","componentDidMount","this","width","length","height","render","className","ref","style","type","onChange","onClick","FontAwesomeIcon","icon","faPause","faPlay","oldArray","newArray","clone2Darray","x","y","aliveNeighbourCount","getneighcount","nc","nn","dx","dy","pbcz","iz","Lz","ctx","getContext","imageData","getImageData","data","rgb1","hexToRgb","rgb2","isAlive","i","j","index","r","g","b","putImageData","hex","result","exec","parseInt","cx","Math","round","cy","acorn","Lx","Ly","map","slice","w","h","_createMdxContent","_components","Object","assign","p","em","ul","li","pre","code","_provideComponents","components","class","href","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js deleted file mode 100644 index c4530c8..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[915],{5086:function(e,n,t){t.r(n),t.d(n,{default:function(){return u}});var r=t(1151),a=t(7294),i=t(4578),o=t(982),l=t(9417),c="style-module--control--14a5d";let s=function(e){function n(n){var t;return(t=e.call(this,n)||this).state={color1:"#00ff00",color2:"#000000",running:!1},t.color1ChangeHandler=e=>{t.setState({color1:e.target.value})},t.color2ChangeHandler=e=>{t.setState({color2:e.target.value})},t.startClickHandler=()=>{t.state.running?(cancelAnimationFrame(t.requestId),t.requestId=void 0,t.setState({running:!1})):(t.setState({running:!0}),t.requestId=requestAnimationFrame(t.gameLoop))},t.gameLoop=()=>{null!==t.canvas.current&&(t.arr=t.iterate(t.arr),t.printToCanvas(t.arr,t.cellSize,t.canvas.current),t.requestId=requestAnimationFrame(t.gameLoop))},t.acornClickHandler=()=>{t.arr=t.create2Darray(t.N,t.N,t.DEAD),t.initialiseAcorn(t.arr),t.printToCanvas(t.arr,t.cellSize,t.canvas.current)},t.crossClickHandler=()=>{t.arr=t.create2Darray(t.N,t.N,t.DEAD),t.initialiseCross(t.arr),t.printToCanvas(t.arr,t.cellSize,t.canvas.current)},t.ALIVE=1,t.DEAD=0,t.N=200,t.cellSize=3,t.neighbourhood=[[1,0],[1,1],[0,1],[-1,1],[-1,0],[-1,-1],[0,-1],[1,-1]],t.arr=t.create2Darray(t.N,t.N,t.DEAD),t.canvas=a.createRef(),t}(0,i.Z)(n,e);var t=n.prototype;return t.componentDidMount=function(){const e=this.canvas.current;e.width=this.arr.length*this.cellSize,e.height=this.arr[0].length*this.cellSize,this.initialiseAcorn(this.arr),this.printToCanvas(this.arr,this.cellSize,e)},t.render=function(){return a.createElement("div",{className:"style-module--container--b0d11"},a.createElement("canvas",{ref:this.canvas}),a.createElement("div",{className:"style-module--controls--8241a"},a.createElement("input",{className:c,type:"color",value:this.state.color1,onChange:this.color1ChangeHandler}),a.createElement("input",{className:c,type:"color",value:this.state.color2,onChange:this.color2ChangeHandler}),a.createElement("button",{className:c,onClick:this.startClickHandler},this.state.running?a.createElement(o.G,{icon:l.XQY}):a.createElement(o.G,{icon:l.zc})),a.createElement("button",{className:c,onClick:this.crossClickHandler},"Cross"),a.createElement("button",{className:c,onClick:this.acornClickHandler},"Acorn")))},t.iterate=function(e){const n=this.clone2Darray(e);for(let t=0;t3&&(n[t][r]=this.DEAD):e[t][r]===this.DEAD&&3===a&&(n[t][r]=this.ALIVE)}return n},t.getneighcount=function(e,n,t){let r=0;for(let a=0;a=n&&(e-=n),e<0&&(e+=n),e},t.printToCanvas=function(e,n,t){const r=t.getContext("2d"),a=r.getImageData(0,0,t.width,t.height),i=a.data,o=this.hexToRgb(this.state.color1),l=this.hexToRgb(this.state.color2);for(let c=0;c=0&&n=0;r--){const n=t-(r+1);n>=0&&ne.slice(0)))},t.create2Darray=function(e,n,t){const r=[];for(let a=0;a= Lz) {\r\n iz = iz - Lz;\r\n }\r\n if (iz < 0) {\r\n iz = iz + Lz;\r\n }\r\n return iz;\r\n}\n")),"\n",a.createElement(n.p,null,"Then we can just turn the Game of Life rules into some simple JavaScript code:"),"\n",a.createElement(n.pre,null,a.createElement(n.code,{className:"language-javascript"},"var ALIVE = 1;\r\nvar DEAD = 0;\r\nvar N = 200;\r\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\r\nvar requestId;\r\ngameLoop();\r\n\r\n// Runs forever, call cancelAnimationFrame(requestId) to stop.\r\nfunction gameLoop() {\r\n arr = iterate(arr);\r\n print_to_canvas(arr);\r\n requestId = requestAnimationFrame(gameLoop);\r\n}\r\n\r\n// Iterate the next state of the array.\r\nfunction iterate(oldArray) {\r\n var newArray = clone2Darray(oldArray);\r\n for (var x = 0; x < oldArray.length; x++) {\r\n for (var y = 0; y < oldArray[0].length; y++) {\r\n var aliveNeighbourCount = getneighcount(oldArray, x, y);\r\n if (oldArray[x][y] === ALIVE) {\r\n if (aliveNeighbourCount < 2) {\r\n newArray[x][y] = DEAD; // Underpopulation kills cell.\r\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\r\n newArray[x][y] = ALIVE; // Surivies!\r\n } else if (aliveNeighbourCount > 3) {\r\n newArray[x][y] = DEAD; // Overpopulation kills cell.\r\n }\r\n } else if (oldArray[x][y] === DEAD && aliveNeighbourCount === 3) {\r\n newArray[x][y] = ALIVE; // Reproduction.\r\n }\r\n }\r\n }\r\n return newArray;\r\n}\n")),"\n",a.createElement(n.p,null,"I've packaged the Game of Life code up into interactive tool below."),"\n",a.createElement(s),"\n",a.createElement(n.p,null,"The full code for this tool is available on my ",a.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),"."))}var u=function(e){void 0===e&&(e={});const{wrapper:n}=Object.assign({},(0,r.ah)(),e.components);return n?a.createElement(n,e,a.createElement(h,e)):h(e)}},270:function(e,n,t){t.r(n),t.d(n,{default:function(){return d}});var r=t(5086),a=t(7294),i=t(7025),o=t(1750),l=t(8013),c=t(5814),s=t(1151),h=t(8977);function u(e){let{data:{mdx:n},children:t}=e;const r={code:l.Z,inlineCode:c.Z},u=n;return a.createElement(i.Z,{page:"Post",post:u},a.createElement("div",{className:h.fI},a.createElement("div",{className:h.v_},a.createElement(o.Z,{post:u}),a.createElement(s.Zo,{components:r},t))))}function d(e){return a.createElement(u,e,a.createElement(r.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js.map deleted file mode 100644 index deae7f8..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-89afac1244048219ff34.js","mappings":"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","sources":["webpack://blog/./src/components/posts/golTool/style.module.css","webpack://blog/./src/components/posts/golTool/golTool.js","webpack://blog/./src/pages/posts/2019-04-06-the-game-of-life/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--b0d11\";\nexport var control = \"style-module--control--14a5d\";\nexport var controls = \"style-module--controls--8241a\";","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlay, faPause } from \"@fortawesome/free-solid-svg-icons\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nexport default class GOLTool extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.ALIVE = 1;\r\n this.DEAD = 0;\r\n this.N = 200;\r\n this.cellSize = 3;\r\n this.neighbourhood = [\r\n [1, 0],\r\n [1, 1],\r\n [0, 1],\r\n [-1, 1],\r\n [-1, 0],\r\n [-1, -1],\r\n [0, -1],\r\n [1, -1],\r\n ];\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.canvas = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n const canvas = this.canvas.current;\r\n canvas.width = this.arr.length * this.cellSize;\r\n canvas.height = this.arr[0].length * this.cellSize;\r\n this.initialiseAcorn(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, canvas);\r\n }\r\n\r\n state = {\r\n color1: \"#00ff00\",\r\n color2: \"#000000\",\r\n running: false,\r\n };\r\n\r\n color1ChangeHandler = e => {\r\n this.setState({ color1: e.target.value });\r\n };\r\n\r\n color2ChangeHandler = e => {\r\n this.setState({ color2: e.target.value });\r\n };\r\n\r\n startClickHandler = () => {\r\n if (!this.state.running) {\r\n this.setState({ running: true });\r\n this.requestId = requestAnimationFrame(this.gameLoop);\r\n } else {\r\n cancelAnimationFrame(this.requestId);\r\n this.requestId = undefined;\r\n this.setState({ running: false });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n gameLoop = () => {\r\n if (this.canvas.current !== null)\r\n {\r\n this.arr = this.iterate(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n this.requestId = requestAnimationFrame(this.gameLoop);\r\n }\r\n };\r\n\r\n iterate(oldArray) {\r\n const newArray = this.clone2Darray(oldArray);\r\n for (let x = 0; x < oldArray.length; x++) {\r\n for (let y = 0; y < oldArray[0].length; y++) {\r\n const aliveNeighbourCount = this.getneighcount(oldArray, x, y);\r\n if (oldArray[x][y] === this.ALIVE) {\r\n if (aliveNeighbourCount < 2) {\r\n newArray[x][y] = this.DEAD; // Underpopulation kills cell.\r\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\r\n newArray[x][y] = this.ALIVE; // Surivies!\r\n } else if (aliveNeighbourCount > 3) {\r\n newArray[x][y] = this.DEAD; // Overpopulation kills cell.\r\n }\r\n } else if (oldArray[x][y] === this.DEAD && aliveNeighbourCount === 3) {\r\n newArray[x][y] = this.ALIVE; // Reproduction.\r\n }\r\n }\r\n }\r\n return newArray;\r\n }\r\n\r\n // Get number of ALIVE neighbours for point (x,y)\r\n getneighcount(arr, x, y) {\r\n let nc = 0;\r\n for (let nn = 0; nn < this.neighbourhood.length; nn++) {\r\n const dx = this.neighbourhood[nn][0];\r\n const dy = this.neighbourhood[nn][1];\r\n if (\r\n arr[this.pbcz(x + dx, arr.length)][this.pbcz(y + dy, arr[x].length)] ===\r\n this.ALIVE\r\n ) {\r\n nc++;\r\n }\r\n }\r\n return nc;\r\n }\r\n\r\n // Periodic boundary conditions in z-direction:\r\n pbcz(iz, Lz) {\r\n if (iz >= Lz) {\r\n iz = iz - Lz;\r\n }\r\n if (iz < 0) {\r\n iz = iz + Lz;\r\n }\r\n return iz;\r\n }\r\n\r\n // Scales and prints the input array to canvas.\r\n printToCanvas(arr, cellSize, canvas) {\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const data = imageData.data;\r\n const rgb1 = this.hexToRgb(this.state.color1);\r\n const rgb2 = this.hexToRgb(this.state.color2);\r\n\r\n for (let x = 0; x < arr.length; x++) {\r\n for (let y = 0; y < arr[0].length; y++) {\r\n const isAlive = arr[x][y] === this.ALIVE;\r\n for (let i = 0; i < cellSize; i++) {\r\n for (let j = 0; j < cellSize; j++) {\r\n const row = x * cellSize + i;\r\n const col = y * cellSize + j;\r\n const index = (row + col * arr.length * cellSize) * 4;\r\n data[index + 0] = isAlive ? rgb1.r : rgb2.r;\r\n data[index + 1] = isAlive ? rgb1.g : rgb2.g;\r\n data[index + 2] = isAlive ? rgb1.b : rgb2.b;\r\n data[index + 3] = 255;\r\n }\r\n }\r\n }\r\n }\r\n ctx.putImageData(imageData, 0, 0);\r\n }\r\n\r\n // Converts a hex color string to rgb.\r\n hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n }\r\n\r\n acornClickHandler = () => {\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.initialiseAcorn(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n };\r\n\r\n initialiseAcorn(arr) {\r\n const cx = Math.round(arr.length / 2);\r\n const cy = Math.round(arr[0].length / 2);\r\n const acorn = [\r\n [0, 0],\r\n [-3, -1],\r\n [-2, -1],\r\n [-2, 1],\r\n [1, -1],\r\n [2, -1],\r\n [3, -1],\r\n ];\r\n for (let i = 0; i < acorn.length; i++) {\r\n const dx = acorn[i][0];\r\n const dy = acorn[i][1];\r\n arr[cx + dx][cy + dy] = this.ALIVE;\r\n }\r\n }\r\n\r\n crossClickHandler = () => {\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.initialiseCross(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n };\r\n\r\n initialiseCross(arr) {\r\n const Lx = arr.length;\r\n const Ly = arr[0].length;\r\n for (let x = 0; x < Lx; x++) {\r\n const y = x;\r\n if (y >= 0 && y < Ly) {\r\n arr[x][y] = this.ALIVE;\r\n }\r\n }\r\n for (let x = Lx - 1; x >= 0; x--) {\r\n const y = Ly - (x + 1);\r\n if (y >= 0 && y < Ly) {\r\n arr[x][y] = this.ALIVE;\r\n }\r\n }\r\n }\r\n\r\n clone2Darray(oldArray) {\r\n const newArray = oldArray.map(i => {\r\n return i.slice(0);\r\n });\r\n return newArray;\r\n }\r\n\r\n // Creates a 2D array, initialised to value\r\n create2Darray(w, h, value) {\r\n const arr = [];\r\n for (let x = 0; x < w; x++) {\r\n arr[x] = [];\r\n }\r\n for (let x = 0; x < w; x++) {\r\n for (let y = 0; y < h; y++) {\r\n arr[x][y] = value;\r\n }\r\n }\r\n return arr;\r\n }\r\n}\r\n","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport GOLTool from \"../../../components/posts/golTool/golTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n em: \"em\",\n ul: \"ul\",\n li: \"li\",\n pre: \"pre\",\n code: \"code\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"The \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\n }, \"Game of Life\"), \" is a \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Cellular_automaton\"\n }, \"cellular automataton\"), \" designed by the British mathematician \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/John_Horton_Conway\"\n }, \"John Conway\"), \". A cellular automataton is a mathematical model that consists of a grid of cells, with each cell having an finite number of states (e.g \\\"on\\\" or \\\"off\\\"). A new grid configuration (a new \", React.createElement(_components.em, null, \"generation\"), \") is created according to a fixed set of rules that determine the state of each cell based on its current state and the state of the cells around it (its \", React.createElement(_components.em, null, \"neighbourhood\"), \"). Cellular automata can be used to simulate a variety of real-world systems, from the \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Belousov%E2%80%93Zhabotinsky_reaction\"\n }, \"Belousov–Zhabotinsky reaction\"), \" to \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://blogs.msdn.microsoft.com/calvin_hsia/2014/09/30/fish-vs-sharks-predator-prey-simulation/\"\n }, \"predator prey relationships\"), \".\"), \"\\n\", React.createElement(_components.p, null, \"In Conway's Game of Life, the grid is a 2D array of square cells each with two states \", React.createElement(_components.em, null, \"alive\"), \" and \", React.createElement(_components.em, null, \"dead\"), \". Each cell interacts with its 8 neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent to it. The rules are:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Any live cell with fewer than two live neighbours dies, as if by underpopulation.\"), \"\\n\", React.createElement(_components.li, null, \"Any live cell with two or three live neighbours lives on to the next generation.\"), \"\\n\", React.createElement(_components.li, null, \"Any live cell with more than three live neighbours dies, as if by overpopulation.\"), \"\\n\", React.createElement(_components.li, null, \"Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"We can get the number of alive neighbours of a cell in 2D array with the code below. Note we are applying \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Periodic_boundary_conditions\",\n class: \"blueLink\"\n }, \"periodic boundary conditions\"), \" in both the x and y directions.\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var ALIVE = 1;\\r\\nvar DEAD = 0;\\r\\nvar N = 200;\\r\\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\\r\\nvar neighbourhood = [\\r\\n [1, 0],\\r\\n [1, 1],\\r\\n [0, 1],\\r\\n [-1, 1],\\r\\n [-1, 0],\\r\\n [-1, -1],\\r\\n [0, -1],\\r\\n [1, -1],\\r\\n];\\r\\n\\r\\n// Get number of ALIVE neighbours for point (x,y)\\r\\nfunction getneighcount(arr, x, y) {\\r\\n var nc = 0;\\r\\n for (var nn = 0; nn < neighbourhood.length; nn++) {\\r\\n var dx = neighbourhood[nn][0];\\r\\n var dy = neighbourhood[nn][1];\\r\\n if (arr[pbcz(x + dx, arr.length)][pbcz(y + dy, arr[x].length)] === ALIVE) {\\r\\n nc++;\\r\\n }\\r\\n }\\r\\n return nc;\\r\\n}\\r\\n\\r\\n// Periodic boundary conditions in z-direction:\\r\\nfunction pbcz(iz, Lz) {\\r\\n if (iz >= Lz) {\\r\\n iz = iz - Lz;\\r\\n }\\r\\n if (iz < 0) {\\r\\n iz = iz + Lz;\\r\\n }\\r\\n return iz;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"Then we can just turn the Game of Life rules into some simple JavaScript code:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var ALIVE = 1;\\r\\nvar DEAD = 0;\\r\\nvar N = 200;\\r\\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\\r\\nvar requestId;\\r\\ngameLoop();\\r\\n\\r\\n// Runs forever, call cancelAnimationFrame(requestId) to stop.\\r\\nfunction gameLoop() {\\r\\n arr = iterate(arr);\\r\\n print_to_canvas(arr);\\r\\n requestId = requestAnimationFrame(gameLoop);\\r\\n}\\r\\n\\r\\n// Iterate the next state of the array.\\r\\nfunction iterate(oldArray) {\\r\\n var newArray = clone2Darray(oldArray);\\r\\n for (var x = 0; x < oldArray.length; x++) {\\r\\n for (var y = 0; y < oldArray[0].length; y++) {\\r\\n var aliveNeighbourCount = getneighcount(oldArray, x, y);\\r\\n if (oldArray[x][y] === ALIVE) {\\r\\n if (aliveNeighbourCount < 2) {\\r\\n newArray[x][y] = DEAD; // Underpopulation kills cell.\\r\\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\\r\\n newArray[x][y] = ALIVE; // Surivies!\\r\\n } else if (aliveNeighbourCount > 3) {\\r\\n newArray[x][y] = DEAD; // Overpopulation kills cell.\\r\\n }\\r\\n } else if (oldArray[x][y] === DEAD && aliveNeighbourCount === 3) {\\r\\n newArray[x][y] = ALIVE; // Reproduction.\\r\\n }\\r\\n }\\r\\n }\\r\\n return newArray;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"I've packaged the Game of Life code up into interactive tool below.\"), \"\\n\", React.createElement(GOLTool), \"\\n\", React.createElement(_components.p, null, \"The full code for this tool is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \".\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-04-06-the-game-of-life/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["control","GOLTool","_React$Component","props","_this","call","state","color1","color2","running","color1ChangeHandler","e","setState","target","value","color2ChangeHandler","startClickHandler","cancelAnimationFrame","requestId","undefined","requestAnimationFrame","gameLoop","canvas","current","arr","iterate","printToCanvas","cellSize","acornClickHandler","create2Darray","N","DEAD","initialiseAcorn","crossClickHandler","initialiseCross","ALIVE","neighbourhood","React","_inheritsLoose","_proto","prototype","componentDidMount","this","width","length","height","render","className","ref","style","type","onChange","onClick","FontAwesomeIcon","icon","faPause","faPlay","oldArray","newArray","clone2Darray","x","y","aliveNeighbourCount","getneighcount","nc","nn","dx","dy","pbcz","iz","Lz","ctx","getContext","imageData","getImageData","data","rgb1","hexToRgb","rgb2","isAlive","i","j","index","r","g","b","putImageData","hex","result","exec","parseInt","cx","Math","round","cy","acorn","Lx","Ly","map","slice","w","h","_createMdxContent","_components","Object","assign","p","em","ul","li","pre","code","_provideComponents","components","class","href","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js similarity index 89% rename from component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js rename to component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js index 375418f..1f19faf 100644 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[915],{5086:function(e,t,n){n.r(t),n.d(t,{default:function(){return u}});var r=n(1151),a=n(7294),o=n(4578),i=n(982),l=n(9417),c="style-module--control--14a5d";let s=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={color1:"#00ff00",color2:"#000000",running:!1},n.color1ChangeHandler=e=>{n.setState({color1:e.target.value})},n.color2ChangeHandler=e=>{n.setState({color2:e.target.value})},n.startClickHandler=()=>{n.state.running?(cancelAnimationFrame(n.requestId),n.requestId=void 0,n.setState({running:!1})):(n.setState({running:!0}),n.requestId=requestAnimationFrame(n.gameLoop))},n.gameLoop=()=>{null!==n.canvas.current&&(n.arr=n.iterate(n.arr),n.printToCanvas(n.arr,n.cellSize,n.canvas.current),n.requestId=requestAnimationFrame(n.gameLoop))},n.acornClickHandler=()=>{n.arr=n.create2Darray(n.N,n.N,n.DEAD),n.initialiseAcorn(n.arr),n.printToCanvas(n.arr,n.cellSize,n.canvas.current)},n.crossClickHandler=()=>{n.arr=n.create2Darray(n.N,n.N,n.DEAD),n.initialiseCross(n.arr),n.printToCanvas(n.arr,n.cellSize,n.canvas.current)},n.ALIVE=1,n.DEAD=0,n.N=200,n.cellSize=3,n.neighbourhood=[[1,0],[1,1],[0,1],[-1,1],[-1,0],[-1,-1],[0,-1],[1,-1]],n.arr=n.create2Darray(n.N,n.N,n.DEAD),n.canvas=a.createRef(),n}(0,o.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){const e=this.canvas.current;e.width=this.arr.length*this.cellSize,e.height=this.arr[0].length*this.cellSize,this.initialiseAcorn(this.arr),this.printToCanvas(this.arr,this.cellSize,e)},n.render=function(){return a.createElement("div",{className:"style-module--container--b0d11"},a.createElement("canvas",{ref:this.canvas}),a.createElement("div",{className:"style-module--controls--8241a"},a.createElement("input",{className:c,type:"color",value:this.state.color1,onChange:this.color1ChangeHandler}),a.createElement("input",{className:c,type:"color",value:this.state.color2,onChange:this.color2ChangeHandler}),a.createElement("button",{className:c,onClick:this.startClickHandler},this.state.running?a.createElement(i.G,{icon:l.XQY}):a.createElement(i.G,{icon:l.zc})),a.createElement("button",{className:c,onClick:this.crossClickHandler},"Cross"),a.createElement("button",{className:c,onClick:this.acornClickHandler},"Acorn")))},n.iterate=function(e){const t=this.clone2Darray(e);for(let n=0;n3&&(t[n][r]=this.DEAD):e[n][r]===this.DEAD&&3===a&&(t[n][r]=this.ALIVE)}return t},n.getneighcount=function(e,t,n){let r=0;for(let a=0;a=t&&(e-=t),e<0&&(e+=t),e},n.printToCanvas=function(e,t,n){const r=n.getContext("2d"),a=r.getImageData(0,0,n.width,n.height),o=a.data,i=this.hexToRgb(this.state.color1),l=this.hexToRgb(this.state.color2);for(let c=0;c=0&&t=0;r--){const t=n-(r+1);t>=0&&te.slice(0)))},n.create2Darray=function(e,t,n){const r=[];for(let a=0;a= Lz) {\r\n iz = iz - Lz;\r\n }\r\n if (iz < 0) {\r\n iz = iz + Lz;\r\n }\r\n return iz;\r\n}\n")),"\n",a.createElement(t.p,null,"Then we can just turn the Game of Life rules into some simple JavaScript code:"),"\n",a.createElement(t.pre,null,a.createElement(t.code,{className:"language-javascript"},"var ALIVE = 1;\r\nvar DEAD = 0;\r\nvar N = 200;\r\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\r\nvar requestId;\r\ngameLoop();\r\n\r\n// Runs forever, call cancelAnimationFrame(requestId) to stop.\r\nfunction gameLoop() {\r\n arr = iterate(arr);\r\n print_to_canvas(arr);\r\n requestId = requestAnimationFrame(gameLoop);\r\n}\r\n\r\n// Iterate the next state of the array.\r\nfunction iterate(oldArray) {\r\n var newArray = clone2Darray(oldArray);\r\n for (var x = 0; x < oldArray.length; x++) {\r\n for (var y = 0; y < oldArray[0].length; y++) {\r\n var aliveNeighbourCount = getneighcount(oldArray, x, y);\r\n if (oldArray[x][y] === ALIVE) {\r\n if (aliveNeighbourCount < 2) {\r\n newArray[x][y] = DEAD; // Underpopulation kills cell.\r\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\r\n newArray[x][y] = ALIVE; // Surivies!\r\n } else if (aliveNeighbourCount > 3) {\r\n newArray[x][y] = DEAD; // Overpopulation kills cell.\r\n }\r\n } else if (oldArray[x][y] === DEAD && aliveNeighbourCount === 3) {\r\n newArray[x][y] = ALIVE; // Reproduction.\r\n }\r\n }\r\n }\r\n return newArray;\r\n}\n")),"\n",a.createElement(t.p,null,"I've packaged the Game of Life code up into interactive tool below."),"\n",a.createElement(s),"\n",a.createElement(t.p,null,"The full code for this tool is available on my ",a.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),"."))}var u=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,r.ah)(),e.components);return t?a.createElement(t,e,a.createElement(h,e)):h(e)}},270:function(e,t,n){n.r(t),n.d(t,{default:function(){return d}});var r=n(5086),a=n(7294),o=n(8610),i=n(1750),l=n(8013),c=n(5814),s=n(1151),h=n(8977);const u=e=>{let{data:{mdx:t},children:n}=e;const r={code:l.Z,inlineCode:c.Z},u=t;return a.createElement(o.Z,{page:"Post",post:u},a.createElement("div",{className:h.fI},a.createElement("div",{className:h.v_},a.createElement(i.Z,{post:u}),a.createElement(s.Zo,{components:r},n))))};function d(e){return a.createElement(u,e,a.createElement(r.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js.map \ No newline at end of file +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[915],{5086:function(e,t,n){n.r(t),n.d(t,{default:function(){return h}});var r=n(1151),a=n(7294),o=n(4578),i=n(982),l=n(9417),c="style-module--control--14a5d";let s=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={color1:"#00ff00",color2:"#000000",running:!1},n.color1ChangeHandler=e=>{n.setState({color1:e.target.value})},n.color2ChangeHandler=e=>{n.setState({color2:e.target.value})},n.startClickHandler=()=>{n.state.running?(cancelAnimationFrame(n.requestId),n.requestId=void 0,n.setState({running:!1})):(n.setState({running:!0}),n.requestId=requestAnimationFrame(n.gameLoop))},n.gameLoop=()=>{null!==n.canvas.current&&(n.arr=n.iterate(n.arr),n.printToCanvas(n.arr,n.cellSize,n.canvas.current),n.requestId=requestAnimationFrame(n.gameLoop))},n.acornClickHandler=()=>{n.arr=n.create2Darray(n.N,n.N,n.DEAD),n.initialiseAcorn(n.arr),n.printToCanvas(n.arr,n.cellSize,n.canvas.current)},n.crossClickHandler=()=>{n.arr=n.create2Darray(n.N,n.N,n.DEAD),n.initialiseCross(n.arr),n.printToCanvas(n.arr,n.cellSize,n.canvas.current)},n.ALIVE=1,n.DEAD=0,n.N=200,n.cellSize=3,n.neighbourhood=[[1,0],[1,1],[0,1],[-1,1],[-1,0],[-1,-1],[0,-1],[1,-1]],n.arr=n.create2Darray(n.N,n.N,n.DEAD),n.canvas=a.createRef(),n}(0,o.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){const e=this.canvas.current;e.width=this.arr.length*this.cellSize,e.height=this.arr[0].length*this.cellSize,this.initialiseAcorn(this.arr),this.printToCanvas(this.arr,this.cellSize,e)},n.render=function(){return a.createElement("div",{className:"style-module--container--b0d11"},a.createElement("canvas",{ref:this.canvas}),a.createElement("div",{className:"style-module--controls--8241a"},a.createElement("input",{className:c,type:"color",value:this.state.color1,onChange:this.color1ChangeHandler}),a.createElement("input",{className:c,type:"color",value:this.state.color2,onChange:this.color2ChangeHandler}),a.createElement("button",{className:c,onClick:this.startClickHandler},this.state.running?a.createElement(i.G,{icon:l.XQY}):a.createElement(i.G,{icon:l.zc})),a.createElement("button",{className:c,onClick:this.crossClickHandler},"Cross"),a.createElement("button",{className:c,onClick:this.acornClickHandler},"Acorn")))},n.iterate=function(e){const t=this.clone2Darray(e);for(let n=0;n3&&(t[n][r]=this.DEAD):e[n][r]===this.DEAD&&3===a&&(t[n][r]=this.ALIVE)}return t},n.getneighcount=function(e,t,n){let r=0;for(let a=0;a=t&&(e-=t),e<0&&(e+=t),e},n.printToCanvas=function(e,t,n){const r=n.getContext("2d"),a=r.getImageData(0,0,n.width,n.height),o=a.data,i=this.hexToRgb(this.state.color1),l=this.hexToRgb(this.state.color2);for(let c=0;c=0&&t=0;r--){const t=n-(r+1);t>=0&&te.slice(0)))},n.create2Darray=function(e,t,n){const r=[];for(let a=0;a= Lz) {\r\n iz = iz - Lz;\r\n }\r\n if (iz < 0) {\r\n iz = iz + Lz;\r\n }\r\n return iz;\r\n}\n")),"\n",a.createElement(t.p,null,"Then we can just turn the Game of Life rules into some simple JavaScript code:"),"\n",a.createElement(t.pre,null,a.createElement(t.code,{className:"language-javascript"},"var ALIVE = 1;\r\nvar DEAD = 0;\r\nvar N = 200;\r\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\r\nvar requestId;\r\ngameLoop();\r\n\r\n// Runs forever, call cancelAnimationFrame(requestId) to stop.\r\nfunction gameLoop() {\r\n arr = iterate(arr);\r\n print_to_canvas(arr);\r\n requestId = requestAnimationFrame(gameLoop);\r\n}\r\n\r\n// Iterate the next state of the array.\r\nfunction iterate(oldArray) {\r\n var newArray = clone2Darray(oldArray);\r\n for (var x = 0; x < oldArray.length; x++) {\r\n for (var y = 0; y < oldArray[0].length; y++) {\r\n var aliveNeighbourCount = getneighcount(oldArray, x, y);\r\n if (oldArray[x][y] === ALIVE) {\r\n if (aliveNeighbourCount < 2) {\r\n newArray[x][y] = DEAD; // Underpopulation kills cell.\r\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\r\n newArray[x][y] = ALIVE; // Surivies!\r\n } else if (aliveNeighbourCount > 3) {\r\n newArray[x][y] = DEAD; // Overpopulation kills cell.\r\n }\r\n } else if (oldArray[x][y] === DEAD && aliveNeighbourCount === 3) {\r\n newArray[x][y] = ALIVE; // Reproduction.\r\n }\r\n }\r\n }\r\n return newArray;\r\n}\n")),"\n",a.createElement(t.p,null,"I've packaged the Game of Life code up into interactive tool below."),"\n",a.createElement(s),"\n",a.createElement(t.p,null,"The full code for this tool is available on my ",a.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),"."))}var h=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,r.ah)(),e.components);return t?a.createElement(t,e,a.createElement(u,e)):u(e)}},270:function(e,t,n){n.r(t),n.d(t,{Head:function(){return m},default:function(){return g}});var r=n(5086),a=n(7294),o=n(3306),i=n(4527),l=n(1750),c=n(8013),s=n(5814),u=n(1151),h=n(8977);const d=e=>{let{data:{mdx:t},children:n}=e;const r={code:c.Z,inlineCode:s.Z},o=t;return a.createElement(i.Z,null,a.createElement("div",{className:h.fI},a.createElement("div",{className:h.v_},a.createElement(l.Z,{post:o}),a.createElement(u.Zo,{components:r},n))))},m=e=>{let{data:{mdx:t}}=e;const n=t;return a.createElement(o.Z,{page:"Post",post:n})};function g(e){return a.createElement(d,e,a.createElement(r.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js.map new file mode 100644 index 0000000..d4f1f39 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js","mappings":"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","sources":["webpack://blog/./src/components/posts/golTool/style.module.css","webpack://blog/./src/components/posts/golTool/golTool.js","webpack://blog/./src/pages/posts/2019-04-06-the-game-of-life/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--b0d11\";\nexport var control = \"style-module--control--14a5d\";\nexport var controls = \"style-module--controls--8241a\";","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlay, faPause } from \"@fortawesome/free-solid-svg-icons\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nexport default class GOLTool extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.ALIVE = 1;\r\n this.DEAD = 0;\r\n this.N = 200;\r\n this.cellSize = 3;\r\n this.neighbourhood = [\r\n [1, 0],\r\n [1, 1],\r\n [0, 1],\r\n [-1, 1],\r\n [-1, 0],\r\n [-1, -1],\r\n [0, -1],\r\n [1, -1],\r\n ];\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.canvas = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n const canvas = this.canvas.current;\r\n canvas.width = this.arr.length * this.cellSize;\r\n canvas.height = this.arr[0].length * this.cellSize;\r\n this.initialiseAcorn(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, canvas);\r\n }\r\n\r\n state = {\r\n color1: \"#00ff00\",\r\n color2: \"#000000\",\r\n running: false,\r\n };\r\n\r\n color1ChangeHandler = e => {\r\n this.setState({ color1: e.target.value });\r\n };\r\n\r\n color2ChangeHandler = e => {\r\n this.setState({ color2: e.target.value });\r\n };\r\n\r\n startClickHandler = () => {\r\n if (!this.state.running) {\r\n this.setState({ running: true });\r\n this.requestId = requestAnimationFrame(this.gameLoop);\r\n } else {\r\n cancelAnimationFrame(this.requestId);\r\n this.requestId = undefined;\r\n this.setState({ running: false });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n gameLoop = () => {\r\n if (this.canvas.current !== null)\r\n {\r\n this.arr = this.iterate(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n this.requestId = requestAnimationFrame(this.gameLoop);\r\n }\r\n };\r\n\r\n iterate(oldArray) {\r\n const newArray = this.clone2Darray(oldArray);\r\n for (let x = 0; x < oldArray.length; x++) {\r\n for (let y = 0; y < oldArray[0].length; y++) {\r\n const aliveNeighbourCount = this.getneighcount(oldArray, x, y);\r\n if (oldArray[x][y] === this.ALIVE) {\r\n if (aliveNeighbourCount < 2) {\r\n newArray[x][y] = this.DEAD; // Underpopulation kills cell.\r\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\r\n newArray[x][y] = this.ALIVE; // Surivies!\r\n } else if (aliveNeighbourCount > 3) {\r\n newArray[x][y] = this.DEAD; // Overpopulation kills cell.\r\n }\r\n } else if (oldArray[x][y] === this.DEAD && aliveNeighbourCount === 3) {\r\n newArray[x][y] = this.ALIVE; // Reproduction.\r\n }\r\n }\r\n }\r\n return newArray;\r\n }\r\n\r\n // Get number of ALIVE neighbours for point (x,y)\r\n getneighcount(arr, x, y) {\r\n let nc = 0;\r\n for (let nn = 0; nn < this.neighbourhood.length; nn++) {\r\n const dx = this.neighbourhood[nn][0];\r\n const dy = this.neighbourhood[nn][1];\r\n if (\r\n arr[this.pbcz(x + dx, arr.length)][this.pbcz(y + dy, arr[x].length)] ===\r\n this.ALIVE\r\n ) {\r\n nc++;\r\n }\r\n }\r\n return nc;\r\n }\r\n\r\n // Periodic boundary conditions in z-direction:\r\n pbcz(iz, Lz) {\r\n if (iz >= Lz) {\r\n iz = iz - Lz;\r\n }\r\n if (iz < 0) {\r\n iz = iz + Lz;\r\n }\r\n return iz;\r\n }\r\n\r\n // Scales and prints the input array to canvas.\r\n printToCanvas(arr, cellSize, canvas) {\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const data = imageData.data;\r\n const rgb1 = this.hexToRgb(this.state.color1);\r\n const rgb2 = this.hexToRgb(this.state.color2);\r\n\r\n for (let x = 0; x < arr.length; x++) {\r\n for (let y = 0; y < arr[0].length; y++) {\r\n const isAlive = arr[x][y] === this.ALIVE;\r\n for (let i = 0; i < cellSize; i++) {\r\n for (let j = 0; j < cellSize; j++) {\r\n const row = x * cellSize + i;\r\n const col = y * cellSize + j;\r\n const index = (row + col * arr.length * cellSize) * 4;\r\n data[index + 0] = isAlive ? rgb1.r : rgb2.r;\r\n data[index + 1] = isAlive ? rgb1.g : rgb2.g;\r\n data[index + 2] = isAlive ? rgb1.b : rgb2.b;\r\n data[index + 3] = 255;\r\n }\r\n }\r\n }\r\n }\r\n ctx.putImageData(imageData, 0, 0);\r\n }\r\n\r\n // Converts a hex color string to rgb.\r\n hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n }\r\n\r\n acornClickHandler = () => {\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.initialiseAcorn(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n };\r\n\r\n initialiseAcorn(arr) {\r\n const cx = Math.round(arr.length / 2);\r\n const cy = Math.round(arr[0].length / 2);\r\n const acorn = [\r\n [0, 0],\r\n [-3, -1],\r\n [-2, -1],\r\n [-2, 1],\r\n [1, -1],\r\n [2, -1],\r\n [3, -1],\r\n ];\r\n for (let i = 0; i < acorn.length; i++) {\r\n const dx = acorn[i][0];\r\n const dy = acorn[i][1];\r\n arr[cx + dx][cy + dy] = this.ALIVE;\r\n }\r\n }\r\n\r\n crossClickHandler = () => {\r\n this.arr = this.create2Darray(this.N, this.N, this.DEAD);\r\n this.initialiseCross(this.arr);\r\n this.printToCanvas(this.arr, this.cellSize, this.canvas.current);\r\n };\r\n\r\n initialiseCross(arr) {\r\n const Lx = arr.length;\r\n const Ly = arr[0].length;\r\n for (let x = 0; x < Lx; x++) {\r\n const y = x;\r\n if (y >= 0 && y < Ly) {\r\n arr[x][y] = this.ALIVE;\r\n }\r\n }\r\n for (let x = Lx - 1; x >= 0; x--) {\r\n const y = Ly - (x + 1);\r\n if (y >= 0 && y < Ly) {\r\n arr[x][y] = this.ALIVE;\r\n }\r\n }\r\n }\r\n\r\n clone2Darray(oldArray) {\r\n const newArray = oldArray.map(i => {\r\n return i.slice(0);\r\n });\r\n return newArray;\r\n }\r\n\r\n // Creates a 2D array, initialised to value\r\n create2Darray(w, h, value) {\r\n const arr = [];\r\n for (let x = 0; x < w; x++) {\r\n arr[x] = [];\r\n }\r\n for (let x = 0; x < w; x++) {\r\n for (let y = 0; y < h; y++) {\r\n arr[x][y] = value;\r\n }\r\n }\r\n return arr;\r\n }\r\n}\r\n","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport GOLTool from \"../../../components/posts/golTool/golTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n em: \"em\",\n ul: \"ul\",\n li: \"li\",\n pre: \"pre\",\n code: \"code\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"The \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\n }, \"Game of Life\"), \" is a \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Cellular_automaton\"\n }, \"cellular automataton\"), \" designed by the British mathematician \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/John_Horton_Conway\"\n }, \"John Conway\"), \". A cellular automataton is a mathematical model that consists of a grid of cells, with each cell having an finite number of states (e.g \\\"on\\\" or \\\"off\\\"). A new grid configuration (a new \", React.createElement(_components.em, null, \"generation\"), \") is created according to a fixed set of rules that determine the state of each cell based on its current state and the state of the cells around it (its \", React.createElement(_components.em, null, \"neighbourhood\"), \"). Cellular automata can be used to simulate a variety of real-world systems, from the \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://en.wikipedia.org/wiki/Belousov%E2%80%93Zhabotinsky_reaction\"\n }, \"Belousov–Zhabotinsky reaction\"), \" to \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://blogs.msdn.microsoft.com/calvin_hsia/2014/09/30/fish-vs-sharks-predator-prey-simulation/\"\n }, \"predator prey relationships\"), \".\"), \"\\n\", React.createElement(_components.p, null, \"In Conway's Game of Life, the grid is a 2D array of square cells each with two states \", React.createElement(_components.em, null, \"alive\"), \" and \", React.createElement(_components.em, null, \"dead\"), \". Each cell interacts with its 8 neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent to it. The rules are:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Any live cell with fewer than two live neighbours dies, as if by underpopulation.\"), \"\\n\", React.createElement(_components.li, null, \"Any live cell with two or three live neighbours lives on to the next generation.\"), \"\\n\", React.createElement(_components.li, null, \"Any live cell with more than three live neighbours dies, as if by overpopulation.\"), \"\\n\", React.createElement(_components.li, null, \"Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.\"), \"\\n\"), \"\\n\", React.createElement(_components.p, null, \"We can get the number of alive neighbours of a cell in 2D array with the code below. Note we are applying \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Periodic_boundary_conditions\",\n class: \"blueLink\"\n }, \"periodic boundary conditions\"), \" in both the x and y directions.\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var ALIVE = 1;\\r\\nvar DEAD = 0;\\r\\nvar N = 200;\\r\\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\\r\\nvar neighbourhood = [\\r\\n [1, 0],\\r\\n [1, 1],\\r\\n [0, 1],\\r\\n [-1, 1],\\r\\n [-1, 0],\\r\\n [-1, -1],\\r\\n [0, -1],\\r\\n [1, -1],\\r\\n];\\r\\n\\r\\n// Get number of ALIVE neighbours for point (x,y)\\r\\nfunction getneighcount(arr, x, y) {\\r\\n var nc = 0;\\r\\n for (var nn = 0; nn < neighbourhood.length; nn++) {\\r\\n var dx = neighbourhood[nn][0];\\r\\n var dy = neighbourhood[nn][1];\\r\\n if (arr[pbcz(x + dx, arr.length)][pbcz(y + dy, arr[x].length)] === ALIVE) {\\r\\n nc++;\\r\\n }\\r\\n }\\r\\n return nc;\\r\\n}\\r\\n\\r\\n// Periodic boundary conditions in z-direction:\\r\\nfunction pbcz(iz, Lz) {\\r\\n if (iz >= Lz) {\\r\\n iz = iz - Lz;\\r\\n }\\r\\n if (iz < 0) {\\r\\n iz = iz + Lz;\\r\\n }\\r\\n return iz;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"Then we can just turn the Game of Life rules into some simple JavaScript code:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var ALIVE = 1;\\r\\nvar DEAD = 0;\\r\\nvar N = 200;\\r\\nvar arr = create2Darray(N, N, DEAD); // Iitialises a new 2D array with array values set to 0.\\r\\nvar requestId;\\r\\ngameLoop();\\r\\n\\r\\n// Runs forever, call cancelAnimationFrame(requestId) to stop.\\r\\nfunction gameLoop() {\\r\\n arr = iterate(arr);\\r\\n print_to_canvas(arr);\\r\\n requestId = requestAnimationFrame(gameLoop);\\r\\n}\\r\\n\\r\\n// Iterate the next state of the array.\\r\\nfunction iterate(oldArray) {\\r\\n var newArray = clone2Darray(oldArray);\\r\\n for (var x = 0; x < oldArray.length; x++) {\\r\\n for (var y = 0; y < oldArray[0].length; y++) {\\r\\n var aliveNeighbourCount = getneighcount(oldArray, x, y);\\r\\n if (oldArray[x][y] === ALIVE) {\\r\\n if (aliveNeighbourCount < 2) {\\r\\n newArray[x][y] = DEAD; // Underpopulation kills cell.\\r\\n } else if (aliveNeighbourCount === 2 || aliveNeighbourCount === 3) {\\r\\n newArray[x][y] = ALIVE; // Surivies!\\r\\n } else if (aliveNeighbourCount > 3) {\\r\\n newArray[x][y] = DEAD; // Overpopulation kills cell.\\r\\n }\\r\\n } else if (oldArray[x][y] === DEAD && aliveNeighbourCount === 3) {\\r\\n newArray[x][y] = ALIVE; // Reproduction.\\r\\n }\\r\\n }\\r\\n }\\r\\n return newArray;\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"I've packaged the Game of Life code up into interactive tool below.\"), \"\\n\", React.createElement(GOLTool), \"\\n\", React.createElement(_components.p, null, \"The full code for this tool is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \".\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-04-06-the-game-of-life/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["control","GOLTool","_React$Component","props","_this","call","state","color1","color2","running","color1ChangeHandler","e","setState","target","value","color2ChangeHandler","startClickHandler","cancelAnimationFrame","requestId","undefined","requestAnimationFrame","gameLoop","canvas","current","arr","iterate","printToCanvas","cellSize","acornClickHandler","create2Darray","N","DEAD","initialiseAcorn","crossClickHandler","initialiseCross","ALIVE","neighbourhood","React","_inheritsLoose","_proto","prototype","componentDidMount","this","width","length","height","render","className","ref","style","type","onChange","onClick","FontAwesomeIcon","icon","faPause","faPlay","oldArray","newArray","clone2Darray","x","y","aliveNeighbourCount","getneighcount","nc","nn","dx","dy","pbcz","iz","Lz","ctx","getContext","imageData","getImageData","data","rgb1","hexToRgb","rgb2","isAlive","i","j","index","r","g","b","putImageData","hex","result","exec","parseInt","cx","Math","round","cy","acorn","Lx","Ly","map","slice","w","h","_createMdxContent","_components","Object","assign","p","em","ul","li","pre","code","_provideComponents","components","class","href","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js deleted file mode 100644 index 5310af7..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[871],{8512:function(e,t,a){a.r(t),a.d(t,{default:function(){return w}});var n=a(1151),r=a(7294),l=a.p+"static/flower-fcef3540a73d05d95337bb12ec39768e.png",i="style-module--displayBlock--78c86",o="style-module--displayHidden--4d520";function s(e,t){const a=c(e),n=h(a,[-1,-2,-1,0,0,0,1,2,1]),r=h(a,[-1,0,1,-2,0,2,-1,0,1]),l=new Float32Array(a.width*a.height*4),i=new Float32Array(a.width*a.height*4);let o=-1;for(let c=0;co&&(o=l[c]),i[c]=Math.atan2(e,t)+Math.PI}const s=e.getContext("2d").getImageData(0,0,e.width,e.height);for(let c=0;c{let{transformType:t}=e;const a=(0,r.useRef)(),n=(0,r.useRef)(),{0:h,1:u}=(0,r.useState)(!1),{0:d,1:g}=(0,r.useState)(!1),m=e=>{switch(t){case"greyscale":return c(e);case"sobel":return s(e,0);case"sobelColour":return s(e,1);default:return e.getContext("2d").getImageData(0,0,e.width,e.height)}};return r.createElement("div",null,r.createElement("div",{className:"style-module--container--4d7b9"},r.createElement("canvas",{ref:a,className:h?i:o}),r.createElement("img",{ref:n,className:h?o:i,src:l,alt:"flower"})),r.createElement("div",{className:"style-module--controls--e95b8"},r.createElement("button",{onClick:()=>{const e=a.current.getContext("2d");if(a.current.width=n.current.width,a.current.height=n.current.height,e.drawImage(n.current,0,0),d)g(!1);else{const t=m(a.current);e.putImageData(t,0,0),u(!0),g(!0)}}},d?"Reload":"Apply")))};var g=()=>{const e=(0,r.useRef)(),t=(0,r.useRef)(),a=(0,r.useRef)(),{0:n,1:l}=(0,r.useState)(!1),{0:i,1:o}=(0,r.useState)(!1),{0:c,1:h}=(0,r.useState)(1),u=(e,t,a)=>{let n=1;(tt.current.click()},"Select an Image"),r.createElement("input",{accept:"image/*",className:"style-module--displayHidden--e4435",type:"file",ref:t,onChange:t=>{const n=new FileReader;n.onload=t=>{a.current=new Image,a.current.onload=()=>{u(a.current,600,e.current)},a.current.src=t.target.result};const r=t.target.files[0];r&&r.type.match("image.*")&&n.readAsDataURL(r)}}),n&&r.createElement("div",null,r.createElement("div",{className:"style-module--saturation--62163"},r.createElement("label",{htmlFor:"saturation"},"Saturation:"),r.createElement("input",{id:"saturation",type:"range",step:"0.01",min:"0",max:"1",defaultValue:c,onChange:e=>h(e.target.value)}),r.createElement("span",null,c)),r.createElement("button",{onClick:()=>{const t=e.current.getContext("2d");if(i)u(a.current,600,e.current),o(!1);else{const a=s(e.current,c);t.putImageData(a,0,0),o(!0)}}},i?"Reload":"Apply")))},m=a.p+"static/colourWheel-3966a58508ae3112e498a3fe25aba01e.png",p="style-module--colourWheel--53b77";function f(e){const t=Object.assign({p:"p",pre:"pre",code:"code",h2:"h2",ul:"ul",li:"li"},(0,n.ah)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,"I recently watched a ",r.createElement("a",{class:"blueLink",href:"https://youtu.be/uihBwtPIBxM"},"Computerphile YouTube video")," about Sobel edge detection and thought I'd write a post about it. In Sobel edge detection a ",r.createElement("a",{href:"https://en.wikipedia.org/wiki/Sobel_operator",class:"blueLink"},"Sobel operation")," is applied to an image in order to detect shapes/edges in the image. The main application of edge detection is in robotic vision, for example allowing self-driving vehicles to detect motorway lanes, but it can be used for any image analysis."),"\n",r.createElement(t.p,null,"The first step in the Sobel operation is to ",r.createElement("a",{href:"https://en.wikipedia.org/wiki/Grayscale",class:"blueLink"},"greyscale")," the image. This can be done with a few lines of JavaScript code:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-javascript"},'var gsFigure = document.querySelector("#fig-greyscale");\r\nvar gsImage = gsFigure.querySelector("img");\r\nvar gsCanvas = gsFigure.querySelector("canvas");\r\nvar gsbutton = gsFigure.querySelector(".button");\r\nvar gsCtx = gsCanvas.getContext("2d");\r\n\r\ngsbutton.addEventListener("click", () => {\r\n gsCanvas.width = gsImage.width;\r\n gsCanvas.height = gsImage.height;\r\n gsCtx.drawImage(gsImage, 0, 0);\r\n var gsImageData = gsCtx.getImageData(0, 0, gsCanvas.width, gsCanvas.height);\r\n var id = greyScale(gsImageData);\r\n gsCtx.putImageData(id, 0, 0);\r\n}\r\n\r\nfunction greyScale (imageData) {\r\n var d = imageData.data;\r\n for (var i=0; i{let{data:{mdx:t},children:a}=e;const n={code:o.Z,inlineCode:s.Z},u=t;return r.createElement(l.Z,{page:"Post",post:u},r.createElement("div",{className:h.fI},r.createElement("div",{className:h.v_},r.createElement(i.Z,{post:u}),r.createElement(c.Zo,{components:n},a))))};function d(e){return r.createElement(u,e,r.createElement(n.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js.map deleted file mode 100644 index f3b3cee..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js","mappings":"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","sources":["webpack://blog/./static/flower.png","webpack://blog/./src/components/posts/sobel/sobelFlower/style.module.css","webpack://blog/./src/components/posts/sobel/sobel.js","webpack://blog/./src/components/posts/sobel/sobelFlower/sobelFlower.js","webpack://blog/./src/components/posts/sobel/sobelTool/sobelTool.js","webpack://blog/./src/components/posts/sobel/sobelTool/style.module.css","webpack://blog/./static/colourWheel.png","webpack://blog/./src/pages/posts/2019-05-19-sobel/style.module.css","webpack://blog/./src/pages/posts/2019-05-19-sobel/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/flower-fcef3540a73d05d95337bb12ec39768e.png\";","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--4d7b9\";\nexport var controls = \"style-module--controls--e95b8\";\nexport var displayBlock = \"style-module--displayBlock--78c86\";\nexport var displayHidden = \"style-module--displayHidden--4d520\";","function sobel(canvas, saturation) {\r\n const px = greyscale(canvas);\r\n const vertical = convolute(px, [-1, -2, -1, 0, 0, 0, 1, 2, 1]);\r\n const horizontal = convolute(px, [-1, 0, 1, -2, 0, 2, -1, 0, 1]);\r\n const magnitude = new Float32Array(px.width * px.height * 4);\r\n const orientation = new Float32Array(px.width * px.height * 4);\r\n let maxMagnitude = -1;\r\n for (let i = 0; i < px.data.length; i += 4) {\r\n const dy = vertical.data[i];\r\n const dx = horizontal.data[i];\r\n magnitude[i] = Math.sqrt(dx * dx + dy * dy);\r\n if (magnitude[i] > maxMagnitude) {\r\n maxMagnitude = magnitude[i];\r\n }\r\n orientation[i] = Math.atan2(dy, dx) + Math.PI;\r\n }\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n for (let j = 0; j < imageData.data.length; j += 4) {\r\n const rgb = HSVtoRGB(\r\n orientation[j] / (2 * Math.PI),\r\n saturation,\r\n magnitude[j] / maxMagnitude\r\n );\r\n imageData.data[j] = rgb.r;\r\n imageData.data[j + 1] = rgb.g;\r\n imageData.data[j + 2] = rgb.b;\r\n imageData.data[j + 3] = 255;\r\n }\r\n return imageData;\r\n}\r\n\r\nfunction greyscale(canvas) {\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const d = imageData.data;\r\n for (var i = 0; i < d.length; i += 4) {\r\n const r = d[i];\r\n const g = d[i + 1];\r\n const b = d[i + 2];\r\n const v = 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n d[i] = d[i + 1] = d[i + 2] = v;\r\n }\r\n return imageData;\r\n}\r\n\r\nfunction convolute(pixels, weights) {\r\n const side = Math.round(Math.sqrt(weights.length));\r\n const halfSide = Math.floor(side / 2);\r\n const src = pixels.data;\r\n const sw = pixels.width;\r\n const sh = pixels.height;\r\n const output = {\r\n width: sw,\r\n height: sh,\r\n data: new Float32Array(sw * sh * 4),\r\n };\r\n const dst = output.data;\r\n\r\n for (let y = 0; y < sh; y++) {\r\n for (let x = 0; x < sw; x++) {\r\n const sy = y;\r\n const sx = x;\r\n const dstOff = (y * sw + x) * 4;\r\n let r = 0,\r\n g = 0,\r\n b = 0,\r\n a = 0;\r\n for (var cy = 0; cy < side; cy++) {\r\n for (var cx = 0; cx < side; cx++) {\r\n const scy = Math.min(sh - 1, Math.max(0, sy + cy - halfSide));\r\n const scx = Math.min(sw - 1, Math.max(0, sx + cx - halfSide));\r\n const srcOff = (scy * sw + scx) * 4;\r\n const wt = weights[cy * side + cx];\r\n r += src[srcOff] * wt;\r\n g += src[srcOff + 1] * wt;\r\n b += src[srcOff + 2] * wt;\r\n a += src[srcOff + 3] * wt;\r\n }\r\n }\r\n dst[dstOff] = r;\r\n dst[dstOff + 1] = g;\r\n dst[dstOff + 2] = b;\r\n dst[dstOff + 3] = a;\r\n }\r\n }\r\n return output;\r\n}\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n let r, g, b, i, f, p, q, t;\r\n if (arguments.length === 1) {\r\n s = h.s;\r\n v = h.v;\r\n h = h.h;\r\n }\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255),\r\n };\r\n}\r\n\r\nexport { sobel, greyscale };\r\n","import React, { useState, useRef } from \"react\";\r\nimport flower from \"../../../../../static/flower.png\";\r\nimport * as style from \"./style.module.css\";\r\nimport { sobel, greyscale } from \"../sobel.js\";\r\n\r\nconst SobelFlower = ({ transformType }) => {\r\n const canvas = useRef();\r\n const image = useRef();\r\n\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n const [transformApplied, setTransformApplied] = useState(false);\r\n\r\n const applyClickHandler = () => {\r\n const ctx = canvas.current.getContext(\"2d\");\r\n canvas.current.width = image.current.width;\r\n canvas.current.height = image.current.height;\r\n ctx.drawImage(image.current, 0, 0);\r\n if (!transformApplied) {\r\n const transformedImageData = applyTransform(canvas.current);\r\n ctx.putImageData(transformedImageData, 0, 0);\r\n setDefaultImageHidden(true);\r\n setTransformApplied(true);\r\n } else {\r\n setTransformApplied(false);\r\n }\r\n };\r\n\r\n const applyTransform = canvas => {\r\n switch (transformType) {\r\n case \"greyscale\":\r\n return greyscale(canvas);\r\n case \"sobel\":\r\n return sobel(canvas, 0);\r\n case \"sobelColour\":\r\n return sobel(canvas, 1);\r\n default:\r\n const ctx = canvas.getContext(\"2d\");\r\n return ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SobelFlower;","import React, { useState, useRef } from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport { sobel } from \"../sobel.js\";\r\n\r\nconst SobelTool = () => {\r\n const canvas = useRef();\r\n const fileInput = useRef();\r\n const image = useRef();\r\n const maxImageSize = 600;\r\n\r\n const [imageSelected, setImageSelected] = useState(false);\r\n const [transformApplied, setTransformApplied] = useState(false);\r\n const [saturation, setSaturation] = useState(1);\r\n\r\n const selectImageChangeHandler = e => {\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n image.current = new Image();\r\n image.current.onload = () => {\r\n drawImageToScale(image.current, maxImageSize, canvas.current);\r\n };\r\n image.current.src = event.target.result;\r\n };\r\n const file = e.target.files[0];\r\n if (file && file.type.match(\"image.*\")) {\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n const applyClickHandler = () => {\r\n const ctx = canvas.current.getContext(\"2d\");\r\n if (!transformApplied) {\r\n const id = sobel(canvas.current, saturation);\r\n ctx.putImageData(id, 0, 0);\r\n setTransformApplied(true);\r\n } else {\r\n drawImageToScale(image.current, maxImageSize, canvas.current);\r\n setTransformApplied(false);\r\n }\r\n };\r\n\r\n const drawImageToScale = (image, maxSize, canvas) => {\r\n let scale = 1;\r\n if (maxSize < image.width || maxSize < image.height) {\r\n scale = Math.min(maxSize / image.width, maxSize / image.height);\r\n }\r\n canvas.width = image.width * scale;\r\n canvas.height = image.height * scale;\r\n const ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n setImageSelected(true);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {imageSelected && (\r\n
\r\n
\r\n \r\n setSaturation(e.target.value)}\r\n />\r\n {saturation}\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SobelTool;","// extracted by mini-css-extract-plugin\nexport var displayHidden = \"style-module--displayHidden--e4435\";\nexport var saturation = \"style-module--saturation--62163\";","export default __webpack_public_path__ + \"static/colourWheel-3966a58508ae3112e498a3fe25aba01e.png\";","// extracted by mini-css-extract-plugin\nexport var colourWheel = \"style-module--colourWheel--53b77\";","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport FlowerSobel from \"../../../components/posts/sobel/sobelFlower/sobelFlower\";\nimport SobelTool from \"../../../components/posts/sobel/sobelTool/sobelTool\";\nimport colourWheel from \"../../../../static/colourWheel.png\";\nimport * as style from \"./style.module.css\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n pre: \"pre\",\n code: \"code\",\n h2: \"h2\",\n ul: \"ul\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I recently watched a \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://youtu.be/uihBwtPIBxM\"\n }, \"Computerphile YouTube video\"), \" about Sobel edge detection and thought I'd write a post about it. In Sobel edge detection a \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Sobel_operator\",\n class: \"blueLink\"\n }, \"Sobel operation\"), \" is applied to an image in order to detect shapes/edges in the image. The main application of edge detection is in robotic vision, for example allowing self-driving vehicles to detect motorway lanes, but it can be used for any image analysis.\"), \"\\n\", React.createElement(_components.p, null, \"The first step in the Sobel operation is to \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Grayscale\",\n class: \"blueLink\"\n }, \"greyscale\"), \" the image. This can be done with a few lines of JavaScript code:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var gsFigure = document.querySelector(\\\"#fig-greyscale\\\");\\r\\nvar gsImage = gsFigure.querySelector(\\\"img\\\");\\r\\nvar gsCanvas = gsFigure.querySelector(\\\"canvas\\\");\\r\\nvar gsbutton = gsFigure.querySelector(\\\".button\\\");\\r\\nvar gsCtx = gsCanvas.getContext(\\\"2d\\\");\\r\\n\\r\\ngsbutton.addEventListener(\\\"click\\\", () => {\\r\\n gsCanvas.width = gsImage.width;\\r\\n gsCanvas.height = gsImage.height;\\r\\n gsCtx.drawImage(gsImage, 0, 0);\\r\\n var gsImageData = gsCtx.getImageData(0, 0, gsCanvas.width, gsCanvas.height);\\r\\n var id = greyScale(gsImageData);\\r\\n gsCtx.putImageData(id, 0, 0);\\r\\n}\\r\\n\\r\\nfunction greyScale (imageData) {\\r\\n var d = imageData.data;\\r\\n for (var i=0; i {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["displayBlock","displayHidden","sobel","canvas","saturation","px","greyscale","vertical","convolute","horizontal","magnitude","Float32Array","width","height","orientation","maxMagnitude","i","data","length","dy","dx","Math","sqrt","atan2","PI","imageData","getContext","getImageData","j","rgb","HSVtoRGB","r","g","b","d","v","pixels","weights","side","round","halfSide","floor","src","sw","sh","output","dst","y","x","sy","sx","dstOff","a","cy","cx","srcOff","min","max","wt","h","s","f","p","q","t","arguments","_ref","transformType","useRef","image","defaultImageHidden","setDefaultImageHidden","useState","transformApplied","setTransformApplied","applyTransform","React","className","ref","style","flower","alt","onClick","applyClickHandler","ctx","current","drawImage","transformedImageData","putImageData","SobelTool","fileInput","imageSelected","setImageSelected","setSaturation","drawImageToScale","maxSize","scale","click","accept","type","onChange","e","reader","FileReader","onload","event","Image","target","result","file","files","match","readAsDataURL","htmlFor","id","step","defaultValue","value","_createMdxContent","props","_components","Object","assign","pre","code","h2","ul","li","_provideComponents","components","class","href","FlowerSobel","colourWheel","wrapper","MDXLayout","PostTemplate","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-6ad88a56dbe0f299b369.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-6ad88a56dbe0f299b369.js.map deleted file mode 100644 index 021dd7a..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-6ad88a56dbe0f299b369.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-6ad88a56dbe0f299b369.js","mappings":"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","sources":["webpack://blog/./static/flower.png","webpack://blog/./src/components/posts/sobel/sobelFlower/style.module.css","webpack://blog/./src/components/posts/sobel/sobel.js","webpack://blog/./src/components/posts/sobel/sobelFlower/sobelFlower.js","webpack://blog/./src/components/posts/sobel/sobelTool/sobelTool.js","webpack://blog/./src/components/posts/sobel/sobelTool/style.module.css","webpack://blog/./static/colourWheel.png","webpack://blog/./src/pages/posts/2019-05-19-sobel/style.module.css","webpack://blog/./src/pages/posts/2019-05-19-sobel/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/flower-fcef3540a73d05d95337bb12ec39768e.png\";","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--4d7b9\";\nexport var controls = \"style-module--controls--e95b8\";\nexport var displayBlock = \"style-module--displayBlock--78c86\";\nexport var displayHidden = \"style-module--displayHidden--4d520\";","function sobel(canvas, saturation) {\r\n const px = greyscale(canvas);\r\n const vertical = convolute(px, [-1, -2, -1, 0, 0, 0, 1, 2, 1]);\r\n const horizontal = convolute(px, [-1, 0, 1, -2, 0, 2, -1, 0, 1]);\r\n const magnitude = new Float32Array(px.width * px.height * 4);\r\n const orientation = new Float32Array(px.width * px.height * 4);\r\n let maxMagnitude = -1;\r\n for (let i = 0; i < px.data.length; i += 4) {\r\n const dy = vertical.data[i];\r\n const dx = horizontal.data[i];\r\n magnitude[i] = Math.sqrt(dx * dx + dy * dy);\r\n if (magnitude[i] > maxMagnitude) {\r\n maxMagnitude = magnitude[i];\r\n }\r\n orientation[i] = Math.atan2(dy, dx) + Math.PI;\r\n }\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n for (let j = 0; j < imageData.data.length; j += 4) {\r\n const rgb = HSVtoRGB(\r\n orientation[j] / (2 * Math.PI),\r\n saturation,\r\n magnitude[j] / maxMagnitude\r\n );\r\n imageData.data[j] = rgb.r;\r\n imageData.data[j + 1] = rgb.g;\r\n imageData.data[j + 2] = rgb.b;\r\n imageData.data[j + 3] = 255;\r\n }\r\n return imageData;\r\n}\r\n\r\nfunction greyscale(canvas) {\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const d = imageData.data;\r\n for (var i = 0; i < d.length; i += 4) {\r\n const r = d[i];\r\n const g = d[i + 1];\r\n const b = d[i + 2];\r\n const v = 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n d[i] = d[i + 1] = d[i + 2] = v;\r\n }\r\n return imageData;\r\n}\r\n\r\nfunction convolute(pixels, weights) {\r\n const side = Math.round(Math.sqrt(weights.length));\r\n const halfSide = Math.floor(side / 2);\r\n const src = pixels.data;\r\n const sw = pixels.width;\r\n const sh = pixels.height;\r\n const output = {\r\n width: sw,\r\n height: sh,\r\n data: new Float32Array(sw * sh * 4),\r\n };\r\n const dst = output.data;\r\n\r\n for (let y = 0; y < sh; y++) {\r\n for (let x = 0; x < sw; x++) {\r\n const sy = y;\r\n const sx = x;\r\n const dstOff = (y * sw + x) * 4;\r\n let r = 0,\r\n g = 0,\r\n b = 0,\r\n a = 0;\r\n for (var cy = 0; cy < side; cy++) {\r\n for (var cx = 0; cx < side; cx++) {\r\n const scy = Math.min(sh - 1, Math.max(0, sy + cy - halfSide));\r\n const scx = Math.min(sw - 1, Math.max(0, sx + cx - halfSide));\r\n const srcOff = (scy * sw + scx) * 4;\r\n const wt = weights[cy * side + cx];\r\n r += src[srcOff] * wt;\r\n g += src[srcOff + 1] * wt;\r\n b += src[srcOff + 2] * wt;\r\n a += src[srcOff + 3] * wt;\r\n }\r\n }\r\n dst[dstOff] = r;\r\n dst[dstOff + 1] = g;\r\n dst[dstOff + 2] = b;\r\n dst[dstOff + 3] = a;\r\n }\r\n }\r\n return output;\r\n}\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n let r, g, b, i, f, p, q, t;\r\n if (arguments.length === 1) {\r\n s = h.s;\r\n v = h.v;\r\n h = h.h;\r\n }\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255),\r\n };\r\n}\r\n\r\nexport { sobel, greyscale };\r\n","import React, { useState, useRef } from \"react\";\r\nimport flower from \"../../../../../static/flower.png\";\r\nimport * as style from \"./style.module.css\";\r\nimport { sobel, greyscale } from \"../sobel.js\";\r\n\r\nconst SobelFlower = ({ transformType }) => {\r\n const canvas = useRef();\r\n const image = useRef();\r\n\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n const [transformApplied, setTransformApplied] = useState(false);\r\n\r\n const applyClickHandler = () => {\r\n const ctx = canvas.current.getContext(\"2d\");\r\n canvas.current.width = image.current.width;\r\n canvas.current.height = image.current.height;\r\n ctx.drawImage(image.current, 0, 0);\r\n if (!transformApplied) {\r\n const transformedImageData = applyTransform(canvas.current);\r\n ctx.putImageData(transformedImageData, 0, 0);\r\n setDefaultImageHidden(true);\r\n setTransformApplied(true);\r\n } else {\r\n setTransformApplied(false);\r\n }\r\n };\r\n\r\n const applyTransform = canvas => {\r\n switch (transformType) {\r\n case \"greyscale\":\r\n return greyscale(canvas);\r\n case \"sobel\":\r\n return sobel(canvas, 0);\r\n case \"sobelColour\":\r\n return sobel(canvas, 1);\r\n default:\r\n const ctx = canvas.getContext(\"2d\");\r\n return ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SobelFlower;","import React, { useState, useRef } from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport { sobel } from \"../sobel.js\";\r\n\r\nconst SobelTool = () => {\r\n const canvas = useRef();\r\n const fileInput = useRef();\r\n const image = useRef();\r\n const maxImageSize = 600;\r\n\r\n const [imageSelected, setImageSelected] = useState(false);\r\n const [transformApplied, setTransformApplied] = useState(false);\r\n const [saturation, setSaturation] = useState(1);\r\n\r\n const selectImageChangeHandler = e => {\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n image.current = new Image();\r\n image.current.onload = () => {\r\n drawImageToScale(image.current, maxImageSize, canvas.current);\r\n };\r\n image.current.src = event.target.result;\r\n };\r\n const file = e.target.files[0];\r\n if (file && file.type.match(\"image.*\")) {\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n const applyClickHandler = () => {\r\n const ctx = canvas.current.getContext(\"2d\");\r\n if (!transformApplied) {\r\n const id = sobel(canvas.current, saturation);\r\n ctx.putImageData(id, 0, 0);\r\n setTransformApplied(true);\r\n } else {\r\n drawImageToScale(image.current, maxImageSize, canvas.current);\r\n setTransformApplied(false);\r\n }\r\n };\r\n\r\n const drawImageToScale = (image, maxSize, canvas) => {\r\n let scale = 1;\r\n if (maxSize < image.width || maxSize < image.height) {\r\n scale = Math.min(maxSize / image.width, maxSize / image.height);\r\n }\r\n canvas.width = image.width * scale;\r\n canvas.height = image.height * scale;\r\n const ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n setImageSelected(true);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {imageSelected && (\r\n
\r\n
\r\n \r\n setSaturation(e.target.value)}\r\n />\r\n {saturation}\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SobelTool;","// extracted by mini-css-extract-plugin\nexport var displayHidden = \"style-module--displayHidden--e4435\";\nexport var saturation = \"style-module--saturation--62163\";","export default __webpack_public_path__ + \"static/colourWheel-3966a58508ae3112e498a3fe25aba01e.png\";","// extracted by mini-css-extract-plugin\nexport var colourWheel = \"style-module--colourWheel--53b77\";","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport FlowerSobel from \"../../../components/posts/sobel/sobelFlower/sobelFlower\";\nimport SobelTool from \"../../../components/posts/sobel/sobelTool/sobelTool\";\nimport colourWheel from \"../../../../static/colourWheel.png\";\nimport * as style from \"./style.module.css\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n pre: \"pre\",\n code: \"code\",\n h2: \"h2\",\n ul: \"ul\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I recently watched a \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://youtu.be/uihBwtPIBxM\"\n }, \"Computerphile YouTube video\"), \" about Sobel edge detection and thought I'd write a post about it. In Sobel edge detection a \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Sobel_operator\",\n class: \"blueLink\"\n }, \"Sobel operation\"), \" is applied to an image in order to detect shapes/edges in the image. The main application of edge detection is in robotic vision, for example allowing self-driving vehicles to detect motorway lanes, but it can be used for any image analysis.\"), \"\\n\", React.createElement(_components.p, null, \"The first step in the Sobel operation is to \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Grayscale\",\n class: \"blueLink\"\n }, \"greyscale\"), \" the image. This can be done with a few lines of JavaScript code:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var gsFigure = document.querySelector(\\\"#fig-greyscale\\\");\\r\\nvar gsImage = gsFigure.querySelector(\\\"img\\\");\\r\\nvar gsCanvas = gsFigure.querySelector(\\\"canvas\\\");\\r\\nvar gsbutton = gsFigure.querySelector(\\\".button\\\");\\r\\nvar gsCtx = gsCanvas.getContext(\\\"2d\\\");\\r\\n\\r\\ngsbutton.addEventListener(\\\"click\\\", () => {\\r\\n gsCanvas.width = gsImage.width;\\r\\n gsCanvas.height = gsImage.height;\\r\\n gsCtx.drawImage(gsImage, 0, 0);\\r\\n var gsImageData = gsCtx.getImageData(0, 0, gsCanvas.width, gsCanvas.height);\\r\\n var id = greyScale(gsImageData);\\r\\n gsCtx.putImageData(id, 0, 0);\\r\\n}\\r\\n\\r\\nfunction greyScale (imageData) {\\r\\n var d = imageData.data;\\r\\n for (var i=0; io&&(o=l[c]),i[c]=Math.atan2(e,t)+Math.PI}const s=e.getContext("2d").getImageData(0,0,e.width,e.height);for(let c=0;c{let{transformType:t}=e;const a=(0,r.useRef)(),n=(0,r.useRef)(),{0:u,1:h}=(0,r.useState)(!1),{0:d,1:g}=(0,r.useState)(!1),m=e=>{switch(t){case"greyscale":return c(e);case"sobel":return s(e,0);case"sobelColour":return s(e,1);default:return e.getContext("2d").getImageData(0,0,e.width,e.height)}};return r.createElement("div",null,r.createElement("div",{className:"style-module--container--4d7b9"},r.createElement("canvas",{ref:a,className:u?i:o}),r.createElement("img",{ref:n,className:u?o:i,src:l,alt:"flower"})),r.createElement("div",{className:"style-module--controls--e95b8"},r.createElement("button",{onClick:()=>{const e=a.current.getContext("2d");if(a.current.width=n.current.width,a.current.height=n.current.height,e.drawImage(n.current,0,0),d)g(!1);else{const t=m(a.current);e.putImageData(t,0,0),h(!0),g(!0)}}},d?"Reload":"Apply")))};var g=()=>{const e=(0,r.useRef)(),t=(0,r.useRef)(),a=(0,r.useRef)(),{0:n,1:l}=(0,r.useState)(!1),{0:i,1:o}=(0,r.useState)(!1),{0:c,1:u}=(0,r.useState)(1),h=(e,t,a)=>{let n=1;(tt.current.click()},"Select an Image"),r.createElement("input",{accept:"image/*",className:"style-module--displayHidden--e4435",type:"file",ref:t,onChange:t=>{const n=new FileReader;n.onload=t=>{a.current=new Image,a.current.onload=()=>{h(a.current,600,e.current)},a.current.src=t.target.result};const r=t.target.files[0];r&&r.type.match("image.*")&&n.readAsDataURL(r)}}),n&&r.createElement("div",null,r.createElement("div",{className:"style-module--saturation--62163"},r.createElement("label",{htmlFor:"saturation"},"Saturation:"),r.createElement("input",{id:"saturation",type:"range",step:"0.01",min:"0",max:"1",defaultValue:c,onChange:e=>u(e.target.value)}),r.createElement("span",null,c)),r.createElement("button",{onClick:()=>{const t=e.current.getContext("2d");if(i)h(a.current,600,e.current),o(!1);else{const a=s(e.current,c);t.putImageData(a,0,0),o(!0)}}},i?"Reload":"Apply")))},m=a.p+"static/colourWheel-3966a58508ae3112e498a3fe25aba01e.png",p="style-module--colourWheel--53b77";function f(e){const t=Object.assign({p:"p",pre:"pre",code:"code",h2:"h2",ul:"ul",li:"li"},(0,n.ah)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,"I recently watched a ",r.createElement("a",{class:"blueLink",href:"https://youtu.be/uihBwtPIBxM"},"Computerphile YouTube video")," about Sobel edge detection and thought I'd write a post about it. In Sobel edge detection a ",r.createElement("a",{href:"https://en.wikipedia.org/wiki/Sobel_operator",class:"blueLink"},"Sobel operation")," is applied to an image in order to detect shapes/edges in the image. The main application of edge detection is in robotic vision, for example allowing self-driving vehicles to detect motorway lanes, but it can be used for any image analysis."),"\n",r.createElement(t.p,null,"The first step in the Sobel operation is to ",r.createElement("a",{href:"https://en.wikipedia.org/wiki/Grayscale",class:"blueLink"},"greyscale")," the image. This can be done with a few lines of JavaScript code:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-javascript"},'var gsFigure = document.querySelector("#fig-greyscale");\r\nvar gsImage = gsFigure.querySelector("img");\r\nvar gsCanvas = gsFigure.querySelector("canvas");\r\nvar gsbutton = gsFigure.querySelector(".button");\r\nvar gsCtx = gsCanvas.getContext("2d");\r\n\r\ngsbutton.addEventListener("click", () => {\r\n gsCanvas.width = gsImage.width;\r\n gsCanvas.height = gsImage.height;\r\n gsCtx.drawImage(gsImage, 0, 0);\r\n var gsImageData = gsCtx.getImageData(0, 0, gsCanvas.width, gsCanvas.height);\r\n var id = greyScale(gsImageData);\r\n gsCtx.putImageData(id, 0, 0);\r\n}\r\n\r\nfunction greyScale (imageData) {\r\n var d = imageData.data;\r\n for (var i=0; io&&(o=l[c]),i[c]=Math.atan2(e,t)+Math.PI}const s=e.getContext("2d").getImageData(0,0,e.width,e.height);for(let c=0;c{let{transformType:t}=e;const a=(0,r.useRef)(),n=(0,r.useRef)(),{0:u,1:h}=(0,r.useState)(!1),{0:d,1:g}=(0,r.useState)(!1),m=e=>{switch(t){case"greyscale":return c(e);case"sobel":return s(e,0);case"sobelColour":return s(e,1);default:return e.getContext("2d").getImageData(0,0,e.width,e.height)}};return r.createElement("div",null,r.createElement("div",{className:"style-module--container--4d7b9"},r.createElement("canvas",{ref:a,className:u?i:o}),r.createElement("img",{ref:n,className:u?o:i,src:l,alt:"flower"})),r.createElement("div",{className:"style-module--controls--e95b8"},r.createElement("button",{onClick:()=>{const e=a.current.getContext("2d");if(a.current.width=n.current.width,a.current.height=n.current.height,e.drawImage(n.current,0,0),d)g(!1);else{const t=m(a.current);e.putImageData(t,0,0),h(!0),g(!0)}}},d?"Reload":"Apply")))};var g=()=>{const e=(0,r.useRef)(),t=(0,r.useRef)(),a=(0,r.useRef)(),{0:n,1:l}=(0,r.useState)(!1),{0:i,1:o}=(0,r.useState)(!1),{0:c,1:u}=(0,r.useState)(1),h=(e,t,a)=>{let n=1;(tt.current.click()},"Select an Image"),r.createElement("input",{accept:"image/*",className:"style-module--displayHidden--e4435",type:"file",ref:t,onChange:t=>{const n=new FileReader;n.onload=t=>{a.current=new Image,a.current.onload=()=>{h(a.current,600,e.current)},a.current.src=t.target.result};const r=t.target.files[0];r&&r.type.match("image.*")&&n.readAsDataURL(r)}}),n&&r.createElement("div",null,r.createElement("div",{className:"style-module--saturation--62163"},r.createElement("label",{htmlFor:"saturation"},"Saturation:"),r.createElement("input",{id:"saturation",type:"range",step:"0.01",min:"0",max:"1",defaultValue:c,onChange:e=>u(e.target.value)}),r.createElement("span",null,c)),r.createElement("button",{onClick:()=>{const t=e.current.getContext("2d");if(i)h(a.current,600,e.current),o(!1);else{const a=s(e.current,c);t.putImageData(a,0,0),o(!0)}}},i?"Reload":"Apply")))},m=a.p+"static/colourWheel-3966a58508ae3112e498a3fe25aba01e.png",p="style-module--colourWheel--53b77";function f(e){const t=Object.assign({p:"p",pre:"pre",code:"code",h2:"h2",ul:"ul",li:"li"},(0,n.ah)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,"I recently watched a ",r.createElement("a",{class:"blueLink",href:"https://youtu.be/uihBwtPIBxM"},"Computerphile YouTube video")," about Sobel edge detection and thought I'd write a post about it. In Sobel edge detection a ",r.createElement("a",{href:"https://en.wikipedia.org/wiki/Sobel_operator",class:"blueLink"},"Sobel operation")," is applied to an image in order to detect shapes/edges in the image. The main application of edge detection is in robotic vision, for example allowing self-driving vehicles to detect motorway lanes, but it can be used for any image analysis."),"\n",r.createElement(t.p,null,"The first step in the Sobel operation is to ",r.createElement("a",{href:"https://en.wikipedia.org/wiki/Grayscale",class:"blueLink"},"greyscale")," the image. This can be done with a few lines of JavaScript code:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-javascript"},'var gsFigure = document.querySelector("#fig-greyscale");\r\nvar gsImage = gsFigure.querySelector("img");\r\nvar gsCanvas = gsFigure.querySelector("canvas");\r\nvar gsbutton = gsFigure.querySelector(".button");\r\nvar gsCtx = gsCanvas.getContext("2d");\r\n\r\ngsbutton.addEventListener("click", () => {\r\n gsCanvas.width = gsImage.width;\r\n gsCanvas.height = gsImage.height;\r\n gsCtx.drawImage(gsImage, 0, 0);\r\n var gsImageData = gsCtx.getImageData(0, 0, gsCanvas.width, gsCanvas.height);\r\n var id = greyScale(gsImageData);\r\n gsCtx.putImageData(id, 0, 0);\r\n}\r\n\r\nfunction greyScale (imageData) {\r\n var d = imageData.data;\r\n for (var i=0; i{let{data:{mdx:t},children:a}=e;const n={code:s.Z,inlineCode:c.Z},l=t;return r.createElement(i.Z,null,r.createElement("div",{className:h.fI},r.createElement("div",{className:h.v_},r.createElement(o.Z,{post:l}),r.createElement(u.Zo,{components:n},a))))},g=e=>{let{data:{mdx:t}}=e;const a=t;return r.createElement(l.Z,{page:"Post",post:a})};function m(e){return r.createElement(d,e,r.createElement(n.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js.map new file mode 100644 index 0000000..60cb4e4 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js","mappings":"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","sources":["webpack://blog/./static/flower.png","webpack://blog/./src/components/posts/sobel/sobelFlower/style.module.css","webpack://blog/./src/components/posts/sobel/sobel.js","webpack://blog/./src/components/posts/sobel/sobelFlower/sobelFlower.js","webpack://blog/./src/components/posts/sobel/sobelTool/sobelTool.js","webpack://blog/./src/components/posts/sobel/sobelTool/style.module.css","webpack://blog/./static/colourWheel.png","webpack://blog/./src/pages/posts/2019-05-19-sobel/style.module.css","webpack://blog/./src/pages/posts/2019-05-19-sobel/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/flower-fcef3540a73d05d95337bb12ec39768e.png\";","// extracted by mini-css-extract-plugin\nexport var container = \"style-module--container--4d7b9\";\nexport var controls = \"style-module--controls--e95b8\";\nexport var displayBlock = \"style-module--displayBlock--78c86\";\nexport var displayHidden = \"style-module--displayHidden--4d520\";","function sobel(canvas, saturation) {\r\n const px = greyscale(canvas);\r\n const vertical = convolute(px, [-1, -2, -1, 0, 0, 0, 1, 2, 1]);\r\n const horizontal = convolute(px, [-1, 0, 1, -2, 0, 2, -1, 0, 1]);\r\n const magnitude = new Float32Array(px.width * px.height * 4);\r\n const orientation = new Float32Array(px.width * px.height * 4);\r\n let maxMagnitude = -1;\r\n for (let i = 0; i < px.data.length; i += 4) {\r\n const dy = vertical.data[i];\r\n const dx = horizontal.data[i];\r\n magnitude[i] = Math.sqrt(dx * dx + dy * dy);\r\n if (magnitude[i] > maxMagnitude) {\r\n maxMagnitude = magnitude[i];\r\n }\r\n orientation[i] = Math.atan2(dy, dx) + Math.PI;\r\n }\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n for (let j = 0; j < imageData.data.length; j += 4) {\r\n const rgb = HSVtoRGB(\r\n orientation[j] / (2 * Math.PI),\r\n saturation,\r\n magnitude[j] / maxMagnitude\r\n );\r\n imageData.data[j] = rgb.r;\r\n imageData.data[j + 1] = rgb.g;\r\n imageData.data[j + 2] = rgb.b;\r\n imageData.data[j + 3] = 255;\r\n }\r\n return imageData;\r\n}\r\n\r\nfunction greyscale(canvas) {\r\n const ctx = canvas.getContext(\"2d\");\r\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const d = imageData.data;\r\n for (var i = 0; i < d.length; i += 4) {\r\n const r = d[i];\r\n const g = d[i + 1];\r\n const b = d[i + 2];\r\n const v = 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n d[i] = d[i + 1] = d[i + 2] = v;\r\n }\r\n return imageData;\r\n}\r\n\r\nfunction convolute(pixels, weights) {\r\n const side = Math.round(Math.sqrt(weights.length));\r\n const halfSide = Math.floor(side / 2);\r\n const src = pixels.data;\r\n const sw = pixels.width;\r\n const sh = pixels.height;\r\n const output = {\r\n width: sw,\r\n height: sh,\r\n data: new Float32Array(sw * sh * 4),\r\n };\r\n const dst = output.data;\r\n\r\n for (let y = 0; y < sh; y++) {\r\n for (let x = 0; x < sw; x++) {\r\n const sy = y;\r\n const sx = x;\r\n const dstOff = (y * sw + x) * 4;\r\n let r = 0,\r\n g = 0,\r\n b = 0,\r\n a = 0;\r\n for (var cy = 0; cy < side; cy++) {\r\n for (var cx = 0; cx < side; cx++) {\r\n const scy = Math.min(sh - 1, Math.max(0, sy + cy - halfSide));\r\n const scx = Math.min(sw - 1, Math.max(0, sx + cx - halfSide));\r\n const srcOff = (scy * sw + scx) * 4;\r\n const wt = weights[cy * side + cx];\r\n r += src[srcOff] * wt;\r\n g += src[srcOff + 1] * wt;\r\n b += src[srcOff + 2] * wt;\r\n a += src[srcOff + 3] * wt;\r\n }\r\n }\r\n dst[dstOff] = r;\r\n dst[dstOff + 1] = g;\r\n dst[dstOff + 2] = b;\r\n dst[dstOff + 3] = a;\r\n }\r\n }\r\n return output;\r\n}\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n let r, g, b, i, f, p, q, t;\r\n if (arguments.length === 1) {\r\n s = h.s;\r\n v = h.v;\r\n h = h.h;\r\n }\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255),\r\n };\r\n}\r\n\r\nexport { sobel, greyscale };\r\n","import React, { useState, useRef } from \"react\";\r\nimport flower from \"../../../../../static/flower.png\";\r\nimport * as style from \"./style.module.css\";\r\nimport { sobel, greyscale } from \"../sobel.js\";\r\n\r\nconst SobelFlower = ({ transformType }) => {\r\n const canvas = useRef();\r\n const image = useRef();\r\n\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n const [transformApplied, setTransformApplied] = useState(false);\r\n\r\n const applyClickHandler = () => {\r\n const ctx = canvas.current.getContext(\"2d\");\r\n canvas.current.width = image.current.width;\r\n canvas.current.height = image.current.height;\r\n ctx.drawImage(image.current, 0, 0);\r\n if (!transformApplied) {\r\n const transformedImageData = applyTransform(canvas.current);\r\n ctx.putImageData(transformedImageData, 0, 0);\r\n setDefaultImageHidden(true);\r\n setTransformApplied(true);\r\n } else {\r\n setTransformApplied(false);\r\n }\r\n };\r\n\r\n const applyTransform = canvas => {\r\n switch (transformType) {\r\n case \"greyscale\":\r\n return greyscale(canvas);\r\n case \"sobel\":\r\n return sobel(canvas, 0);\r\n case \"sobelColour\":\r\n return sobel(canvas, 1);\r\n default:\r\n const ctx = canvas.getContext(\"2d\");\r\n return ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SobelFlower;","import React, { useState, useRef } from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport { sobel } from \"../sobel.js\";\r\n\r\nconst SobelTool = () => {\r\n const canvas = useRef();\r\n const fileInput = useRef();\r\n const image = useRef();\r\n const maxImageSize = 600;\r\n\r\n const [imageSelected, setImageSelected] = useState(false);\r\n const [transformApplied, setTransformApplied] = useState(false);\r\n const [saturation, setSaturation] = useState(1);\r\n\r\n const selectImageChangeHandler = e => {\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n image.current = new Image();\r\n image.current.onload = () => {\r\n drawImageToScale(image.current, maxImageSize, canvas.current);\r\n };\r\n image.current.src = event.target.result;\r\n };\r\n const file = e.target.files[0];\r\n if (file && file.type.match(\"image.*\")) {\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n const applyClickHandler = () => {\r\n const ctx = canvas.current.getContext(\"2d\");\r\n if (!transformApplied) {\r\n const id = sobel(canvas.current, saturation);\r\n ctx.putImageData(id, 0, 0);\r\n setTransformApplied(true);\r\n } else {\r\n drawImageToScale(image.current, maxImageSize, canvas.current);\r\n setTransformApplied(false);\r\n }\r\n };\r\n\r\n const drawImageToScale = (image, maxSize, canvas) => {\r\n let scale = 1;\r\n if (maxSize < image.width || maxSize < image.height) {\r\n scale = Math.min(maxSize / image.width, maxSize / image.height);\r\n }\r\n canvas.width = image.width * scale;\r\n canvas.height = image.height * scale;\r\n const ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n setImageSelected(true);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {imageSelected && (\r\n
\r\n
\r\n \r\n setSaturation(e.target.value)}\r\n />\r\n {saturation}\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SobelTool;","// extracted by mini-css-extract-plugin\nexport var displayHidden = \"style-module--displayHidden--e4435\";\nexport var saturation = \"style-module--saturation--62163\";","export default __webpack_public_path__ + \"static/colourWheel-3966a58508ae3112e498a3fe25aba01e.png\";","// extracted by mini-css-extract-plugin\nexport var colourWheel = \"style-module--colourWheel--53b77\";","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport FlowerSobel from \"../../../components/posts/sobel/sobelFlower/sobelFlower\";\nimport SobelTool from \"../../../components/posts/sobel/sobelTool/sobelTool\";\nimport colourWheel from \"../../../../static/colourWheel.png\";\nimport * as style from \"./style.module.css\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n pre: \"pre\",\n code: \"code\",\n h2: \"h2\",\n ul: \"ul\",\n li: \"li\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I recently watched a \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://youtu.be/uihBwtPIBxM\"\n }, \"Computerphile YouTube video\"), \" about Sobel edge detection and thought I'd write a post about it. In Sobel edge detection a \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Sobel_operator\",\n class: \"blueLink\"\n }, \"Sobel operation\"), \" is applied to an image in order to detect shapes/edges in the image. The main application of edge detection is in robotic vision, for example allowing self-driving vehicles to detect motorway lanes, but it can be used for any image analysis.\"), \"\\n\", React.createElement(_components.p, null, \"The first step in the Sobel operation is to \", React.createElement(\"a\", {\n href: \"https://en.wikipedia.org/wiki/Grayscale\",\n class: \"blueLink\"\n }, \"greyscale\"), \" the image. This can be done with a few lines of JavaScript code:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"var gsFigure = document.querySelector(\\\"#fig-greyscale\\\");\\r\\nvar gsImage = gsFigure.querySelector(\\\"img\\\");\\r\\nvar gsCanvas = gsFigure.querySelector(\\\"canvas\\\");\\r\\nvar gsbutton = gsFigure.querySelector(\\\".button\\\");\\r\\nvar gsCtx = gsCanvas.getContext(\\\"2d\\\");\\r\\n\\r\\ngsbutton.addEventListener(\\\"click\\\", () => {\\r\\n gsCanvas.width = gsImage.width;\\r\\n gsCanvas.height = gsImage.height;\\r\\n gsCtx.drawImage(gsImage, 0, 0);\\r\\n var gsImageData = gsCtx.getImageData(0, 0, gsCanvas.width, gsCanvas.height);\\r\\n var id = greyScale(gsImageData);\\r\\n gsCtx.putImageData(id, 0, 0);\\r\\n}\\r\\n\\r\\nfunction greyScale (imageData) {\\r\\n var d = imageData.data;\\r\\n for (var i=0; i {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["displayBlock","displayHidden","sobel","canvas","saturation","px","greyscale","vertical","convolute","horizontal","magnitude","Float32Array","width","height","orientation","maxMagnitude","i","data","length","dy","dx","Math","sqrt","atan2","PI","imageData","getContext","getImageData","j","rgb","HSVtoRGB","r","g","b","d","v","pixels","weights","side","round","halfSide","floor","src","sw","sh","output","dst","y","x","sy","sx","dstOff","a","cy","cx","srcOff","min","max","wt","h","s","f","p","q","t","arguments","_ref","transformType","useRef","image","defaultImageHidden","setDefaultImageHidden","useState","transformApplied","setTransformApplied","applyTransform","React","className","ref","style","flower","alt","onClick","applyClickHandler","ctx","current","drawImage","transformedImageData","putImageData","SobelTool","fileInput","imageSelected","setImageSelected","setSaturation","drawImageToScale","maxSize","scale","click","accept","type","onChange","e","reader","FileReader","onload","event","Image","target","result","file","files","match","readAsDataURL","htmlFor","id","step","defaultValue","value","_createMdxContent","props","_components","Object","assign","pre","code","h2","ul","li","_provideComponents","components","class","href","FlowerSobel","colourWheel","wrapper","MDXLayout","PostTemplate","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js deleted file mode 100644 index 9ef33f3..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[749],{2715:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var c=n(9485),a=n(7294),l=n(8610),r=n(1750),o=n(8013),s=n(5814),u=n(1151),m=n(8977);const d=e=>{let{data:{mdx:t},children:n}=e;const c={code:o.Z,inlineCode:s.Z},d=t;return a.createElement(l.Z,{page:"Post",post:d},a.createElement("div",{className:m.fI},a.createElement("div",{className:m.v_},a.createElement(r.Z,{post:d}),a.createElement(u.Zo,{components:c},n))))};function i(e){return a.createElement(d,e,a.createElement(c.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js.map deleted file mode 100644 index 80a2494..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js","mappings":"kOASA,MAAMA,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,CACjCC,KAAM,OACNH,KAAMA,GACLC,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoBK,EAAAA,EAAY,CACjCN,KAAMA,IACJC,EAAAA,cAAoBM,EAAAA,GAAa,CACnCZ,WAAYA,GACXD,KAAY,EAmBF,SAASc,EAAiBC,GACvC,OAAOR,EAAAA,cAAoBX,EAAcmB,EAAOR,EAAAA,cAAoBS,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-06-17-circles-everywhere/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","page","className","style","PostHeader","MDXProvider","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js deleted file mode 100644 index 2144b1e..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[749],{2715:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var c=n(9485),a=n(7294),l=n(7025),r=n(1750),o=n(8013),s=n(5814),u=n(1151),m=n(8977);function d(e){let{data:{mdx:t},children:n}=e;const c={code:o.Z,inlineCode:s.Z},d=t;return a.createElement(l.Z,{page:"Post",post:d},a.createElement("div",{className:m.fI},a.createElement("div",{className:m.v_},a.createElement(r.Z,{post:d}),a.createElement(u.Zo,{components:c},n))))}function i(e){return a.createElement(d,e,a.createElement(c.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js.map deleted file mode 100644 index 6966a3e..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-8d7e5db8d7b6e6a237b7.js","mappings":"kOASA,SAASA,EAAYC,GAA0B,IAAxBC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,CACjCC,KAAM,OACNH,KAAMA,GACLC,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoBK,EAAAA,EAAY,CACjCN,KAAMA,IACJC,EAAAA,cAAoBM,EAAAA,GAAa,CACnCZ,WAAYA,GACXD,KACL,CAkBe,SAASc,EAAiBC,GACvC,OAAOR,EAAAA,cAAoBX,EAAcmB,EAAOR,EAAAA,cAAoBS,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-06-17-circles-everywhere/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","page","className","style","PostHeader","MDXProvider","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js new file mode 100644 index 0000000..2ced5d4 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[749],{2715:function(e,t,n){n.r(t),n.d(t,{Head:function(){return f},default:function(){return E}});var a=n(9485),c=n(7294),l=n(3306),r=n(4527),o=n(1750),s=n(8013),u=n(5814),d=n(1151),m=n(8977);const i=e=>{let{data:{mdx:t},children:n}=e;const a={code:s.Z,inlineCode:u.Z},l=t;return c.createElement(r.Z,null,c.createElement("div",{className:m.fI},c.createElement("div",{className:m.v_},c.createElement(o.Z,{post:l}),c.createElement(d.Zo,{components:a},n))))},f=e=>{let{data:{mdx:t}}=e;const n=t;return c.createElement(l.Z,{page:"Post",post:n})};function E(e){return c.createElement(i,e,c.createElement(a.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js.map new file mode 100644 index 0000000..4121d8b --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js","mappings":"sQAUA,MAAMA,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,KAAMD,EAAAA,cAAoB,MAAO,CAClEE,UAAWC,EAAAA,IACVH,EAAAA,cAAoB,MAAO,CAC5BE,UAAWC,EAAAA,IACVH,EAAAA,cAAoBI,EAAAA,EAAY,CACjCL,KAAMA,IACJC,EAAAA,cAAoBK,EAAAA,GAAa,CACnCX,WAAYA,GACXD,KAAY,EAEJa,EAAOC,IAAmB,IAAjBhB,MAAM,IAACC,IAAKe,EAChC,MAAMR,EAAOP,EACb,OAAOQ,EAAAA,cAAoBQ,EAAAA,EAAK,CAC9BC,KAAM,OACNV,KAAMA,GACN,EAmBW,SAASW,EAAiBC,GACvC,OAAOX,EAAAA,cAAoBX,EAAcsB,EAAOX,EAAAA,cAAoBY,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-06-17-circles-everywhere/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","className","style","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js similarity index 91% rename from component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js rename to component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js index da2e6dd..e8a3a65 100644 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[926],{2951:function(e,t,n){n.r(t),n.d(t,{default:function(){return E}});var a=n(1151),r=n(7294),c=n.p+"static/UKAndIreland-10e38dab76cd45c144a37fbb0b69f0d2.png",l=n.p+"static/UKAndIrelandCircles-0a478804265f2e7929d77e46199e55b3.png",i=n(5785),s=n(7762),o="style-module--control--c9f77",u="style-module--controlGroup--c7ad7",m="style-module--displayBlock--1794c",d="style-module--displayNone--a3c0a",h=n.p+"static/UKAndIrelandSmall-845f40a322bb455e59b94e66f49f65e0.png";function g(e,t,n,a,r,c){let l=500;for(;l>0;){const i=p(0,r-1),s=p(0,c-1),o=4*(i+s*r),u=(n[o+0]+n[o+1]+n[o+2])/3;if(!e.some((e=>f(i,s,t,e.cx,e.cy,e.r)))&&u<127.5){const n={cx:i,cy:s,r:t,colour:a[p(0,3)]};return void e.push(n)}l-=1}}function p(e,t){return Math.floor(Math.random()*(t-e+1)+e)}function f(e,t,n,a,r,c){return Math.sqrt((e-a)*(e-a)+(t-r)*(t-r)){const e=(0,r.useRef)(),t=(0,r.useRef)(),{0:n,1:a}=(0,r.useState)("#993300"),{0:c,1:l}=(0,r.useState)("#a5c916"),{0:p,1:f}=(0,r.useState)("#00AA66"),{0:v,1:w}=(0,r.useState)("#FF9900"),{0:E,1:b}=(0,r.useState)(2),{0:y,1:x}=(0,r.useState)(8),{0:I,1:k}=(0,r.useState)(!1);return r.createElement("div",null,r.createElement("img",{className:I?d:m,ref:t,src:h,alt:"UK and Ireland"}),r.createElement("canvas",{className:I?m:d,ref:e}),r.createElement("div",null,r.createElement("div",{className:u},r.createElement("input",{className:o,type:"color",value:n,onChange:function(e){a(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:c,onChange:function(e){l(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:p,onChange:function(e){f(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:v,onChange:function(e){w(e.target.value)}})),r.createElement("div",{className:u},r.createElement("label",{htmlFor:"minRadius"},"Min radius:"),r.createElement("input",{id:"minRadius",className:o,type:"range",step:"0.25",min:"2",max:"5",value:E,onChange:function(e){b(parseFloat(e.target.value))}}),r.createElement("span",{className:o},E)),r.createElement("div",{className:u},r.createElement("label",{htmlFor:"maxRadius"},"Max radius:"),r.createElement("input",{id:"maxRadius",className:o,type:"range",step:"0.25",min:"5",max:"8",value:y,onChange:function(e){x(parseFloat(e.target.value))}}),r.createElement("span",{className:o},y)),r.createElement("button",{onClick:function(){const a=Math.round(t.current.naturalWidth),l=Math.round(t.current.naturalHeight),o=document.createElement("canvas");o.width=a,o.height=l;const u=o.getContext("2d");u.drawImage(t.current,0,0,a,l);const m=function(e,t,n,a,r,c,l){const i=[],s=[];for(let o=0;or.createElement("circle",{xmlns:a,cx:e.cx,cy:e.cy,r:e.r,fill:e.colour})));return r.createElement.apply(r,["svg",{xmlns:a,width:t,height:n}].concat((0,i.Z)(c)))}(m,a,l),h=s.renderToString(d),f=new Blob([h],{type:"image/svg+xml"}),w=URL.createObjectURL(f),b=new Image;b.onload=()=>{e.current.width=a,e.current.height=l;e.current.getContext("2d").drawImage(b,0,0),URL.revokeObjectURL(w),k(!0)},b.src=w}},"Run")))};function w(e){const t=Object.assign({p:"p",pre:"pre",code:"code"},(0,a.ah)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,"In the ",r.createElement("a",{class:"blueLink",href:"/2019-06-17-circles-everywhere"},"previous blog post")," I showed how to generate Scalable Vector Graphics (SVGs) of small circles packed inside a larger circle using JavaScript. In today's post I'm packing circles inside a map of the UK and Ireland."),"\n",r.createElement(t.p,null,"The first thing we will need is a black and white map of the UK and Ireland. This is surprisingly difficult to find online, but after some intense search engine work I was able to get one:"),"\n",r.createElement("img",{style:{width:"100%",maxWidth:"30rem"},src:c,alt:"UK and Ireland"}),"\n",r.createElement(t.p,null,"A black and white image allows us to easily check whether a pixel in the image is land (black) or sea (white), using its RGB(Red, Green, Blue) values. White, RGB(255, 255, 255), pixels will have an average RGB of 255 whereas black, RGB(0, 0, 0), pixels will have an average RGB of 0."),"\n",r.createElement(t.p,null,"The majority of the code is much the same as ",r.createElement("a",{class:"blueLink",href:"/2019-06-17-circles-everywhere"},"before"),", we just need to change how the circles are placed:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-javascript"},'const image = document.querySelector("#uk_and_ireland");\r\nconst LX = image.width;\r\nconst LY = image.height;\r\nconst canvas = figure.querySelector("canvas");\r\ncanvas.width = LX;\r\ncanvas.height = LY;\r\nconst ctx = canvas.getContext("2d");\r\nctx.drawImage(image, 0, 0);\r\nconst imageData = ctx.getImageData(0, 0, LX, LY).data;\r\n\r\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\r\n //The guard number: if we don\'t place a circle within this number of trials, we give up.\r\n let guard = 500;\r\n while (guard > 0) {\r\n // Pick a random position on the image.\r\n const cx = randomIntFromInterval(0, LX - 1);\r\n const cy = randomIntFromInterval(0, LY - 1);\r\n const index = (cx + cy * LX) * 4;\r\n const red = imageData[index + 0];\r\n const green = imageData[index + 1];\r\n const blue = imageData[index + 2];\r\n const average = (red + green + blue) / 3;\r\n const overlaps = circles.some(existingCircle =>\r\n overlapWith(\r\n cx,\r\n cy,\r\n radius,\r\n existingCircle.cx,\r\n existingCircle.cy,\r\n existingCircle.r\r\n )\r\n );\r\n // The circle doesn\'t overlap with any other circles and its in the dark image area.\r\n if (!overlaps && average < 255 / 2) {\r\n const circle = {\r\n cx: cx,\r\n cy: cy,\r\n r: radius,\r\n colour: circleColours[randomIntFromInterval(0, 3)],\r\n };\r\n circles.push(circle);\r\n return;\r\n }\r\n guard -= 1;\r\n }\r\n}\n')),"\n",r.createElement(t.p,null,"We can use the half way point between 0 and 255 (128) to determine if a pixel is black or white. If the pixel is black and the circle doesn't overlap with any of the others then we place it otherwise we find a different location on the image."),"\n",r.createElement(t.p,null,"The finished result (with 3000 circle place attempts!) looks pretty good:"),"\n",r.createElement("img",{style:{width:"100%",maxWidth:"30rem"},src:l,alt:"UK and Ireland Circles"}),"\n",r.createElement(t.p,null,"Here's a smaller interactive version, so you can make your own:"),"\n",r.createElement(v),"\n",r.createElement(t.p,null,"As always all of the code is available on my ",r.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),"."))}var E=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?r.createElement(t,e,r.createElement(w,e)):w(e)}},3588:function(e,t,n){n.r(t),n.d(t,{default:function(){return d}});var a=n(2951),r=n(7294),c=n(8610),l=n(1750),i=n(8013),s=n(5814),o=n(1151),u=n(8977);const m=e=>{let{data:{mdx:t},children:n}=e;const a={code:i.Z,inlineCode:s.Z},m=t;return r.createElement(c.Z,{page:"Post",post:m},r.createElement("div",{className:u.fI},r.createElement("div",{className:u.v_},r.createElement(l.Z,{post:m}),r.createElement(o.Zo,{components:a},n))))};function d(e){return r.createElement(m,e,r.createElement(a.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js.map \ No newline at end of file +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[926],{2951:function(e,t,n){n.r(t),n.d(t,{default:function(){return E}});var a=n(1151),r=n(7294),c=n.p+"static/UKAndIreland-10e38dab76cd45c144a37fbb0b69f0d2.png",l=n.p+"static/UKAndIrelandCircles-0a478804265f2e7929d77e46199e55b3.png",i=n(5785),s=n(7762),o="style-module--control--c9f77",u="style-module--controlGroup--c7ad7",m="style-module--displayBlock--1794c",d="style-module--displayNone--a3c0a",h=n.p+"static/UKAndIrelandSmall-845f40a322bb455e59b94e66f49f65e0.png";function g(e,t,n,a,r,c){let l=500;for(;l>0;){const i=p(0,r-1),s=p(0,c-1),o=4*(i+s*r),u=(n[o+0]+n[o+1]+n[o+2])/3;if(!e.some((e=>f(i,s,t,e.cx,e.cy,e.r)))&&u<127.5){const n={cx:i,cy:s,r:t,colour:a[p(0,3)]};return void e.push(n)}l-=1}}function p(e,t){return Math.floor(Math.random()*(t-e+1)+e)}function f(e,t,n,a,r,c){return Math.sqrt((e-a)*(e-a)+(t-r)*(t-r)){const e=(0,r.useRef)(),t=(0,r.useRef)(),{0:n,1:a}=(0,r.useState)("#993300"),{0:c,1:l}=(0,r.useState)("#a5c916"),{0:p,1:f}=(0,r.useState)("#00AA66"),{0:v,1:w}=(0,r.useState)("#FF9900"),{0:E,1:b}=(0,r.useState)(2),{0:y,1:x}=(0,r.useState)(8),{0:I,1:k}=(0,r.useState)(!1);return r.createElement("div",null,r.createElement("img",{className:I?d:m,ref:t,src:h,alt:"UK and Ireland"}),r.createElement("canvas",{className:I?m:d,ref:e}),r.createElement("div",null,r.createElement("div",{className:u},r.createElement("input",{className:o,type:"color",value:n,onChange:function(e){a(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:c,onChange:function(e){l(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:p,onChange:function(e){f(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:v,onChange:function(e){w(e.target.value)}})),r.createElement("div",{className:u},r.createElement("label",{htmlFor:"minRadius"},"Min radius:"),r.createElement("input",{id:"minRadius",className:o,type:"range",step:"0.25",min:"2",max:"5",value:E,onChange:function(e){b(parseFloat(e.target.value))}}),r.createElement("span",{className:o},E)),r.createElement("div",{className:u},r.createElement("label",{htmlFor:"maxRadius"},"Max radius:"),r.createElement("input",{id:"maxRadius",className:o,type:"range",step:"0.25",min:"5",max:"8",value:y,onChange:function(e){x(parseFloat(e.target.value))}}),r.createElement("span",{className:o},y)),r.createElement("button",{onClick:function(){const a=Math.round(t.current.naturalWidth),l=Math.round(t.current.naturalHeight),o=document.createElement("canvas");o.width=a,o.height=l;const u=o.getContext("2d");u.drawImage(t.current,0,0,a,l);const m=function(e,t,n,a,r,c,l){const i=[],s=[];for(let o=0;or.createElement("circle",{xmlns:a,cx:e.cx,cy:e.cy,r:e.r,fill:e.colour})));return r.createElement.apply(r,["svg",{xmlns:a,width:t,height:n}].concat((0,i.Z)(c)))}(m,a,l),h=s.renderToString(d),f=new Blob([h],{type:"image/svg+xml"}),w=URL.createObjectURL(f),b=new Image;b.onload=()=>{e.current.width=a,e.current.height=l;e.current.getContext("2d").drawImage(b,0,0),URL.revokeObjectURL(w),k(!0)},b.src=w}},"Run")))};function w(e){const t=Object.assign({p:"p",pre:"pre",code:"code"},(0,a.ah)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,"In the ",r.createElement("a",{class:"blueLink",href:"/2019-06-17-circles-everywhere"},"previous blog post")," I showed how to generate Scalable Vector Graphics (SVGs) of small circles packed inside a larger circle using JavaScript. In today's post I'm packing circles inside a map of the UK and Ireland."),"\n",r.createElement(t.p,null,"The first thing we will need is a black and white map of the UK and Ireland. This is surprisingly difficult to find online, but after some intense search engine work I was able to get one:"),"\n",r.createElement("img",{style:{width:"100%",maxWidth:"30rem"},src:c,alt:"UK and Ireland"}),"\n",r.createElement(t.p,null,"A black and white image allows us to easily check whether a pixel in the image is land (black) or sea (white), using its RGB(Red, Green, Blue) values. White, RGB(255, 255, 255), pixels will have an average RGB of 255 whereas black, RGB(0, 0, 0), pixels will have an average RGB of 0."),"\n",r.createElement(t.p,null,"The majority of the code is much the same as ",r.createElement("a",{class:"blueLink",href:"/2019-06-17-circles-everywhere"},"before"),", we just need to change how the circles are placed:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-javascript"},'const image = document.querySelector("#uk_and_ireland");\r\nconst LX = image.width;\r\nconst LY = image.height;\r\nconst canvas = figure.querySelector("canvas");\r\ncanvas.width = LX;\r\ncanvas.height = LY;\r\nconst ctx = canvas.getContext("2d");\r\nctx.drawImage(image, 0, 0);\r\nconst imageData = ctx.getImageData(0, 0, LX, LY).data;\r\n\r\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\r\n //The guard number: if we don\'t place a circle within this number of trials, we give up.\r\n let guard = 500;\r\n while (guard > 0) {\r\n // Pick a random position on the image.\r\n const cx = randomIntFromInterval(0, LX - 1);\r\n const cy = randomIntFromInterval(0, LY - 1);\r\n const index = (cx + cy * LX) * 4;\r\n const red = imageData[index + 0];\r\n const green = imageData[index + 1];\r\n const blue = imageData[index + 2];\r\n const average = (red + green + blue) / 3;\r\n const overlaps = circles.some(existingCircle =>\r\n overlapWith(\r\n cx,\r\n cy,\r\n radius,\r\n existingCircle.cx,\r\n existingCircle.cy,\r\n existingCircle.r\r\n )\r\n );\r\n // The circle doesn\'t overlap with any other circles and its in the dark image area.\r\n if (!overlaps && average < 255 / 2) {\r\n const circle = {\r\n cx: cx,\r\n cy: cy,\r\n r: radius,\r\n colour: circleColours[randomIntFromInterval(0, 3)],\r\n };\r\n circles.push(circle);\r\n return;\r\n }\r\n guard -= 1;\r\n }\r\n}\n')),"\n",r.createElement(t.p,null,"We can use the half way point between 0 and 255 (128) to determine if a pixel is black or white. If the pixel is black and the circle doesn't overlap with any of the others then we place it otherwise we find a different location on the image."),"\n",r.createElement(t.p,null,"The finished result (with 3000 circle place attempts!) looks pretty good:"),"\n",r.createElement("img",{style:{width:"100%",maxWidth:"30rem"},src:l,alt:"UK and Ireland Circles"}),"\n",r.createElement(t.p,null,"Here's a smaller interactive version, so you can make your own:"),"\n",r.createElement(v),"\n",r.createElement(t.p,null,"As always all of the code is available on my ",r.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),"."))}var E=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?r.createElement(t,e,r.createElement(w,e)):w(e)}},3588:function(e,t,n){n.r(t),n.d(t,{Head:function(){return h},default:function(){return g}});var a=n(2951),r=n(7294),c=n(3306),l=n(4527),i=n(1750),s=n(8013),o=n(5814),u=n(1151),m=n(8977);const d=e=>{let{data:{mdx:t},children:n}=e;const a={code:s.Z,inlineCode:o.Z},c=t;return r.createElement(l.Z,null,r.createElement("div",{className:m.fI},r.createElement("div",{className:m.v_},r.createElement(i.Z,{post:c}),r.createElement(u.Zo,{components:a},n))))},h=e=>{let{data:{mdx:t}}=e;const n=t;return r.createElement(c.Z,{page:"Post",post:n})};function g(e){return r.createElement(d,e,r.createElement(a.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js.map new file mode 100644 index 0000000..2c7837e --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js","mappings":"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","sources":["webpack://blog/./static/UKAndIreland.png","webpack://blog/./static/UKAndIrelandCircles.png","webpack://blog/./src/components/posts/circlesMapTool/style.module.css","webpack://blog/./static/UKAndIrelandSmall.png","webpack://blog/./src/components/posts/circlesMapTool/circlesMapTool.js","webpack://blog/./src/pages/posts/2019-07-23-putting-svgs-on-the-map/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/UKAndIreland-10e38dab76cd45c144a37fbb0b69f0d2.png\";","export default __webpack_public_path__ + \"static/UKAndIrelandCircles-0a478804265f2e7929d77e46199e55b3.png\";","// extracted by mini-css-extract-plugin\nexport var control = \"style-module--control--c9f77\";\nexport var controlGroup = \"style-module--controlGroup--c7ad7\";\nexport var displayBlock = \"style-module--displayBlock--1794c\";\nexport var displayNone = \"style-module--displayNone--a3c0a\";","export default __webpack_public_path__ + \"static/UKAndIrelandSmall-845f40a322bb455e59b94e66f49f65e0.png\";","import React, { useRef, useState } from \"react\";\r\nimport ReactDOMServer from \"react-dom/server\";\r\nimport * as style from \"./style.module.css\";\r\nimport UKAndIrelandSmall from \"../../../../static/UKAndIrelandSmall.png\";\r\n\r\nconst CirclesMapTool = () => {\r\n const n = 800; // n is the maximum number of circles\r\n const canvas = useRef();\r\n const image = useRef();\r\n const [colour1, setColour1] = useState(\"#993300\");\r\n const [colour2, setColour2] = useState(\"#a5c916\");\r\n const [colour3, setColour3] = useState(\"#00AA66\");\r\n const [colour4, setColour4] = useState(\"#FF9900\");\r\n const [rmin, setRmin] = useState(2);\r\n const [rmax, setRmax] = useState(8);\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n\r\n function reloadClickHandler() {\r\n const LX = Math.round(image.current.naturalWidth);\r\n const LY = Math.round(image.current.naturalHeight);\r\n const inMemoryCanvas = document.createElement('canvas');\r\n inMemoryCanvas.width = LX;\r\n inMemoryCanvas.height = LY;\r\n const inMemoryCtx = inMemoryCanvas.getContext(\"2d\");\r\n inMemoryCtx.drawImage(image.current, 0, 0, LX, LY);\r\n const imageData = inMemoryCtx.getImageData(0, 0, LX, LY).data;\r\n const circleColours = [colour1, colour2, colour3, colour4];\r\n const circles = makeCircles(\r\n imageData,\r\n circleColours,\r\n rmin,\r\n rmax,\r\n n,\r\n LX,\r\n LY\r\n );\r\n const svg = createReactSVG(circles, LX, LY);\r\n const svgString = ReactDOMServer.renderToString(svg);\r\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\r\n const url = URL.createObjectURL(blob);\r\n const img = new Image();\r\n img.onload = () => {\r\n canvas.current.width = LX;\r\n canvas.current.height = LY;\r\n const ctx = canvas.current.getContext(\"2d\");\r\n ctx.drawImage(img, 0, 0);\r\n URL.revokeObjectURL(url);\r\n setDefaultImageHidden(true);\r\n };\r\n img.src = url;\r\n }\r\n\r\n function colour1ChangeHandler(e) {\r\n setColour1(e.target.value);\r\n }\r\n\r\n function colour2ChangeHandler(e) {\r\n setColour2(e.target.value);\r\n }\r\n\r\n function colour3ChangeHandler(e) {\r\n setColour3(e.target.value);\r\n }\r\n\r\n function colour4ChangeHandler(e) {\r\n setColour4(e.target.value);\r\n }\r\n\r\n function rminChangeHandler(e) {\r\n setRmin(parseFloat(e.target.value));\r\n }\r\n\r\n function rmaxChangeHandler(e) {\r\n setRmax(parseFloat(e.target.value));\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {rmin}\r\n
\r\n
\r\n \r\n \r\n {rmax}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction createReactSVG(circles, LX, LY) {\r\n const svgNamespace = \"http://www.w3.org/2000/svg\";\r\n const circleElements = circles.map(circle => {\r\n return React.createElement(\"circle\", {\r\n xmlns: svgNamespace,\r\n cx: circle.cx,\r\n cy: circle.cy,\r\n r: circle.r,\r\n fill: circle.colour,\r\n });\r\n });\r\n return React.createElement(\r\n \"svg\",\r\n {\r\n xmlns: svgNamespace,\r\n width: LX,\r\n height: LY,\r\n },\r\n ...circleElements\r\n );\r\n}\r\n\r\nfunction makeCircles(imageData, circleColours, rmin, rmax, n, LX, LY) {\r\n const circles = [];\r\n const radii = [];\r\n // First choose a set of n random radii and sort them. We use\r\n // Math.random()*Math.random() to favour small circles.\r\n for (let i = 0; i < n; i++) {\r\n const radius = rmin + (rmax - rmin) * (Math.random() * Math.random());\r\n radii.push(radius);\r\n }\r\n radii.sort().reverse();\r\n // Do our best to place the circles, larger ones first.\r\n for (let i = 0; i < n; i++) {\r\n placeCircle(circles, radii[i], imageData, circleColours, LX, LY);\r\n }\r\n return circles;\r\n}\r\n\r\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\r\n //The guard number: if we don't place a circle within this number of trials, we give up.\r\n let guard = 500;\r\n while (guard > 0) {\r\n // Pick a random position on the image.\r\n const cx = randomIntFromInterval(0, LX - 1);\r\n const cy = randomIntFromInterval(0, LY - 1);\r\n const index = (cx + cy * LX) * 4;\r\n const red = imageData[index + 0];\r\n const green = imageData[index + 1];\r\n const blue = imageData[index + 2];\r\n const average = (red + green + blue) / 3;\r\n const overlaps = circles.some(existingCircle =>\r\n overlapWith(\r\n cx,\r\n cy,\r\n radius,\r\n existingCircle.cx,\r\n existingCircle.cy,\r\n existingCircle.r\r\n )\r\n );\r\n // The circle doesn't overlap with any other circles and its in the dark image area.\r\n if (!overlaps && average < 255 / 2) {\r\n const circle = {\r\n cx: cx,\r\n cy: cy,\r\n r: radius,\r\n colour: circleColours[randomIntFromInterval(0, 3)],\r\n };\r\n circles.push(circle);\r\n return;\r\n }\r\n guard -= 1;\r\n }\r\n //console.log(\"Guard reached\");\r\n}\r\n\r\nfunction randomIntFromInterval(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n}\r\n\r\nfunction overlapWith(cx1, cy1, r1, cx2, cy2, r2) {\r\n const d = Math.sqrt((cx1 - cx2) * (cx1 - cx2) + (cy1 - cy2) * (cy1 - cy2));\r\n return d < r1 + r2;\r\n}\r\n\r\nexport default CirclesMapTool;","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport UKAndIreland from \"../../../../static/UKAndIreland.png\";\nimport UKAndIrelandCircles from \"../../../../static/UKAndIrelandCircles.png\";\nimport CirclesMapTool from \"../../../components/posts/circlesMapTool/circlesMapTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n pre: \"pre\",\n code: \"code\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"In the \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/2019-06-17-circles-everywhere\"\n }, \"previous blog post\"), \" I showed how to generate Scalable Vector Graphics (SVGs) of small circles packed inside a larger circle using JavaScript. In today's post I'm packing circles inside a map of the UK and Ireland.\"), \"\\n\", React.createElement(_components.p, null, \"The first thing we will need is a black and white map of the UK and Ireland. This is surprisingly difficult to find online, but after some intense search engine work I was able to get one:\"), \"\\n\", React.createElement(\"img\", {\n style: {\n width: \"100%\",\n maxWidth: \"30rem\"\n },\n src: UKAndIreland,\n alt: \"UK and Ireland\"\n }), \"\\n\", React.createElement(_components.p, null, \"A black and white image allows us to easily check whether a pixel in the image is land (black) or sea (white), using its RGB(Red, Green, Blue) values. White, RGB(255, 255, 255), pixels will have an average RGB of 255 whereas black, RGB(0, 0, 0), pixels will have an average RGB of 0.\"), \"\\n\", React.createElement(_components.p, null, \"The majority of the code is much the same as \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/2019-06-17-circles-everywhere\"\n }, \"before\"), \", we just need to change how the circles are placed:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"const image = document.querySelector(\\\"#uk_and_ireland\\\");\\r\\nconst LX = image.width;\\r\\nconst LY = image.height;\\r\\nconst canvas = figure.querySelector(\\\"canvas\\\");\\r\\ncanvas.width = LX;\\r\\ncanvas.height = LY;\\r\\nconst ctx = canvas.getContext(\\\"2d\\\");\\r\\nctx.drawImage(image, 0, 0);\\r\\nconst imageData = ctx.getImageData(0, 0, LX, LY).data;\\r\\n\\r\\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\\r\\n //The guard number: if we don't place a circle within this number of trials, we give up.\\r\\n let guard = 500;\\r\\n while (guard > 0) {\\r\\n // Pick a random position on the image.\\r\\n const cx = randomIntFromInterval(0, LX - 1);\\r\\n const cy = randomIntFromInterval(0, LY - 1);\\r\\n const index = (cx + cy * LX) * 4;\\r\\n const red = imageData[index + 0];\\r\\n const green = imageData[index + 1];\\r\\n const blue = imageData[index + 2];\\r\\n const average = (red + green + blue) / 3;\\r\\n const overlaps = circles.some(existingCircle =>\\r\\n overlapWith(\\r\\n cx,\\r\\n cy,\\r\\n radius,\\r\\n existingCircle.cx,\\r\\n existingCircle.cy,\\r\\n existingCircle.r\\r\\n )\\r\\n );\\r\\n // The circle doesn't overlap with any other circles and its in the dark image area.\\r\\n if (!overlaps && average < 255 / 2) {\\r\\n const circle = {\\r\\n cx: cx,\\r\\n cy: cy,\\r\\n r: radius,\\r\\n colour: circleColours[randomIntFromInterval(0, 3)],\\r\\n };\\r\\n circles.push(circle);\\r\\n return;\\r\\n }\\r\\n guard -= 1;\\r\\n }\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"We can use the half way point between 0 and 255 (128) to determine if a pixel is black or white. If the pixel is black and the circle doesn't overlap with any of the others then we place it otherwise we find a different location on the image.\"), \"\\n\", React.createElement(_components.p, null, \"The finished result (with 3000 circle place attempts!) looks pretty good:\"), \"\\n\", React.createElement(\"img\", {\n style: {\n width: \"100%\",\n maxWidth: \"30rem\"\n },\n src: UKAndIrelandCircles,\n alt: \"UK and Ireland Circles\"\n }), \"\\n\", React.createElement(_components.p, null, \"Here's a smaller interactive version, so you can make your own:\"), \"\\n\", React.createElement(CirclesMapTool), \"\\n\", React.createElement(_components.p, null, \"As always all of the code is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \".\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-07-23-putting-svgs-on-the-map/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["control","controlGroup","displayBlock","displayNone","placeCircle","circles","radius","imageData","circleColours","LX","LY","guard","cx","randomIntFromInterval","cy","index","average","some","existingCircle","overlapWith","r","circle","colour","push","min","max","Math","floor","random","cx1","cy1","r1","cx2","cy2","r2","sqrt","CirclesMapTool","canvas","useRef","image","colour1","setColour1","useState","colour2","setColour2","colour3","setColour3","colour4","setColour4","rmin","setRmin","rmax","setRmax","defaultImageHidden","setDefaultImageHidden","React","className","style","ref","src","UKAndIrelandSmall","alt","type","value","onChange","e","target","htmlFor","id","step","parseFloat","onClick","round","current","naturalWidth","naturalHeight","inMemoryCanvas","document","createElement","width","height","inMemoryCtx","getContext","drawImage","n","radii","i","sort","reverse","makeCircles","getImageData","data","svg","svgNamespace","circleElements","map","xmlns","fill","apply","concat","_toConsumableArray","createReactSVG","svgString","ReactDOMServer","blob","Blob","url","URL","createObjectURL","img","Image","onload","revokeObjectURL","_createMdxContent","props","_components","Object","assign","p","pre","code","_provideComponents","components","class","href","maxWidth","UKAndIreland","UKAndIrelandCircles","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js deleted file mode 100644 index 61aaef3..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[926],{2951:function(e,t,n){n.r(t),n.d(t,{default:function(){return E}});var a=n(1151),r=n(7294),c=n.p+"static/UKAndIreland-10e38dab76cd45c144a37fbb0b69f0d2.png",l=n.p+"static/UKAndIrelandCircles-0a478804265f2e7929d77e46199e55b3.png",i=n(5785),s=n(7762),o="style-module--control--c9f77",u="style-module--controlGroup--c7ad7",m="style-module--displayBlock--1794c",d="style-module--displayNone--a3c0a",h=n.p+"static/UKAndIrelandSmall-845f40a322bb455e59b94e66f49f65e0.png";function g(e,t,n,a,r,c){let l=500;for(;l>0;){const i=p(0,r-1),s=p(0,c-1),o=4*(i+s*r),u=(n[o+0]+n[o+1]+n[o+2])/3;if(!e.some((e=>f(i,s,t,e.cx,e.cy,e.r)))&&u<127.5){const n={cx:i,cy:s,r:t,colour:a[p(0,3)]};return void e.push(n)}l-=1}}function p(e,t){return Math.floor(Math.random()*(t-e+1)+e)}function f(e,t,n,a,r,c){return Math.sqrt((e-a)*(e-a)+(t-r)*(t-r)){const e=(0,r.useRef)(),t=(0,r.useRef)(),{0:n,1:a}=(0,r.useState)("#993300"),{0:c,1:l}=(0,r.useState)("#a5c916"),{0:p,1:f}=(0,r.useState)("#00AA66"),{0:v,1:w}=(0,r.useState)("#FF9900"),{0:E,1:b}=(0,r.useState)(2),{0:y,1:x}=(0,r.useState)(8),{0:I,1:k}=(0,r.useState)(!1);return r.createElement("div",null,r.createElement("img",{className:I?d:m,ref:t,src:h,alt:"UK and Ireland"}),r.createElement("canvas",{className:I?m:d,ref:e}),r.createElement("div",null,r.createElement("div",{className:u},r.createElement("input",{className:o,type:"color",value:n,onChange:function(e){a(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:c,onChange:function(e){l(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:p,onChange:function(e){f(e.target.value)}}),r.createElement("input",{className:o,type:"color",value:v,onChange:function(e){w(e.target.value)}})),r.createElement("div",{className:u},r.createElement("label",{htmlFor:"minRadius"},"Min radius:"),r.createElement("input",{id:"minRadius",className:o,type:"range",step:"0.25",min:"2",max:"5",value:E,onChange:function(e){b(parseFloat(e.target.value))}}),r.createElement("span",{className:o},E)),r.createElement("div",{className:u},r.createElement("label",{htmlFor:"maxRadius"},"Max radius:"),r.createElement("input",{id:"maxRadius",className:o,type:"range",step:"0.25",min:"5",max:"8",value:y,onChange:function(e){x(parseFloat(e.target.value))}}),r.createElement("span",{className:o},y)),r.createElement("button",{onClick:function(){const a=Math.round(t.current.naturalWidth),l=Math.round(t.current.naturalHeight),o=document.createElement("canvas");o.width=a,o.height=l;const u=o.getContext("2d");u.drawImage(t.current,0,0,a,l);const m=function(e,t,n,a,r,c,l){const i=[],s=[];for(let o=0;or.createElement("circle",{xmlns:a,cx:e.cx,cy:e.cy,r:e.r,fill:e.colour})));return r.createElement.apply(r,["svg",{xmlns:a,width:t,height:n}].concat((0,i.Z)(c)))}(m,a,l),h=s.renderToString(d),f=new Blob([h],{type:"image/svg+xml"}),w=URL.createObjectURL(f),b=new Image;b.onload=()=>{e.current.width=a,e.current.height=l;e.current.getContext("2d").drawImage(b,0,0),URL.revokeObjectURL(w),k(!0)},b.src=w}},"Run")))};function w(e){const t=Object.assign({p:"p",pre:"pre",code:"code"},(0,a.ah)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,"In the ",r.createElement("a",{class:"blueLink",href:"/2019-06-17-circles-everywhere"},"previous blog post")," I showed how to generate Scalable Vector Graphics (SVGs) of small circles packed inside a larger circle using JavaScript. In today's post I'm packing circles inside a map of the UK and Ireland."),"\n",r.createElement(t.p,null,"The first thing we will need is a black and white map of the UK and Ireland. This is surprisingly difficult to find online, but after some intense search engine work I was able to get one:"),"\n",r.createElement("img",{style:{width:"100%",maxWidth:"30rem"},src:c,alt:"UK and Ireland"}),"\n",r.createElement(t.p,null,"A black and white image allows us to easily check whether a pixel in the image is land (black) or sea (white), using its RGB(Red, Green, Blue) values. White, RGB(255, 255, 255), pixels will have an average RGB of 255 whereas black, RGB(0, 0, 0), pixels will have an average RGB of 0."),"\n",r.createElement(t.p,null,"The majority of the code is much the same as ",r.createElement("a",{class:"blueLink",href:"/2019-06-17-circles-everywhere"},"before"),", we just need to change how the circles are placed:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-javascript"},'const image = document.querySelector("#uk_and_ireland");\r\nconst LX = image.width;\r\nconst LY = image.height;\r\nconst canvas = figure.querySelector("canvas");\r\ncanvas.width = LX;\r\ncanvas.height = LY;\r\nconst ctx = canvas.getContext("2d");\r\nctx.drawImage(image, 0, 0);\r\nconst imageData = ctx.getImageData(0, 0, LX, LY).data;\r\n\r\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\r\n //The guard number: if we don\'t place a circle within this number of trials, we give up.\r\n let guard = 500;\r\n while (guard > 0) {\r\n // Pick a random position on the image.\r\n const cx = randomIntFromInterval(0, LX - 1);\r\n const cy = randomIntFromInterval(0, LY - 1);\r\n const index = (cx + cy * LX) * 4;\r\n const red = imageData[index + 0];\r\n const green = imageData[index + 1];\r\n const blue = imageData[index + 2];\r\n const average = (red + green + blue) / 3;\r\n const overlaps = circles.some(existingCircle =>\r\n overlapWith(\r\n cx,\r\n cy,\r\n radius,\r\n existingCircle.cx,\r\n existingCircle.cy,\r\n existingCircle.r\r\n )\r\n );\r\n // The circle doesn\'t overlap with any other circles and its in the dark image area.\r\n if (!overlaps && average < 255 / 2) {\r\n const circle = {\r\n cx: cx,\r\n cy: cy,\r\n r: radius,\r\n colour: circleColours[randomIntFromInterval(0, 3)],\r\n };\r\n circles.push(circle);\r\n return;\r\n }\r\n guard -= 1;\r\n }\r\n}\n')),"\n",r.createElement(t.p,null,"We can use the half way point between 0 and 255 (128) to determine if a pixel is black or white. If the pixel is black and the circle doesn't overlap with any of the others then we place it otherwise we find a different location on the image."),"\n",r.createElement(t.p,null,"The finished result (with 3000 circle place attempts!) looks pretty good:"),"\n",r.createElement("img",{style:{width:"100%",maxWidth:"30rem"},src:l,alt:"UK and Ireland Circles"}),"\n",r.createElement(t.p,null,"Here's a smaller interactive version, so you can make your own:"),"\n",r.createElement(v),"\n",r.createElement(t.p,null,"As always all of the code is available on my ",r.createElement("a",{href:"https://github.com/george-pearson",class:"blueLink"},"GitHub"),"."))}var E=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?r.createElement(t,e,r.createElement(w,e)):w(e)}},3588:function(e,t,n){n.r(t),n.d(t,{default:function(){return d}});var a=n(2951),r=n(7294),c=n(7025),l=n(1750),i=n(8013),s=n(5814),o=n(1151),u=n(8977);function m(e){let{data:{mdx:t},children:n}=e;const a={code:i.Z,inlineCode:s.Z},m=t;return r.createElement(c.Z,{page:"Post",post:m},r.createElement("div",{className:u.fI},r.createElement("div",{className:u.v_},r.createElement(l.Z,{post:m}),r.createElement(o.Zo,{components:a},n))))}function d(e){return r.createElement(m,e,r.createElement(a.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js.map deleted file mode 100644 index 27e9132..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-d687fcd9b30bf409793c.js","mappings":"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","sources":["webpack://blog/./static/UKAndIreland.png","webpack://blog/./static/UKAndIrelandCircles.png","webpack://blog/./src/components/posts/circlesMapTool/style.module.css","webpack://blog/./static/UKAndIrelandSmall.png","webpack://blog/./src/components/posts/circlesMapTool/circlesMapTool.js","webpack://blog/./src/pages/posts/2019-07-23-putting-svgs-on-the-map/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/UKAndIreland-10e38dab76cd45c144a37fbb0b69f0d2.png\";","export default __webpack_public_path__ + \"static/UKAndIrelandCircles-0a478804265f2e7929d77e46199e55b3.png\";","// extracted by mini-css-extract-plugin\nexport var control = \"style-module--control--c9f77\";\nexport var controlGroup = \"style-module--controlGroup--c7ad7\";\nexport var displayBlock = \"style-module--displayBlock--1794c\";\nexport var displayNone = \"style-module--displayNone--a3c0a\";","export default __webpack_public_path__ + \"static/UKAndIrelandSmall-845f40a322bb455e59b94e66f49f65e0.png\";","import React, { useRef, useState } from \"react\";\r\nimport ReactDOMServer from \"react-dom/server\";\r\nimport * as style from \"./style.module.css\";\r\nimport UKAndIrelandSmall from \"../../../../static/UKAndIrelandSmall.png\";\r\n\r\nconst CirclesMapTool = () => {\r\n const n = 800; // n is the maximum number of circles\r\n const canvas = useRef();\r\n const image = useRef();\r\n const [colour1, setColour1] = useState(\"#993300\");\r\n const [colour2, setColour2] = useState(\"#a5c916\");\r\n const [colour3, setColour3] = useState(\"#00AA66\");\r\n const [colour4, setColour4] = useState(\"#FF9900\");\r\n const [rmin, setRmin] = useState(2);\r\n const [rmax, setRmax] = useState(8);\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n\r\n function reloadClickHandler() {\r\n const LX = Math.round(image.current.naturalWidth);\r\n const LY = Math.round(image.current.naturalHeight);\r\n const inMemoryCanvas = document.createElement('canvas');\r\n inMemoryCanvas.width = LX;\r\n inMemoryCanvas.height = LY;\r\n const inMemoryCtx = inMemoryCanvas.getContext(\"2d\");\r\n inMemoryCtx.drawImage(image.current, 0, 0, LX, LY);\r\n const imageData = inMemoryCtx.getImageData(0, 0, LX, LY).data;\r\n const circleColours = [colour1, colour2, colour3, colour4];\r\n const circles = makeCircles(\r\n imageData,\r\n circleColours,\r\n rmin,\r\n rmax,\r\n n,\r\n LX,\r\n LY\r\n );\r\n const svg = createReactSVG(circles, LX, LY);\r\n const svgString = ReactDOMServer.renderToString(svg);\r\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\r\n const url = URL.createObjectURL(blob);\r\n const img = new Image();\r\n img.onload = () => {\r\n canvas.current.width = LX;\r\n canvas.current.height = LY;\r\n const ctx = canvas.current.getContext(\"2d\");\r\n ctx.drawImage(img, 0, 0);\r\n URL.revokeObjectURL(url);\r\n setDefaultImageHidden(true);\r\n };\r\n img.src = url;\r\n }\r\n\r\n function colour1ChangeHandler(e) {\r\n setColour1(e.target.value);\r\n }\r\n\r\n function colour2ChangeHandler(e) {\r\n setColour2(e.target.value);\r\n }\r\n\r\n function colour3ChangeHandler(e) {\r\n setColour3(e.target.value);\r\n }\r\n\r\n function colour4ChangeHandler(e) {\r\n setColour4(e.target.value);\r\n }\r\n\r\n function rminChangeHandler(e) {\r\n setRmin(parseFloat(e.target.value));\r\n }\r\n\r\n function rmaxChangeHandler(e) {\r\n setRmax(parseFloat(e.target.value));\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {rmin}\r\n
\r\n
\r\n \r\n \r\n {rmax}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction createReactSVG(circles, LX, LY) {\r\n const svgNamespace = \"http://www.w3.org/2000/svg\";\r\n const circleElements = circles.map(circle => {\r\n return React.createElement(\"circle\", {\r\n xmlns: svgNamespace,\r\n cx: circle.cx,\r\n cy: circle.cy,\r\n r: circle.r,\r\n fill: circle.colour,\r\n });\r\n });\r\n return React.createElement(\r\n \"svg\",\r\n {\r\n xmlns: svgNamespace,\r\n width: LX,\r\n height: LY,\r\n },\r\n ...circleElements\r\n );\r\n}\r\n\r\nfunction makeCircles(imageData, circleColours, rmin, rmax, n, LX, LY) {\r\n const circles = [];\r\n const radii = [];\r\n // First choose a set of n random radii and sort them. We use\r\n // Math.random()*Math.random() to favour small circles.\r\n for (let i = 0; i < n; i++) {\r\n const radius = rmin + (rmax - rmin) * (Math.random() * Math.random());\r\n radii.push(radius);\r\n }\r\n radii.sort().reverse();\r\n // Do our best to place the circles, larger ones first.\r\n for (let i = 0; i < n; i++) {\r\n placeCircle(circles, radii[i], imageData, circleColours, LX, LY);\r\n }\r\n return circles;\r\n}\r\n\r\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\r\n //The guard number: if we don't place a circle within this number of trials, we give up.\r\n let guard = 500;\r\n while (guard > 0) {\r\n // Pick a random position on the image.\r\n const cx = randomIntFromInterval(0, LX - 1);\r\n const cy = randomIntFromInterval(0, LY - 1);\r\n const index = (cx + cy * LX) * 4;\r\n const red = imageData[index + 0];\r\n const green = imageData[index + 1];\r\n const blue = imageData[index + 2];\r\n const average = (red + green + blue) / 3;\r\n const overlaps = circles.some(existingCircle =>\r\n overlapWith(\r\n cx,\r\n cy,\r\n radius,\r\n existingCircle.cx,\r\n existingCircle.cy,\r\n existingCircle.r\r\n )\r\n );\r\n // The circle doesn't overlap with any other circles and its in the dark image area.\r\n if (!overlaps && average < 255 / 2) {\r\n const circle = {\r\n cx: cx,\r\n cy: cy,\r\n r: radius,\r\n colour: circleColours[randomIntFromInterval(0, 3)],\r\n };\r\n circles.push(circle);\r\n return;\r\n }\r\n guard -= 1;\r\n }\r\n //console.log(\"Guard reached\");\r\n}\r\n\r\nfunction randomIntFromInterval(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n}\r\n\r\nfunction overlapWith(cx1, cy1, r1, cx2, cy2, r2) {\r\n const d = Math.sqrt((cx1 - cx2) * (cx1 - cx2) + (cy1 - cy2) * (cy1 - cy2));\r\n return d < r1 + r2;\r\n}\r\n\r\nexport default CirclesMapTool;","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport UKAndIreland from \"../../../../static/UKAndIreland.png\";\nimport UKAndIrelandCircles from \"../../../../static/UKAndIrelandCircles.png\";\nimport CirclesMapTool from \"../../../components/posts/circlesMapTool/circlesMapTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n pre: \"pre\",\n code: \"code\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"In the \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/2019-06-17-circles-everywhere\"\n }, \"previous blog post\"), \" I showed how to generate Scalable Vector Graphics (SVGs) of small circles packed inside a larger circle using JavaScript. In today's post I'm packing circles inside a map of the UK and Ireland.\"), \"\\n\", React.createElement(_components.p, null, \"The first thing we will need is a black and white map of the UK and Ireland. This is surprisingly difficult to find online, but after some intense search engine work I was able to get one:\"), \"\\n\", React.createElement(\"img\", {\n style: {\n width: \"100%\",\n maxWidth: \"30rem\"\n },\n src: UKAndIreland,\n alt: \"UK and Ireland\"\n }), \"\\n\", React.createElement(_components.p, null, \"A black and white image allows us to easily check whether a pixel in the image is land (black) or sea (white), using its RGB(Red, Green, Blue) values. White, RGB(255, 255, 255), pixels will have an average RGB of 255 whereas black, RGB(0, 0, 0), pixels will have an average RGB of 0.\"), \"\\n\", React.createElement(_components.p, null, \"The majority of the code is much the same as \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/2019-06-17-circles-everywhere\"\n }, \"before\"), \", we just need to change how the circles are placed:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"const image = document.querySelector(\\\"#uk_and_ireland\\\");\\r\\nconst LX = image.width;\\r\\nconst LY = image.height;\\r\\nconst canvas = figure.querySelector(\\\"canvas\\\");\\r\\ncanvas.width = LX;\\r\\ncanvas.height = LY;\\r\\nconst ctx = canvas.getContext(\\\"2d\\\");\\r\\nctx.drawImage(image, 0, 0);\\r\\nconst imageData = ctx.getImageData(0, 0, LX, LY).data;\\r\\n\\r\\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\\r\\n //The guard number: if we don't place a circle within this number of trials, we give up.\\r\\n let guard = 500;\\r\\n while (guard > 0) {\\r\\n // Pick a random position on the image.\\r\\n const cx = randomIntFromInterval(0, LX - 1);\\r\\n const cy = randomIntFromInterval(0, LY - 1);\\r\\n const index = (cx + cy * LX) * 4;\\r\\n const red = imageData[index + 0];\\r\\n const green = imageData[index + 1];\\r\\n const blue = imageData[index + 2];\\r\\n const average = (red + green + blue) / 3;\\r\\n const overlaps = circles.some(existingCircle =>\\r\\n overlapWith(\\r\\n cx,\\r\\n cy,\\r\\n radius,\\r\\n existingCircle.cx,\\r\\n existingCircle.cy,\\r\\n existingCircle.r\\r\\n )\\r\\n );\\r\\n // The circle doesn't overlap with any other circles and its in the dark image area.\\r\\n if (!overlaps && average < 255 / 2) {\\r\\n const circle = {\\r\\n cx: cx,\\r\\n cy: cy,\\r\\n r: radius,\\r\\n colour: circleColours[randomIntFromInterval(0, 3)],\\r\\n };\\r\\n circles.push(circle);\\r\\n return;\\r\\n }\\r\\n guard -= 1;\\r\\n }\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"We can use the half way point between 0 and 255 (128) to determine if a pixel is black or white. If the pixel is black and the circle doesn't overlap with any of the others then we place it otherwise we find a different location on the image.\"), \"\\n\", React.createElement(_components.p, null, \"The finished result (with 3000 circle place attempts!) looks pretty good:\"), \"\\n\", React.createElement(\"img\", {\n style: {\n width: \"100%\",\n maxWidth: \"30rem\"\n },\n src: UKAndIrelandCircles,\n alt: \"UK and Ireland Circles\"\n }), \"\\n\", React.createElement(_components.p, null, \"Here's a smaller interactive version, so you can make your own:\"), \"\\n\", React.createElement(CirclesMapTool), \"\\n\", React.createElement(_components.p, null, \"As always all of the code is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \".\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-07-23-putting-svgs-on-the-map/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["control","controlGroup","displayBlock","displayNone","placeCircle","circles","radius","imageData","circleColours","LX","LY","guard","cx","randomIntFromInterval","cy","index","average","some","existingCircle","overlapWith","r","circle","colour","push","min","max","Math","floor","random","cx1","cy1","r1","cx2","cy2","r2","sqrt","CirclesMapTool","canvas","useRef","image","colour1","setColour1","useState","colour2","setColour2","colour3","setColour3","colour4","setColour4","rmin","setRmin","rmax","setRmax","defaultImageHidden","setDefaultImageHidden","React","className","style","ref","src","UKAndIrelandSmall","alt","type","value","onChange","e","target","htmlFor","id","step","parseFloat","onClick","round","current","naturalWidth","naturalHeight","inMemoryCanvas","document","createElement","width","height","inMemoryCtx","getContext","drawImage","n","radii","i","sort","reverse","makeCircles","getImageData","data","svg","svgNamespace","circleElements","map","xmlns","fill","apply","concat","_toConsumableArray","createReactSVG","svgString","ReactDOMServer","blob","Blob","url","URL","createObjectURL","img","Image","onload","revokeObjectURL","_createMdxContent","props","_components","Object","assign","p","pre","code","_provideComponents","components","class","href","maxWidth","UKAndIreland","UKAndIrelandCircles","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js.map deleted file mode 100644 index 9af1d1f..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js","mappings":"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","sources":["webpack://blog/./static/UKAndIreland.png","webpack://blog/./static/UKAndIrelandCircles.png","webpack://blog/./src/components/posts/circlesMapTool/style.module.css","webpack://blog/./static/UKAndIrelandSmall.png","webpack://blog/./src/components/posts/circlesMapTool/circlesMapTool.js","webpack://blog/./src/pages/posts/2019-07-23-putting-svgs-on-the-map/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["export default __webpack_public_path__ + \"static/UKAndIreland-10e38dab76cd45c144a37fbb0b69f0d2.png\";","export default __webpack_public_path__ + \"static/UKAndIrelandCircles-0a478804265f2e7929d77e46199e55b3.png\";","// extracted by mini-css-extract-plugin\nexport var control = \"style-module--control--c9f77\";\nexport var controlGroup = \"style-module--controlGroup--c7ad7\";\nexport var displayBlock = \"style-module--displayBlock--1794c\";\nexport var displayNone = \"style-module--displayNone--a3c0a\";","export default __webpack_public_path__ + \"static/UKAndIrelandSmall-845f40a322bb455e59b94e66f49f65e0.png\";","import React, { useRef, useState } from \"react\";\r\nimport ReactDOMServer from \"react-dom/server\";\r\nimport * as style from \"./style.module.css\";\r\nimport UKAndIrelandSmall from \"../../../../static/UKAndIrelandSmall.png\";\r\n\r\nconst CirclesMapTool = () => {\r\n const n = 800; // n is the maximum number of circles\r\n const canvas = useRef();\r\n const image = useRef();\r\n const [colour1, setColour1] = useState(\"#993300\");\r\n const [colour2, setColour2] = useState(\"#a5c916\");\r\n const [colour3, setColour3] = useState(\"#00AA66\");\r\n const [colour4, setColour4] = useState(\"#FF9900\");\r\n const [rmin, setRmin] = useState(2);\r\n const [rmax, setRmax] = useState(8);\r\n const [defaultImageHidden, setDefaultImageHidden] = useState(false);\r\n\r\n function reloadClickHandler() {\r\n const LX = Math.round(image.current.naturalWidth);\r\n const LY = Math.round(image.current.naturalHeight);\r\n const inMemoryCanvas = document.createElement('canvas');\r\n inMemoryCanvas.width = LX;\r\n inMemoryCanvas.height = LY;\r\n const inMemoryCtx = inMemoryCanvas.getContext(\"2d\");\r\n inMemoryCtx.drawImage(image.current, 0, 0, LX, LY);\r\n const imageData = inMemoryCtx.getImageData(0, 0, LX, LY).data;\r\n const circleColours = [colour1, colour2, colour3, colour4];\r\n const circles = makeCircles(\r\n imageData,\r\n circleColours,\r\n rmin,\r\n rmax,\r\n n,\r\n LX,\r\n LY\r\n );\r\n const svg = createReactSVG(circles, LX, LY);\r\n const svgString = ReactDOMServer.renderToString(svg);\r\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\r\n const url = URL.createObjectURL(blob);\r\n const img = new Image();\r\n img.onload = () => {\r\n canvas.current.width = LX;\r\n canvas.current.height = LY;\r\n const ctx = canvas.current.getContext(\"2d\");\r\n ctx.drawImage(img, 0, 0);\r\n URL.revokeObjectURL(url);\r\n setDefaultImageHidden(true);\r\n };\r\n img.src = url;\r\n }\r\n\r\n function colour1ChangeHandler(e) {\r\n setColour1(e.target.value);\r\n }\r\n\r\n function colour2ChangeHandler(e) {\r\n setColour2(e.target.value);\r\n }\r\n\r\n function colour3ChangeHandler(e) {\r\n setColour3(e.target.value);\r\n }\r\n\r\n function colour4ChangeHandler(e) {\r\n setColour4(e.target.value);\r\n }\r\n\r\n function rminChangeHandler(e) {\r\n setRmin(parseFloat(e.target.value));\r\n }\r\n\r\n function rmaxChangeHandler(e) {\r\n setRmax(parseFloat(e.target.value));\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {rmin}\r\n
\r\n
\r\n \r\n \r\n {rmax}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction createReactSVG(circles, LX, LY) {\r\n const svgNamespace = \"http://www.w3.org/2000/svg\";\r\n const circleElements = circles.map(circle => {\r\n return React.createElement(\"circle\", {\r\n xmlns: svgNamespace,\r\n cx: circle.cx,\r\n cy: circle.cy,\r\n r: circle.r,\r\n fill: circle.colour,\r\n });\r\n });\r\n return React.createElement(\r\n \"svg\",\r\n {\r\n xmlns: svgNamespace,\r\n width: LX,\r\n height: LY,\r\n },\r\n ...circleElements\r\n );\r\n}\r\n\r\nfunction makeCircles(imageData, circleColours, rmin, rmax, n, LX, LY) {\r\n const circles = [];\r\n const radii = [];\r\n // First choose a set of n random radii and sort them. We use\r\n // Math.random()*Math.random() to favour small circles.\r\n for (let i = 0; i < n; i++) {\r\n const radius = rmin + (rmax - rmin) * (Math.random() * Math.random());\r\n radii.push(radius);\r\n }\r\n radii.sort().reverse();\r\n // Do our best to place the circles, larger ones first.\r\n for (let i = 0; i < n; i++) {\r\n placeCircle(circles, radii[i], imageData, circleColours, LX, LY);\r\n }\r\n return circles;\r\n}\r\n\r\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\r\n //The guard number: if we don't place a circle within this number of trials, we give up.\r\n let guard = 500;\r\n while (guard > 0) {\r\n // Pick a random position on the image.\r\n const cx = randomIntFromInterval(0, LX - 1);\r\n const cy = randomIntFromInterval(0, LY - 1);\r\n const index = (cx + cy * LX) * 4;\r\n const red = imageData[index + 0];\r\n const green = imageData[index + 1];\r\n const blue = imageData[index + 2];\r\n const average = (red + green + blue) / 3;\r\n const overlaps = circles.some(existingCircle =>\r\n overlapWith(\r\n cx,\r\n cy,\r\n radius,\r\n existingCircle.cx,\r\n existingCircle.cy,\r\n existingCircle.r\r\n )\r\n );\r\n // The circle doesn't overlap with any other circles and its in the dark image area.\r\n if (!overlaps && average < 255 / 2) {\r\n const circle = {\r\n cx: cx,\r\n cy: cy,\r\n r: radius,\r\n colour: circleColours[randomIntFromInterval(0, 3)],\r\n };\r\n circles.push(circle);\r\n return;\r\n }\r\n guard -= 1;\r\n }\r\n //console.log(\"Guard reached\");\r\n}\r\n\r\nfunction randomIntFromInterval(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n}\r\n\r\nfunction overlapWith(cx1, cy1, r1, cx2, cy2, r2) {\r\n const d = Math.sqrt((cx1 - cx2) * (cx1 - cx2) + (cy1 - cy2) * (cy1 - cy2));\r\n return d < r1 + r2;\r\n}\r\n\r\nexport default CirclesMapTool;","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport UKAndIreland from \"../../../../static/UKAndIreland.png\";\nimport UKAndIrelandCircles from \"../../../../static/UKAndIrelandCircles.png\";\nimport CirclesMapTool from \"../../../components/posts/circlesMapTool/circlesMapTool\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n pre: \"pre\",\n code: \"code\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"In the \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/2019-06-17-circles-everywhere\"\n }, \"previous blog post\"), \" I showed how to generate Scalable Vector Graphics (SVGs) of small circles packed inside a larger circle using JavaScript. In today's post I'm packing circles inside a map of the UK and Ireland.\"), \"\\n\", React.createElement(_components.p, null, \"The first thing we will need is a black and white map of the UK and Ireland. This is surprisingly difficult to find online, but after some intense search engine work I was able to get one:\"), \"\\n\", React.createElement(\"img\", {\n style: {\n width: \"100%\",\n maxWidth: \"30rem\"\n },\n src: UKAndIreland,\n alt: \"UK and Ireland\"\n }), \"\\n\", React.createElement(_components.p, null, \"A black and white image allows us to easily check whether a pixel in the image is land (black) or sea (white), using its RGB(Red, Green, Blue) values. White, RGB(255, 255, 255), pixels will have an average RGB of 255 whereas black, RGB(0, 0, 0), pixels will have an average RGB of 0.\"), \"\\n\", React.createElement(_components.p, null, \"The majority of the code is much the same as \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"/2019-06-17-circles-everywhere\"\n }, \"before\"), \", we just need to change how the circles are placed:\"), \"\\n\", React.createElement(_components.pre, null, React.createElement(_components.code, {\n className: \"language-javascript\"\n }, \"const image = document.querySelector(\\\"#uk_and_ireland\\\");\\r\\nconst LX = image.width;\\r\\nconst LY = image.height;\\r\\nconst canvas = figure.querySelector(\\\"canvas\\\");\\r\\ncanvas.width = LX;\\r\\ncanvas.height = LY;\\r\\nconst ctx = canvas.getContext(\\\"2d\\\");\\r\\nctx.drawImage(image, 0, 0);\\r\\nconst imageData = ctx.getImageData(0, 0, LX, LY).data;\\r\\n\\r\\nfunction placeCircle(circles, radius, imageData, circleColours, LX, LY) {\\r\\n //The guard number: if we don't place a circle within this number of trials, we give up.\\r\\n let guard = 500;\\r\\n while (guard > 0) {\\r\\n // Pick a random position on the image.\\r\\n const cx = randomIntFromInterval(0, LX - 1);\\r\\n const cy = randomIntFromInterval(0, LY - 1);\\r\\n const index = (cx + cy * LX) * 4;\\r\\n const red = imageData[index + 0];\\r\\n const green = imageData[index + 1];\\r\\n const blue = imageData[index + 2];\\r\\n const average = (red + green + blue) / 3;\\r\\n const overlaps = circles.some(existingCircle =>\\r\\n overlapWith(\\r\\n cx,\\r\\n cy,\\r\\n radius,\\r\\n existingCircle.cx,\\r\\n existingCircle.cy,\\r\\n existingCircle.r\\r\\n )\\r\\n );\\r\\n // The circle doesn't overlap with any other circles and its in the dark image area.\\r\\n if (!overlaps && average < 255 / 2) {\\r\\n const circle = {\\r\\n cx: cx,\\r\\n cy: cy,\\r\\n r: radius,\\r\\n colour: circleColours[randomIntFromInterval(0, 3)],\\r\\n };\\r\\n circles.push(circle);\\r\\n return;\\r\\n }\\r\\n guard -= 1;\\r\\n }\\r\\n}\\n\")), \"\\n\", React.createElement(_components.p, null, \"We can use the half way point between 0 and 255 (128) to determine if a pixel is black or white. If the pixel is black and the circle doesn't overlap with any of the others then we place it otherwise we find a different location on the image.\"), \"\\n\", React.createElement(_components.p, null, \"The finished result (with 3000 circle place attempts!) looks pretty good:\"), \"\\n\", React.createElement(\"img\", {\n style: {\n width: \"100%\",\n maxWidth: \"30rem\"\n },\n src: UKAndIrelandCircles,\n alt: \"UK and Ireland Circles\"\n }), \"\\n\", React.createElement(_components.p, null, \"Here's a smaller interactive version, so you can make your own:\"), \"\\n\", React.createElement(CirclesMapTool), \"\\n\", React.createElement(_components.p, null, \"As always all of the code is available on my \", React.createElement(\"a\", {\n href: \"https://github.com/george-pearson\",\n class: \"blueLink\"\n }, \"GitHub\"), \".\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-07-23-putting-svgs-on-the-map/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["control","controlGroup","displayBlock","displayNone","placeCircle","circles","radius","imageData","circleColours","LX","LY","guard","cx","randomIntFromInterval","cy","index","average","some","existingCircle","overlapWith","r","circle","colour","push","min","max","Math","floor","random","cx1","cy1","r1","cx2","cy2","r2","sqrt","CirclesMapTool","canvas","useRef","image","colour1","setColour1","useState","colour2","setColour2","colour3","setColour3","colour4","setColour4","rmin","setRmin","rmax","setRmax","defaultImageHidden","setDefaultImageHidden","React","className","style","ref","src","UKAndIrelandSmall","alt","type","value","onChange","e","target","htmlFor","id","step","parseFloat","onClick","round","current","naturalWidth","naturalHeight","inMemoryCanvas","document","createElement","width","height","inMemoryCtx","getContext","drawImage","n","radii","i","sort","reverse","makeCircles","getImageData","data","svg","svgNamespace","circleElements","map","xmlns","fill","apply","concat","_toConsumableArray","createReactSVG","svgString","ReactDOMServer","blob","Blob","url","URL","createObjectURL","img","Image","onload","revokeObjectURL","_createMdxContent","props","_components","Object","assign","p","pre","code","_provideComponents","components","class","href","maxWidth","UKAndIreland","UKAndIrelandCircles","wrapper","MDXLayout","PostTemplate","_ref","mdx","children","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js deleted file mode 100644 index 713c0bb..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[438],{4356:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var c=n(7786),a=n(7294),l=n(7025),r=n(1750),o=n(8013),s=n(5814),u=n(1151),m=n(8977);function d(e){let{data:{mdx:t},children:n}=e;const c={code:o.Z,inlineCode:s.Z},d=t;return a.createElement(l.Z,{page:"Post",post:d},a.createElement("div",{className:m.fI},a.createElement("div",{className:m.v_},a.createElement(r.Z,{post:d}),a.createElement(u.Zo,{components:c},n))))}function i(e){return a.createElement(d,e,a.createElement(c.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js.map deleted file mode 100644 index 4f5d31c..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-069608bd6cc5f647210a.js","mappings":"kOASA,SAASA,EAAYC,GAA0B,IAAxBC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,CACjCC,KAAM,OACNH,KAAMA,GACLC,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoBK,EAAAA,EAAY,CACjCN,KAAMA,IACJC,EAAAA,cAAoBM,EAAAA,GAAa,CACnCZ,WAAYA,GACXD,KACL,CAkBe,SAASc,EAAiBC,GACvC,OAAOR,EAAAA,cAAoBX,EAAcmB,EAAOR,EAAAA,cAAoBS,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-08-11-moire-patterns/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","page","className","style","PostHeader","MDXProvider","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js new file mode 100644 index 0000000..0be6463 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[438],{4356:function(e,t,n){n.r(t),n.d(t,{Head:function(){return f},default:function(){return E}});var a=n(7786),c=n(7294),l=n(3306),r=n(4527),o=n(1750),s=n(8013),u=n(5814),d=n(1151),m=n(8977);const i=e=>{let{data:{mdx:t},children:n}=e;const a={code:s.Z,inlineCode:u.Z},l=t;return c.createElement(r.Z,null,c.createElement("div",{className:m.fI},c.createElement("div",{className:m.v_},c.createElement(o.Z,{post:l}),c.createElement(d.Zo,{components:a},n))))},f=e=>{let{data:{mdx:t}}=e;const n=t;return c.createElement(l.Z,{page:"Post",post:n})};function E(e){return c.createElement(i,e,c.createElement(a.default,e))}}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js.map new file mode 100644 index 0000000..5430d58 --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js","mappings":"sQAUA,MAAMA,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,KAAMD,EAAAA,cAAoB,MAAO,CAClEE,UAAWC,EAAAA,IACVH,EAAAA,cAAoB,MAAO,CAC5BE,UAAWC,EAAAA,IACVH,EAAAA,cAAoBI,EAAAA,EAAY,CACjCL,KAAMA,IACJC,EAAAA,cAAoBK,EAAAA,GAAa,CACnCX,WAAYA,GACXD,KAAY,EAEJa,EAAOC,IAAmB,IAAjBhB,MAAM,IAACC,IAAKe,EAChC,MAAMR,EAAOP,EACb,OAAOQ,EAAAA,cAAoBQ,EAAAA,EAAK,CAC9BC,KAAM,OACNV,KAAMA,GACN,EAmBW,SAASW,EAAiBC,GACvC,OAAOX,EAAAA,cAAoBX,EAAcsB,EAAOX,EAAAA,cAAoBY,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-08-11-moire-patterns/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","className","style","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js deleted file mode 100644 index 5ef3b42..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[438],{4356:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var c=n(7786),a=n(7294),l=n(8610),r=n(1750),o=n(8013),s=n(5814),u=n(1151),m=n(8977);const d=e=>{let{data:{mdx:t},children:n}=e;const c={code:o.Z,inlineCode:s.Z},d=t;return a.createElement(l.Z,{page:"Post",post:d},a.createElement("div",{className:m.fI},a.createElement("div",{className:m.v_},a.createElement(r.Z,{post:d}),a.createElement(u.Zo,{components:c},n))))};function i(e){return a.createElement(d,e,a.createElement(c.default,e))}}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js.map deleted file mode 100644 index c8fbf95..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js","mappings":"kOASA,MAAMA,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMI,EAAa,CACjBC,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAOP,EACb,OAAOQ,EAAAA,cAAoBC,EAAAA,EAAQ,CACjCC,KAAM,OACNH,KAAMA,GACLC,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoBK,EAAAA,EAAY,CACjCN,KAAMA,IACJC,EAAAA,cAAoBM,EAAAA,GAAa,CACnCZ,WAAYA,GACXD,KAAY,EAmBF,SAASc,EAAiBC,GACvC,OAAOR,EAAAA,cAAoBX,EAAcmB,EAAOR,EAAAA,cAAoBS,EAAAA,QAAqBD,GAC3F,C","sources":["webpack://blog/./src/templates/postTemplate/postTemplate.js"],"sourcesContent":["import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-08-11-moire-patterns/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n"],"names":["PostTemplate","_ref","data","mdx","children","components","code","CodeBlock","inlineCode","InlineCode","post","React","Layout","page","className","style","PostHeader","MDXProvider","GatsbyMDXWrapper","props","GATSBY_COMPILED_MDX"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js.map deleted file mode 100644 index c7c560f..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js","mappings":"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","sources":["webpack://blog/./static/offlineApp.png","webpack://blog/./src/pages/posts/2019-11-10-from-ruby-to-react/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js","webpack://blog/./src/pages/posts/common.module.css"],"sourcesContent":["export default __webpack_public_path__ + \"static/offlineApp-fcfc95d5e52d71f4fee295c8039017c1.png\";","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport offlineApp from \"../../../../static/offlineApp.png\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n ul: \"ul\",\n li: \"li\",\n h2: \"h2\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I recently migrated my blog from one static site generator, \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://jekyllrb.com/\"\n }, \"Jekyll\"), \",\\r\\nto another, \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.gatsbyjs.org/\"\n }, \"Gatsby\"), \".\\r\\nA static site generator is a tool that allows you to generate static HTML from templates\\r\\nwhich can then easily be served up to clients making a simple website. Here are a few\\r\\nreasons I did this:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Jekyll runs using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.ruby-lang.org/en/\"\n }, \"Ruby\"), \", which is pretty old\\r\\nand \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages\"\n }, \"not that popular\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby runs using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://nodejs.org/\"\n }, \"Node\"), \" which is more modern and well supported.\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby uses \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://reactjs.org/\"\n }, \"React\"), \" a popular UI framework I wanted to learn.\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby has many easy to use plugins that are available on\\r\\n\", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.npmjs.com/\"\n }, \"npm\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby uses \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://webpack.js.org/\"\n }, \"webpack\"), \" an\\r\\neasy to use build tool which doesn't require build scripts (I was using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://gulpjs.com/\"\n }, \"Gulp\"), \" previously).\"), \"\\n\"), \"\\n\", React.createElement(_components.h2, null, \"Initial setup\"), \"\\n\", React.createElement(_components.p, null, \"One of the immediate benefits I found was how easy it is to get Gatsby up and\\r\\nrunning compared to Jekyll (webpack is great!).\\r\\nAdditionally \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://webpack.js.org/guides/code-splitting/\"\n }, \"Code Splitting\"), \" allowed\\r\\nme to simplify my old sites \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://sass-lang.com/\"\n }, \"Sass\"), \" into\\r\\nsmaller chunks of plain old CSS.\"), \"\\n\", React.createElement(_components.h2, null, \"Offline support\"), \"\\n\", React.createElement(\"div\", {\n className: commonStyle.halfWidthContainer\n }, React.createElement(\"div\", {\n className: commonStyle.halfWidthLeft\n }, React.createElement(\"img\", {\n style: {\n marginTop: '20px'\n },\n height: \"320px\",\n width: \"180px\",\n src: offlineApp,\n alt: \"offlineApp\"\n })), React.createElement(\"div\", {\n className: commonStyle.halfWidthRight\n }, React.createElement(\"p\", null, React.createElement(_components.p, null, \"Adding offline support was super easy! There are just two simple \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.gatsbyjs.org/docs/add-offline-support-with-a-service-worker/\"\n }, \"Gatsby plugins\"), \" to install and you're away. This allows users to download your site content as an application which can be viewed offline. Try it out on mobile - its pretty cool! 😃\")))), \"\\n\", React.createElement(_components.h2, null, \"React and MDX\"), \"\\n\", React.createElement(_components.p, null, \"I wanted to convert the various JavaScript tools I made in previous blog posts into reusable\\r\\nReact \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://reactjs.org/docs/react-component.html\"\n }, \"components\"), \", written\\r\\nin JSX (the React template language). To add these components to my markdown posts I\\r\\nused \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://mdxjs.com/\"\n }, \"MDX\"), \" a markdown extension format that includes\\r\\nJSX. This worked relatively well and I was able to refactor all of my JavaScript code to React,\\r\\nlearning lots of React concepts!\"), \"\\n\", React.createElement(_components.h2, null, \"Other stuff\"), \"\\n\", React.createElement(_components.p, null, \"As well as the migration I also:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Added a slide bar for mobile devices making the mobile experience a lot nicer.\"), \"\\n\", React.createElement(_components.li, null, \"Simplified all SVGs and used \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://github.com/jacobmischka/gatsby-plugin-react-svg\"\n }, \"gatsby-plugin-react-svg\"), \" to\\r\\nadd them into JSX easily.\"), \"\\n\", React.createElement(_components.li, null, \"Improved the home page paginator to have page numbers, rather than just a \\\"Next Page\\\" button.\"), \"\\n\"), \"\\n\", React.createElement(_components.h2, null, \"All still on GitHub\"), \"\\n\", React.createElement(_components.p, null, \"Finally all of my website code is still hosted on \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://pages.github.com/\"\n }, \"GitHub pages\"), \", free for anyone to look at!\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-11-10-from-ruby-to-react/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n","// extracted by mini-css-extract-plugin\nexport var halfWidthContainer = \"common-module--halfWidthContainer--10282\";\nexport var halfWidthLeft = \"common-module--halfWidthLeft--83707\";\nexport var halfWidthRight = \"common-module--halfWidthRight--3851a\";"],"names":["_createMdxContent","props","_components","Object","assign","p","ul","li","h2","_provideComponents","components","React","class","href","className","commonStyle","style","marginTop","height","width","src","offlineApp","alt","wrapper","MDXLayout","PostTemplate","_ref","data","mdx","children","code","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX","halfWidthContainer","halfWidthLeft","halfWidthRight"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js similarity index 84% rename from component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js rename to component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js index 5919ee7..117b4d4 100644 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[723],{1026:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var a=n(1151),l=n(7294),s=n.p+"static/offlineApp-fcfc95d5e52d71f4fee295c8039017c1.png",r=n(2906);function o(e){const t=Object.assign({p:"p",ul:"ul",li:"li",h2:"h2"},(0,a.ah)(),e.components);return l.createElement(l.Fragment,null,l.createElement(t.p,null,"I recently migrated my blog from one static site generator, ",l.createElement("a",{class:"blueLink",href:"https://jekyllrb.com/"},"Jekyll"),",\r\nto another, ",l.createElement("a",{class:"blueLink",href:"https://www.gatsbyjs.org/"},"Gatsby"),".\r\nA static site generator is a tool that allows you to generate static HTML from templates\r\nwhich can then easily be served up to clients making a simple website. Here are a few\r\nreasons I did this:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Jekyll runs using ",l.createElement("a",{class:"blueLink",href:"https://www.ruby-lang.org/en/"},"Ruby"),", which is pretty old\r\nand ",l.createElement("a",{class:"blueLink",href:"https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages"},"not that popular"),"."),"\n",l.createElement(t.li,null,"Gatsby runs using ",l.createElement("a",{class:"blueLink",href:"https://nodejs.org/"},"Node")," which is more modern and well supported."),"\n",l.createElement(t.li,null,"Gatsby uses ",l.createElement("a",{class:"blueLink",href:"https://reactjs.org/"},"React")," a popular UI framework I wanted to learn."),"\n",l.createElement(t.li,null,"Gatsby has many easy to use plugins that are available on\r\n",l.createElement("a",{class:"blueLink",href:"https://www.npmjs.com/"},"npm"),"."),"\n",l.createElement(t.li,null,"Gatsby uses ",l.createElement("a",{class:"blueLink",href:"https://webpack.js.org/"},"webpack")," an\r\neasy to use build tool which doesn't require build scripts (I was using ",l.createElement("a",{class:"blueLink",href:"https://gulpjs.com/"},"Gulp")," previously)."),"\n"),"\n",l.createElement(t.h2,null,"Initial setup"),"\n",l.createElement(t.p,null,"One of the immediate benefits I found was how easy it is to get Gatsby up and\r\nrunning compared to Jekyll (webpack is great!).\r\nAdditionally ",l.createElement("a",{class:"blueLink",href:"https://webpack.js.org/guides/code-splitting/"},"Code Splitting")," allowed\r\nme to simplify my old sites ",l.createElement("a",{class:"blueLink",href:"https://sass-lang.com/"},"Sass")," into\r\nsmaller chunks of plain old CSS."),"\n",l.createElement(t.h2,null,"Offline support"),"\n",l.createElement("div",{className:r.rY},l.createElement("div",{className:r.U4},l.createElement("img",{style:{marginTop:"20px"},height:"320px",width:"180px",src:s,alt:"offlineApp"})),l.createElement("div",{className:r.y4},l.createElement("p",null,l.createElement(t.p,null,"Adding offline support was super easy! There are just two simple ",l.createElement("a",{class:"blueLink",href:"https://www.gatsbyjs.org/docs/add-offline-support-with-a-service-worker/"},"Gatsby plugins")," to install and you're away. This allows users to download your site content as an application which can be viewed offline. Try it out on mobile - its pretty cool! 😃")))),"\n",l.createElement(t.h2,null,"React and MDX"),"\n",l.createElement(t.p,null,"I wanted to convert the various JavaScript tools I made in previous blog posts into reusable\r\nReact ",l.createElement("a",{class:"blueLink",href:"https://reactjs.org/docs/react-component.html"},"components"),", written\r\nin JSX (the React template language). To add these components to my markdown posts I\r\nused ",l.createElement("a",{class:"blueLink",href:"https://mdxjs.com/"},"MDX")," a markdown extension format that includes\r\nJSX. This worked relatively well and I was able to refactor all of my JavaScript code to React,\r\nlearning lots of React concepts!"),"\n",l.createElement(t.h2,null,"Other stuff"),"\n",l.createElement(t.p,null,"As well as the migration I also:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Added a slide bar for mobile devices making the mobile experience a lot nicer."),"\n",l.createElement(t.li,null,"Simplified all SVGs and used ",l.createElement("a",{class:"blueLink",href:"https://github.com/jacobmischka/gatsby-plugin-react-svg"},"gatsby-plugin-react-svg")," to\r\nadd them into JSX easily."),"\n",l.createElement(t.li,null,'Improved the home page paginator to have page numbers, rather than just a "Next Page" button.'),"\n"),"\n",l.createElement(t.h2,null,"All still on GitHub"),"\n",l.createElement(t.p,null,"Finally all of my website code is still hosted on ",l.createElement("a",{class:"blueLink",href:"https://pages.github.com/"},"GitHub pages"),", free for anyone to look at!"))}var i=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?l.createElement(t,e,l.createElement(o,e)):o(e)}},905:function(e,t,n){n.r(t),n.d(t,{default:function(){return p}});var a=n(1026),l=n(7294),s=n(8610),r=n(1750),o=n(8013),i=n(5814),c=n(1151),u=n(8977);const m=e=>{let{data:{mdx:t},children:n}=e;const a={code:o.Z,inlineCode:i.Z},m=t;return l.createElement(s.Z,{page:"Post",post:m},l.createElement("div",{className:u.fI},l.createElement("div",{className:u.v_},l.createElement(r.Z,{post:m}),l.createElement(c.Zo,{components:a},n))))};function p(e){return l.createElement(m,e,l.createElement(a.default,e))}},2906:function(e,t,n){n.d(t,{U4:function(){return l},rY:function(){return a},y4:function(){return s}});var a="common-module--halfWidthContainer--10282",l="common-module--halfWidthLeft--83707",s="common-module--halfWidthRight--3851a"}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js.map \ No newline at end of file +"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[723],{1026:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var a=n(1151),l=n(7294),s=n.p+"static/offlineApp-fcfc95d5e52d71f4fee295c8039017c1.png",r=n(2906);function o(e){const t=Object.assign({p:"p",ul:"ul",li:"li",h2:"h2"},(0,a.ah)(),e.components);return l.createElement(l.Fragment,null,l.createElement(t.p,null,"I recently migrated my blog from one static site generator, ",l.createElement("a",{class:"blueLink",href:"https://jekyllrb.com/"},"Jekyll"),",\r\nto another, ",l.createElement("a",{class:"blueLink",href:"https://www.gatsbyjs.org/"},"Gatsby"),".\r\nA static site generator is a tool that allows you to generate static HTML from templates\r\nwhich can then easily be served up to clients making a simple website. Here are a few\r\nreasons I did this:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Jekyll runs using ",l.createElement("a",{class:"blueLink",href:"https://www.ruby-lang.org/en/"},"Ruby"),", which is pretty old\r\nand ",l.createElement("a",{class:"blueLink",href:"https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages"},"not that popular"),"."),"\n",l.createElement(t.li,null,"Gatsby runs using ",l.createElement("a",{class:"blueLink",href:"https://nodejs.org/"},"Node")," which is more modern and well supported."),"\n",l.createElement(t.li,null,"Gatsby uses ",l.createElement("a",{class:"blueLink",href:"https://reactjs.org/"},"React")," a popular UI framework I wanted to learn."),"\n",l.createElement(t.li,null,"Gatsby has many easy to use plugins that are available on\r\n",l.createElement("a",{class:"blueLink",href:"https://www.npmjs.com/"},"npm"),"."),"\n",l.createElement(t.li,null,"Gatsby uses ",l.createElement("a",{class:"blueLink",href:"https://webpack.js.org/"},"webpack")," an\r\neasy to use build tool which doesn't require build scripts (I was using ",l.createElement("a",{class:"blueLink",href:"https://gulpjs.com/"},"Gulp")," previously)."),"\n"),"\n",l.createElement(t.h2,null,"Initial setup"),"\n",l.createElement(t.p,null,"One of the immediate benefits I found was how easy it is to get Gatsby up and\r\nrunning compared to Jekyll (webpack is great!).\r\nAdditionally ",l.createElement("a",{class:"blueLink",href:"https://webpack.js.org/guides/code-splitting/"},"Code Splitting")," allowed\r\nme to simplify my old sites ",l.createElement("a",{class:"blueLink",href:"https://sass-lang.com/"},"Sass")," into\r\nsmaller chunks of plain old CSS."),"\n",l.createElement(t.h2,null,"Offline support"),"\n",l.createElement("div",{className:r.rY},l.createElement("div",{className:r.U4},l.createElement("img",{style:{marginTop:"20px"},height:"320px",width:"180px",src:s,alt:"offlineApp"})),l.createElement("div",{className:r.y4},l.createElement("p",null,l.createElement(t.p,null,"Adding offline support was super easy! There are just two simple ",l.createElement("a",{class:"blueLink",href:"https://www.gatsbyjs.org/docs/add-offline-support-with-a-service-worker/"},"Gatsby plugins")," to install and you're away. This allows users to download your site content as an application which can be viewed offline. Try it out on mobile - its pretty cool! 😃")))),"\n",l.createElement(t.h2,null,"React and MDX"),"\n",l.createElement(t.p,null,"I wanted to convert the various JavaScript tools I made in previous blog posts into reusable\r\nReact ",l.createElement("a",{class:"blueLink",href:"https://reactjs.org/docs/react-component.html"},"components"),", written\r\nin JSX (the React template language). To add these components to my markdown posts I\r\nused ",l.createElement("a",{class:"blueLink",href:"https://mdxjs.com/"},"MDX")," a markdown extension format that includes\r\nJSX. This worked relatively well and I was able to refactor all of my JavaScript code to React,\r\nlearning lots of React concepts!"),"\n",l.createElement(t.h2,null,"Other stuff"),"\n",l.createElement(t.p,null,"As well as the migration I also:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Added a slide bar for mobile devices making the mobile experience a lot nicer."),"\n",l.createElement(t.li,null,"Simplified all SVGs and used ",l.createElement("a",{class:"blueLink",href:"https://github.com/jacobmischka/gatsby-plugin-react-svg"},"gatsby-plugin-react-svg")," to\r\nadd them into JSX easily."),"\n",l.createElement(t.li,null,'Improved the home page paginator to have page numbers, rather than just a "Next Page" button.'),"\n"),"\n",l.createElement(t.h2,null,"All still on GitHub"),"\n",l.createElement(t.p,null,"Finally all of my website code is still hosted on ",l.createElement("a",{class:"blueLink",href:"https://pages.github.com/"},"GitHub pages"),", free for anyone to look at!"))}var i=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?l.createElement(t,e,l.createElement(o,e)):o(e)}},905:function(e,t,n){n.r(t),n.d(t,{Head:function(){return h},default:function(){return d}});var a=n(1026),l=n(7294),s=n(3306),r=n(4527),o=n(1750),i=n(8013),c=n(5814),u=n(1151),m=n(8977);const p=e=>{let{data:{mdx:t},children:n}=e;const a={code:i.Z,inlineCode:c.Z},s=t;return l.createElement(r.Z,null,l.createElement("div",{className:m.fI},l.createElement("div",{className:m.v_},l.createElement(o.Z,{post:s}),l.createElement(u.Zo,{components:a},n))))},h=e=>{let{data:{mdx:t}}=e;const n=t;return l.createElement(s.Z,{page:"Post",post:n})};function d(e){return l.createElement(p,e,l.createElement(a.default,e))}},2906:function(e,t,n){n.d(t,{U4:function(){return l},rY:function(){return a},y4:function(){return s}});var a="common-module--halfWidthContainer--10282",l="common-module--halfWidthLeft--83707",s="common-module--halfWidthRight--3851a"}}]); +//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js.map new file mode 100644 index 0000000..defc25e --- /dev/null +++ b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js","mappings":"sKAAA,EAAe,IAA0B,yD,UCKzC,SAASA,EAAkBC,GACzB,MAAMC,EAAcC,OAAOC,OAAO,CAChCC,EAAG,IACHC,GAAI,KACJC,GAAI,KACJC,GAAI,OACHC,EAAAA,EAAAA,MAAsBR,EAAMS,YAC/B,OAAOC,EAAAA,cAAoBA,EAAAA,SAAgB,KAAMA,EAAAA,cAAoBT,EAAYG,EAAG,KAAM,+DAAgEM,EAAAA,cAAoB,IAAK,CACjLC,MAAO,WACPC,KAAM,yBACL,UAAW,oBAAqBF,EAAAA,cAAoB,IAAK,CAC1DC,MAAO,WACPC,KAAM,6BACL,UAAW,iNAAkN,KAAMF,EAAAA,cAAoBT,EAAYI,GAAI,KAAM,KAAMK,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,qBAAsBI,EAAAA,cAAoB,IAAK,CAC7WC,MAAO,WACPC,KAAM,iCACL,QAAS,gCAAiCF,EAAAA,cAAoB,IAAK,CACpEC,MAAO,WACPC,KAAM,0GACL,oBAAqB,KAAM,KAAMF,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,qBAAsBI,EAAAA,cAAoB,IAAK,CAC3HC,MAAO,WACPC,KAAM,uBACL,QAAS,6CAA8C,KAAMF,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,eAAgBI,EAAAA,cAAoB,IAAK,CACjJC,MAAO,WACPC,KAAM,wBACL,SAAU,8CAA+C,KAAMF,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,gEAAiEI,EAAAA,cAAoB,IAAK,CACpMC,MAAO,WACPC,KAAM,0BACL,OAAQ,KAAM,KAAMF,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,eAAgBI,EAAAA,cAAoB,IAAK,CACxGC,MAAO,WACPC,KAAM,2BACL,WAAY,kFAAmFF,EAAAA,cAAoB,IAAK,CACzHC,MAAO,WACPC,KAAM,uBACL,QAAS,iBAAkB,MAAO,KAAMF,EAAAA,cAAoBT,EAAYM,GAAI,KAAM,iBAAkB,KAAMG,EAAAA,cAAoBT,EAAYG,EAAG,KAAM,oJAAqJM,EAAAA,cAAoB,IAAK,CAClUC,MAAO,WACPC,KAAM,iDACL,kBAAmB,2CAA4CF,EAAAA,cAAoB,IAAK,CACzFC,MAAO,WACPC,KAAM,0BACL,QAAS,6CAA8C,KAAMF,EAAAA,cAAoBT,EAAYM,GAAI,KAAM,mBAAoB,KAAMG,EAAAA,cAAoB,MAAO,CAC7JG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,MAAO,CAC5BK,MAAO,CACLC,UAAW,QAEbC,OAAQ,QACRC,MAAO,QACPC,IAAKC,EACLC,IAAK,gBACFX,EAAAA,cAAoB,MAAO,CAC9BG,UAAWC,EAAAA,IACVJ,EAAAA,cAAoB,IAAK,KAAMA,EAAAA,cAAoBT,EAAYG,EAAG,KAAM,oEAAqEM,EAAAA,cAAoB,IAAK,CACvKC,MAAO,WACPC,KAAM,4EACL,kBAAmB,6KAA8K,KAAMF,EAAAA,cAAoBT,EAAYM,GAAI,KAAM,iBAAkB,KAAMG,EAAAA,cAAoBT,EAAYG,EAAG,KAAM,yGAA0GM,EAAAA,cAAoB,IAAK,CACtbC,MAAO,WACPC,KAAM,iDACL,cAAe,6GAA8GF,EAAAA,cAAoB,IAAK,CACvJC,MAAO,WACPC,KAAM,sBACL,OAAQ,qLAAsL,KAAMF,EAAAA,cAAoBT,EAAYM,GAAI,KAAM,eAAgB,KAAMG,EAAAA,cAAoBT,EAAYG,EAAG,KAAM,oCAAqC,KAAMM,EAAAA,cAAoBT,EAAYI,GAAI,KAAM,KAAMK,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,kFAAmF,KAAMI,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,gCAAiCI,EAAAA,cAAoB,IAAK,CAChnBC,MAAO,WACPC,KAAM,2DACL,2BAA4B,oCAAqC,KAAMF,EAAAA,cAAoBT,EAAYK,GAAI,KAAM,iGAAoG,MAAO,KAAMI,EAAAA,cAAoBT,EAAYM,GAAI,KAAM,uBAAwB,KAAMG,EAAAA,cAAoBT,EAAYG,EAAG,KAAM,qDAAsDM,EAAAA,cAAoB,IAAK,CACnaC,MAAO,WACPC,KAAM,6BACL,gBAAiB,iCACtB,CAKA,MAJA,SAAoBZ,QAAK,IAALA,IAAAA,EAAQ,CAAC,GAC3B,MAAOsB,QAASC,GAAarB,OAAOC,OAAO,CAAC,GAAGK,EAAAA,EAAAA,MAAsBR,EAAMS,YAC3E,OAAOc,EAAYb,EAAAA,cAAoBa,EAAWvB,EAAOU,EAAAA,cAAoBX,EAAmBC,IAAUD,EAAkBC,EAC9H,C,2LCrEA,MAAMwB,EAAeC,IAA6B,IAA3BC,MAAM,IAACC,GAAI,SAAEC,GAASH,EAC3C,MAAMhB,EAAa,CACjBoB,KAAMC,EAAAA,EACNC,WAAYC,EAAAA,GAERC,EAAON,EACb,OAAOjB,EAAAA,cAAoBwB,EAAAA,EAAQ,KAAMxB,EAAAA,cAAoB,MAAO,CAClEG,UAAWE,EAAAA,IACVL,EAAAA,cAAoB,MAAO,CAC5BG,UAAWE,EAAAA,IACVL,EAAAA,cAAoByB,EAAAA,EAAY,CACjCF,KAAMA,IACJvB,EAAAA,cAAoB0B,EAAAA,GAAa,CACnC3B,WAAYA,GACXmB,KAAY,EAEJS,EAAOC,IAAmB,IAAjBZ,MAAM,IAACC,IAAKW,EAChC,MAAML,EAAON,EACb,OAAOjB,EAAAA,cAAoB6B,EAAAA,EAAK,CAC9BC,KAAM,OACNP,KAAMA,GACN,EAmBW,SAASQ,EAAiBzC,GACvC,OAAOU,EAAAA,cAAoBc,EAAcxB,EAAOU,EAAAA,cAAoBgC,EAAAA,QAAqB1C,GAC3F,C,wGCnDO,IAAI2C,EAAqB,2CACrBC,EAAgB,sCAChBC,EAAiB,sC","sources":["webpack://blog/./static/offlineApp.png","webpack://blog/./src/pages/posts/2019-11-10-from-ruby-to-react/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js","webpack://blog/./src/pages/posts/common.module.css"],"sourcesContent":["export default __webpack_public_path__ + \"static/offlineApp-fcfc95d5e52d71f4fee295c8039017c1.png\";","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport offlineApp from \"../../../../static/offlineApp.png\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n ul: \"ul\",\n li: \"li\",\n h2: \"h2\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I recently migrated my blog from one static site generator, \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://jekyllrb.com/\"\n }, \"Jekyll\"), \",\\r\\nto another, \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.gatsbyjs.org/\"\n }, \"Gatsby\"), \".\\r\\nA static site generator is a tool that allows you to generate static HTML from templates\\r\\nwhich can then easily be served up to clients making a simple website. Here are a few\\r\\nreasons I did this:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Jekyll runs using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.ruby-lang.org/en/\"\n }, \"Ruby\"), \", which is pretty old\\r\\nand \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages\"\n }, \"not that popular\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby runs using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://nodejs.org/\"\n }, \"Node\"), \" which is more modern and well supported.\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby uses \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://reactjs.org/\"\n }, \"React\"), \" a popular UI framework I wanted to learn.\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby has many easy to use plugins that are available on\\r\\n\", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.npmjs.com/\"\n }, \"npm\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby uses \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://webpack.js.org/\"\n }, \"webpack\"), \" an\\r\\neasy to use build tool which doesn't require build scripts (I was using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://gulpjs.com/\"\n }, \"Gulp\"), \" previously).\"), \"\\n\"), \"\\n\", React.createElement(_components.h2, null, \"Initial setup\"), \"\\n\", React.createElement(_components.p, null, \"One of the immediate benefits I found was how easy it is to get Gatsby up and\\r\\nrunning compared to Jekyll (webpack is great!).\\r\\nAdditionally \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://webpack.js.org/guides/code-splitting/\"\n }, \"Code Splitting\"), \" allowed\\r\\nme to simplify my old sites \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://sass-lang.com/\"\n }, \"Sass\"), \" into\\r\\nsmaller chunks of plain old CSS.\"), \"\\n\", React.createElement(_components.h2, null, \"Offline support\"), \"\\n\", React.createElement(\"div\", {\n className: commonStyle.halfWidthContainer\n }, React.createElement(\"div\", {\n className: commonStyle.halfWidthLeft\n }, React.createElement(\"img\", {\n style: {\n marginTop: '20px'\n },\n height: \"320px\",\n width: \"180px\",\n src: offlineApp,\n alt: \"offlineApp\"\n })), React.createElement(\"div\", {\n className: commonStyle.halfWidthRight\n }, React.createElement(\"p\", null, React.createElement(_components.p, null, \"Adding offline support was super easy! There are just two simple \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.gatsbyjs.org/docs/add-offline-support-with-a-service-worker/\"\n }, \"Gatsby plugins\"), \" to install and you're away. This allows users to download your site content as an application which can be viewed offline. Try it out on mobile - its pretty cool! 😃\")))), \"\\n\", React.createElement(_components.h2, null, \"React and MDX\"), \"\\n\", React.createElement(_components.p, null, \"I wanted to convert the various JavaScript tools I made in previous blog posts into reusable\\r\\nReact \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://reactjs.org/docs/react-component.html\"\n }, \"components\"), \", written\\r\\nin JSX (the React template language). To add these components to my markdown posts I\\r\\nused \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://mdxjs.com/\"\n }, \"MDX\"), \" a markdown extension format that includes\\r\\nJSX. This worked relatively well and I was able to refactor all of my JavaScript code to React,\\r\\nlearning lots of React concepts!\"), \"\\n\", React.createElement(_components.h2, null, \"Other stuff\"), \"\\n\", React.createElement(_components.p, null, \"As well as the migration I also:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Added a slide bar for mobile devices making the mobile experience a lot nicer.\"), \"\\n\", React.createElement(_components.li, null, \"Simplified all SVGs and used \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://github.com/jacobmischka/gatsby-plugin-react-svg\"\n }, \"gatsby-plugin-react-svg\"), \" to\\r\\nadd them into JSX easily.\"), \"\\n\", React.createElement(_components.li, null, \"Improved the home page paginator to have page numbers, rather than just a \\\"Next Page\\\" button.\"), \"\\n\"), \"\\n\", React.createElement(_components.h2, null, \"All still on GitHub\"), \"\\n\", React.createElement(_components.p, null, \"Finally all of my website code is still hosted on \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://pages.github.com/\"\n }, \"GitHub pages\"), \", free for anyone to look at!\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-11-10-from-ruby-to-react/index.mdx\";\nimport React from \"react\";\nimport Seo from \"../../components/seo/seo\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nconst PostTemplate = ({data: {mdx}, children}) => {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, null, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n};\nexport const Head = ({data: {mdx}}) => {\n const post = mdx;\n return React.createElement(Seo, {\n page: \"Post\",\n post: post\n });\n};\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n","// extracted by mini-css-extract-plugin\nexport var halfWidthContainer = \"common-module--halfWidthContainer--10282\";\nexport var halfWidthLeft = \"common-module--halfWidthLeft--83707\";\nexport var halfWidthRight = \"common-module--halfWidthRight--3851a\";"],"names":["_createMdxContent","props","_components","Object","assign","p","ul","li","h2","_provideComponents","components","React","class","href","className","commonStyle","style","marginTop","height","width","src","offlineApp","alt","wrapper","MDXLayout","PostTemplate","_ref","data","mdx","children","code","CodeBlock","inlineCode","InlineCode","post","Layout","PostHeader","MDXProvider","Head","_ref2","Seo","page","GatsbyMDXWrapper","GATSBY_COMPILED_MDX","halfWidthContainer","halfWidthLeft","halfWidthRight"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js deleted file mode 100644 index cf8f2d6..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([[723],{1026:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var a=n(1151),l=n(7294),s=n.p+"static/offlineApp-fcfc95d5e52d71f4fee295c8039017c1.png",r=n(2906);function o(e){const t=Object.assign({p:"p",ul:"ul",li:"li",h2:"h2"},(0,a.ah)(),e.components);return l.createElement(l.Fragment,null,l.createElement(t.p,null,"I recently migrated my blog from one static site generator, ",l.createElement("a",{class:"blueLink",href:"https://jekyllrb.com/"},"Jekyll"),",\r\nto another, ",l.createElement("a",{class:"blueLink",href:"https://www.gatsbyjs.org/"},"Gatsby"),".\r\nA static site generator is a tool that allows you to generate static HTML from templates\r\nwhich can then easily be served up to clients making a simple website. Here are a few\r\nreasons I did this:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Jekyll runs using ",l.createElement("a",{class:"blueLink",href:"https://www.ruby-lang.org/en/"},"Ruby"),", which is pretty old\r\nand ",l.createElement("a",{class:"blueLink",href:"https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages"},"not that popular"),"."),"\n",l.createElement(t.li,null,"Gatsby runs using ",l.createElement("a",{class:"blueLink",href:"https://nodejs.org/"},"Node")," which is more modern and well supported."),"\n",l.createElement(t.li,null,"Gatsby uses ",l.createElement("a",{class:"blueLink",href:"https://reactjs.org/"},"React")," a popular UI framework I wanted to learn."),"\n",l.createElement(t.li,null,"Gatsby has many easy to use plugins that are available on\r\n",l.createElement("a",{class:"blueLink",href:"https://www.npmjs.com/"},"npm"),"."),"\n",l.createElement(t.li,null,"Gatsby uses ",l.createElement("a",{class:"blueLink",href:"https://webpack.js.org/"},"webpack")," an\r\neasy to use build tool which doesn't require build scripts (I was using ",l.createElement("a",{class:"blueLink",href:"https://gulpjs.com/"},"Gulp")," previously)."),"\n"),"\n",l.createElement(t.h2,null,"Initial setup"),"\n",l.createElement(t.p,null,"One of the immediate benefits I found was how easy it is to get Gatsby up and\r\nrunning compared to Jekyll (webpack is great!).\r\nAdditionally ",l.createElement("a",{class:"blueLink",href:"https://webpack.js.org/guides/code-splitting/"},"Code Splitting")," allowed\r\nme to simplify my old sites ",l.createElement("a",{class:"blueLink",href:"https://sass-lang.com/"},"Sass")," into\r\nsmaller chunks of plain old CSS."),"\n",l.createElement(t.h2,null,"Offline support"),"\n",l.createElement("div",{className:r.rY},l.createElement("div",{className:r.U4},l.createElement("img",{style:{marginTop:"20px"},height:"320px",width:"180px",src:s,alt:"offlineApp"})),l.createElement("div",{className:r.y4},l.createElement("p",null,l.createElement(t.p,null,"Adding offline support was super easy! There are just two simple ",l.createElement("a",{class:"blueLink",href:"https://www.gatsbyjs.org/docs/add-offline-support-with-a-service-worker/"},"Gatsby plugins")," to install and you're away. This allows users to download your site content as an application which can be viewed offline. Try it out on mobile - its pretty cool! 😃")))),"\n",l.createElement(t.h2,null,"React and MDX"),"\n",l.createElement(t.p,null,"I wanted to convert the various JavaScript tools I made in previous blog posts into reusable\r\nReact ",l.createElement("a",{class:"blueLink",href:"https://reactjs.org/docs/react-component.html"},"components"),", written\r\nin JSX (the React template language). To add these components to my markdown posts I\r\nused ",l.createElement("a",{class:"blueLink",href:"https://mdxjs.com/"},"MDX")," a markdown extension format that includes\r\nJSX. This worked relatively well and I was able to refactor all of my JavaScript code to React,\r\nlearning lots of React concepts!"),"\n",l.createElement(t.h2,null,"Other stuff"),"\n",l.createElement(t.p,null,"As well as the migration I also:"),"\n",l.createElement(t.ul,null,"\n",l.createElement(t.li,null,"Added a slide bar for mobile devices making the mobile experience a lot nicer."),"\n",l.createElement(t.li,null,"Simplified all SVGs and used ",l.createElement("a",{class:"blueLink",href:"https://github.com/jacobmischka/gatsby-plugin-react-svg"},"gatsby-plugin-react-svg")," to\r\nadd them into JSX easily."),"\n",l.createElement(t.li,null,'Improved the home page paginator to have page numbers, rather than just a "Next Page" button.'),"\n"),"\n",l.createElement(t.h2,null,"All still on GitHub"),"\n",l.createElement(t.p,null,"Finally all of my website code is still hosted on ",l.createElement("a",{class:"blueLink",href:"https://pages.github.com/"},"GitHub pages"),", free for anyone to look at!"))}var i=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.ah)(),e.components);return t?l.createElement(t,e,l.createElement(o,e)):o(e)}},905:function(e,t,n){n.r(t),n.d(t,{default:function(){return p}});var a=n(1026),l=n(7294),s=n(7025),r=n(1750),o=n(8013),i=n(5814),c=n(1151),u=n(8977);function m(e){let{data:{mdx:t},children:n}=e;const a={code:o.Z,inlineCode:i.Z},m=t;return l.createElement(s.Z,{page:"Post",post:m},l.createElement("div",{className:u.fI},l.createElement("div",{className:u.v_},l.createElement(r.Z,{post:m}),l.createElement(c.Zo,{components:a},n))))}function p(e){return l.createElement(m,e,l.createElement(a.default,e))}},2906:function(e,t,n){n.d(t,{U4:function(){return l},rY:function(){return a},y4:function(){return s}});var a="common-module--halfWidthContainer--10282",l="common-module--halfWidthLeft--83707",s="common-module--halfWidthRight--3851a"}}]); -//# sourceMappingURL=component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js.map \ No newline at end of file diff --git a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js.map b/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js.map deleted file mode 100644 index a40006c..0000000 --- a/component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-8d9823f680bbe8937360.js","mappings":"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","sources":["webpack://blog/./static/offlineApp.png","webpack://blog/./src/pages/posts/2019-11-10-from-ruby-to-react/index.mdx","webpack://blog/./src/templates/postTemplate/postTemplate.js","webpack://blog/./src/pages/posts/common.module.css"],"sourcesContent":["export default __webpack_public_path__ + \"static/offlineApp-fcfc95d5e52d71f4fee295c8039017c1.png\";","/*@jsxRuntime classic @jsx React.createElement @jsxFrag React.Fragment*/\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nimport React from \"react\";\nimport offlineApp from \"../../../../static/offlineApp.png\";\nimport * as commonStyle from \"../common.module.css\";\nfunction _createMdxContent(props) {\n const _components = Object.assign({\n p: \"p\",\n ul: \"ul\",\n li: \"li\",\n h2: \"h2\"\n }, _provideComponents(), props.components);\n return React.createElement(React.Fragment, null, React.createElement(_components.p, null, \"I recently migrated my blog from one static site generator, \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://jekyllrb.com/\"\n }, \"Jekyll\"), \",\\r\\nto another, \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.gatsbyjs.org/\"\n }, \"Gatsby\"), \".\\r\\nA static site generator is a tool that allows you to generate static HTML from templates\\r\\nwhich can then easily be served up to clients making a simple website. Here are a few\\r\\nreasons I did this:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Jekyll runs using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.ruby-lang.org/en/\"\n }, \"Ruby\"), \", which is pretty old\\r\\nand \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages\"\n }, \"not that popular\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby runs using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://nodejs.org/\"\n }, \"Node\"), \" which is more modern and well supported.\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby uses \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://reactjs.org/\"\n }, \"React\"), \" a popular UI framework I wanted to learn.\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby has many easy to use plugins that are available on\\r\\n\", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.npmjs.com/\"\n }, \"npm\"), \".\"), \"\\n\", React.createElement(_components.li, null, \"Gatsby uses \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://webpack.js.org/\"\n }, \"webpack\"), \" an\\r\\neasy to use build tool which doesn't require build scripts (I was using \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://gulpjs.com/\"\n }, \"Gulp\"), \" previously).\"), \"\\n\"), \"\\n\", React.createElement(_components.h2, null, \"Initial setup\"), \"\\n\", React.createElement(_components.p, null, \"One of the immediate benefits I found was how easy it is to get Gatsby up and\\r\\nrunning compared to Jekyll (webpack is great!).\\r\\nAdditionally \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://webpack.js.org/guides/code-splitting/\"\n }, \"Code Splitting\"), \" allowed\\r\\nme to simplify my old sites \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://sass-lang.com/\"\n }, \"Sass\"), \" into\\r\\nsmaller chunks of plain old CSS.\"), \"\\n\", React.createElement(_components.h2, null, \"Offline support\"), \"\\n\", React.createElement(\"div\", {\n className: commonStyle.halfWidthContainer\n }, React.createElement(\"div\", {\n className: commonStyle.halfWidthLeft\n }, React.createElement(\"img\", {\n style: {\n marginTop: '20px'\n },\n height: \"320px\",\n width: \"180px\",\n src: offlineApp,\n alt: \"offlineApp\"\n })), React.createElement(\"div\", {\n className: commonStyle.halfWidthRight\n }, React.createElement(\"p\", null, React.createElement(_components.p, null, \"Adding offline support was super easy! There are just two simple \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://www.gatsbyjs.org/docs/add-offline-support-with-a-service-worker/\"\n }, \"Gatsby plugins\"), \" to install and you're away. This allows users to download your site content as an application which can be viewed offline. Try it out on mobile - its pretty cool! 😃\")))), \"\\n\", React.createElement(_components.h2, null, \"React and MDX\"), \"\\n\", React.createElement(_components.p, null, \"I wanted to convert the various JavaScript tools I made in previous blog posts into reusable\\r\\nReact \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://reactjs.org/docs/react-component.html\"\n }, \"components\"), \", written\\r\\nin JSX (the React template language). To add these components to my markdown posts I\\r\\nused \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://mdxjs.com/\"\n }, \"MDX\"), \" a markdown extension format that includes\\r\\nJSX. This worked relatively well and I was able to refactor all of my JavaScript code to React,\\r\\nlearning lots of React concepts!\"), \"\\n\", React.createElement(_components.h2, null, \"Other stuff\"), \"\\n\", React.createElement(_components.p, null, \"As well as the migration I also:\"), \"\\n\", React.createElement(_components.ul, null, \"\\n\", React.createElement(_components.li, null, \"Added a slide bar for mobile devices making the mobile experience a lot nicer.\"), \"\\n\", React.createElement(_components.li, null, \"Simplified all SVGs and used \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://github.com/jacobmischka/gatsby-plugin-react-svg\"\n }, \"gatsby-plugin-react-svg\"), \" to\\r\\nadd them into JSX easily.\"), \"\\n\", React.createElement(_components.li, null, \"Improved the home page paginator to have page numbers, rather than just a \\\"Next Page\\\" button.\"), \"\\n\"), \"\\n\", React.createElement(_components.h2, null, \"All still on GitHub\"), \"\\n\", React.createElement(_components.p, null, \"Finally all of my website code is still hosted on \", React.createElement(\"a\", {\n class: \"blueLink\",\n href: \"https://pages.github.com/\"\n }, \"GitHub pages\"), \", free for anyone to look at!\"));\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = Object.assign({}, _provideComponents(), props.components);\n return MDXLayout ? React.createElement(MDXLayout, props, React.createElement(_createMdxContent, props)) : _createMdxContent(props);\n}\nexport default MDXContent;\n","import GATSBY_COMPILED_MDX from \"C:/src/gatsby/src/pages/posts/2019-11-10-from-ruby-to-react/index.mdx\";\nimport React from \"react\";\nimport Layout from \"../../components/layout/layout\";\nimport PostHeader from \"../../components/postHeader/postHeader\";\nimport CodeBlock from \"../../components/codeBlock/codeBlock\";\nimport InlineCode from \"../../components/inlineCode/inlineCode\";\nimport {graphql} from \"gatsby\";\nimport {MDXProvider} from \"@mdx-js/react\";\nimport * as style from \"./style.module.css\";\nfunction PostTemplate({data: {mdx}, children}) {\n const components = {\n code: CodeBlock,\n inlineCode: InlineCode\n };\n const post = mdx;\n return React.createElement(Layout, {\n page: \"Post\",\n post: post\n }, React.createElement(\"div\", {\n className: style.postContainer\n }, React.createElement(\"div\", {\n className: style.post\n }, React.createElement(PostHeader, {\n post: post\n }), React.createElement(MDXProvider, {\n components: components\n }, children))));\n}\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n fields {\n slug\n }\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n subtitle\n image\n }\n }\n }\n`;\nPostTemplate\nexport default function GatsbyMDXWrapper(props) {\n return React.createElement(PostTemplate, props, React.createElement(GATSBY_COMPILED_MDX, props));\n}\n","// extracted by mini-css-extract-plugin\nexport var halfWidthContainer = \"common-module--halfWidthContainer--10282\";\nexport var halfWidthLeft = \"common-module--halfWidthLeft--83707\";\nexport var halfWidthRight = \"common-module--halfWidthRight--3851a\";"],"names":["_createMdxContent","props","_components","Object","assign","p","ul","li","h2","_provideComponents","components","React","class","href","className","commonStyle","style","marginTop","height","width","src","offlineApp","alt","wrapper","MDXLayout","PostTemplate","_ref","data","mdx","children","code","CodeBlock","inlineCode","InlineCode","post","Layout","page","PostHeader","MDXProvider","GatsbyMDXWrapper","GATSBY_COMPILED_MDX","halfWidthContainer","halfWidthLeft","halfWidthRight"],"sourceRoot":""} \ No newline at end of file diff --git a/da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js b/da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js new file mode 100644 index 0000000..94c997a --- /dev/null +++ b/da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js @@ -0,0 +1,2 @@ +(self.webpackChunkblog=self.webpackChunkblog||[]).push([[504],{4527:function(e,t,l){"use strict";l.d(t,{Z:function(){return z}});var a=l(7294),n=l(2670),r=l.n(n),s="style-module--navBarItem--499d5",o=l(1883),i=l(982),c=l(9417);var m=e=>{let{theme:t,toggleTheme:l}=e;return a.createElement("button",{onClick:e=>l("light"===t?"dark":"light"),"aria-label":"Switch between light and dark mode."},"light"===t&&a.createElement(i.G,{icon:c.DBF,size:"1x"}),"dark"===t&&a.createElement(i.G,{icon:c.enB,size:"1x"}))};var d=e=>{let{navButtonClickHandler:t,show:l,theme:n,toggleTheme:d}=e;const k=l?"style-module--header--9b211":"style-module--headerClosed--73985";return a.createElement("header",{className:k},a.createElement("nav",{className:"style-module--navBar--f838a"},a.createElement(o.Link,{to:"/"},a.createElement(r(),{"aria-label":"home",className:"style-module--logo--196b3"})),a.createElement("button",{"aria-label":"navigation button",className:"style-module--navButton--35b21",onClick:t},a.createElement(i.G,{className:"style-module--navButtonIcon--4ab71",icon:c.xiG,size:"2x"})),a.createElement("div",{className:"style-module--navBarMenu--4d86d"},a.createElement(o.Link,{to:"/",className:s},"Home"),a.createElement(o.Link,{to:"/about",className:s},"About"),a.createElement(o.Link,{to:"/photos",className:s},"Photos")),a.createElement("div",{className:"style-module--sideBarColourThemeToggler--21700"},a.createElement(m,{theme:n,toggleTheme:d}))))},k=l(2712),h=l(3024),f="style-module--socialIcon--a0692",y="style-module--socialIconLink--f277d";var u=()=>{const{twitterUsername:e}=(0,k.$)();return a.createElement("footer",{className:"style-module--footer--fd23b"},a.createElement("div",{className:"style-module--socialIcons--5cc49"},a.createElement("a",{"aria-label":"GitHub",className:y,href:"https://github.com/george-pearson"},a.createElement(i.G,{icon:h.Nz9,className:f,size:"3x"})),a.createElement("a",{"aria-label":"Linkedin",className:y,href:"https://linkedin.com/in/george-pearson-27244a30"},a.createElement(i.G,{icon:h.hwn,className:f,size:"3x"})),a.createElement("a",{"aria-label":"Twitter",className:y,href:`https://twitter.com/${e}`},a.createElement(i.G,{icon:h.NCc,className:f,size:"3x"})),a.createElement("a",{"aria-label":"Email",className:y,href:"mailto:george-pearson.business@outlook.com"},a.createElement(i.G,{icon:c.FU$,className:f,size:"3x"}))),a.createElement("p",null,"© George Pearson ",(new Date).getFullYear()))},p="style-module--sidebarNavItem--43b27";var E=e=>{let{show:t,theme:l,toggleTheme:n}=e;return a.createElement("div",{className:t?"style-module--sidebarOpen--b3f30":"style-module--sidebar--a86b4"},a.createElement(r(),{className:"style-module--logo--c90ae"}),a.createElement("nav",{className:"style-module--sidebarNav--b2fa6"},a.createElement(o.Link,{to:"/",className:p},"Home"),a.createElement(o.Link,{to:"/about",className:p},"About"),a.createElement(o.Link,{to:"/photos",className:p},"Photos")),a.createElement("div",{className:"style-module--sideBarColourThemeToggler--db3c3"},a.createElement(m,{theme:l,toggleTheme:n})))};var g=e=>{let{backdropClickHandler:t}=e;return a.createElement("div",{className:"style-module--backdrop--2bd13",onClick:t,onKeyDown:t,role:"menuitem","aria-label":"menu item",tabIndex:"0"})},N=l(4578);let b=function(e){function t(){for(var t,l=arguments.length,a=new Array(l),n=0;n{this.setState({theme:window.__theme})}},l.toggleTheme=function(e){window.__setPreferredTheme(e)},l.render=function(){return a.createElement(this.props.children,{theme:this.state.theme,toggleTheme:this.toggleTheme})},t}(a.Component);var w=b;var z=e=>{let{children:t}=e;const{0:l,1:n}=(0,a.useState)(!1),{0:r,1:s}=(0,a.useState)(!0),{0:o,1:i}=(0,a.useState)(0);(0,a.useLayoutEffect)((()=>(document.addEventListener("scroll",c),()=>{document.removeEventListener("scroll",c)})));const c=()=>{const e="undefined"!=typeof window?window.pageYOffset:0;s(o>=e),i(e)},m=()=>{n((e=>!e.sidebarOpen))};return a.createElement("div",null,a.createElement(w,null,(e=>{let{theme:t,toggleTheme:n}=e;return a.createElement("div",null,a.createElement(d,{show:r,navButtonClickHandler:m,theme:t,toggleTheme:n}),a.createElement(E,{show:l,theme:t,toggleTheme:n}))})),l&&a.createElement(g,{backdropClickHandler:()=>{n(!1)}}),a.createElement("div",{className:"style-module--fixedFooterWrapper--51bdf"},a.createElement("main",null,t),a.createElement(u,null)))}},3306:function(e,t,l){"use strict";l.d(t,{Z:function(){return s}});var a=l(7294),n=l(2712),r=l.p+"static/logo-ad274be9cd1a4b8c9a225132ef6a70cf.png";var s=e=>{let{page:t,post:l}=e;const{author:s,siteDescription:o,siteUrl:i,twitterUsername:c}=(0,n.$)(),m=l?l.frontmatter.title:t,d=l?l.frontmatter.subtitle:o,k=`${m} | ${s}`,h=l&&l.frontmatter.image?`${i}${l.frontmatter.image}`:r,f=l&&l.fields.slug?`${i}${l.fields.slug}`:i;return a.createElement(a.Fragment,null,a.createElement("html",{lang:"en"}),a.createElement("title",null,k),a.createElement("meta",{name:"description",content:d}),a.createElement("meta",{property:"og:url",content:f}),a.createElement("meta",{property:"og:site_name",content:i}),a.createElement("meta",{property:"og:description",content:d}),a.createElement("meta",{property:"og:title",content:k}),a.createElement("meta",{property:"og:image",content:h}),a.createElement("meta",{name:"twitter:title",content:k}),a.createElement("meta",{name:"twitter:creator",content:c}),a.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),a.createElement("meta",{name:"twitter:description",content:d}),a.createElement("meta",{name:"twitter:image",content:h}),a.createElement("script",{async:!0,src:"https://www.googletagmanager.com/gtag/js?id=UA-134616286-1"}),a.createElement("script",null,"\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', 'UA-134616286-1');\n "))}},2712:function(e,t,l){"use strict";l.d(t,{$:function(){return n}});var a=l(1883);const n=()=>{const{site:e}=(0,a.useStaticQuery)("4175673927");return e.siteMetadata}},2670:function(e,t,l){var a=l(7294);function n(e){return a.createElement("svg",e,[a.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"M 49.002,255.376 C 44.861363,240.56032 42.726096,221.26752 39.96492,204.64867 33.569815,156.11234 34.53359,101.68969 66.273855,61.458738 77.379429,46.163821 94.193466,36.181281 112.35388,31.794302 c 4.10201,-0.682841 16.44015,-9.196305 10.37051,-0.208306 -4.33798,7.099864 -13.6935,34.169106 1.47761,20.591004 29.16454,-16.991298 61.45366,-29.523756 94.86517,-34.580937 13.57196,-0.812716 27.01177,1.747359 40.49383,2.900937 -8.25404,7.940706 -19.61107,13.359695 -25.92,22.72 38.0844,2.037556 72.17,23.177287 99.06212,48.939375 -6.85106,2.375814 -27.50231,-0.526068 -39.33625,3.16375 -17.32356,1.423837 -32.60892,10.383805 -46.28687,20.536875 -43.35668,30.73622 -94.29898,52.04884 -147.464,56.85 -6.661519,6.47001 -0.112366,27.96215 -5.256875,39.6668 -4.24141,22.26047 -23.144186,39.27185 -45.038125,43.6422 z",key:0}),a.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"M 255.4,380.175 C 205.61418,378.39211 161.70408,352.22357 118.80975,329.68125 106.15381,324.13756 94.065321,344.16903 78.531547,340.45906 52.015012,340.03571 29.776678,316.70668 23.296371,292.14375 17.856575,273.21983 36.628843,260.35512 52.521,256.016 c 21.818632,-5.97249 36.853669,-25.11932 43.233984,-47.10102 3.292985,-15.19856 -9.6178,-40.41231 15.647806,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98432 40.22076,-18.98366 5.07695,16.63334 21.0005,36.64996 11.3002,53.19344 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.227747,-7.20227 -18.740834,13.69844 -23.48,-0.52 -17.171508,-22.97847 16.973403,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.737956,11.14121 17.872603,8.60518 26.4,2.6 z",key:1}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 323.16063,265.24116 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:2}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 175.75229,315.856 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z",key:3}),a.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 353.32,247.696 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:4}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 200.041,314.896 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:5}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 324.84,259.536 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:6}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 202.92,231.056 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:7}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 181.481,215.696 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z",key:8}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 332.2,183.697 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:9}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 308.52,168.977 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z",key:10}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 67.870499,249.37514 c -15.179419,4.7639 -32.215532,11.09003 -39.951615,26.70032 -6.614189,12.96011 -5.505489,28.24165 6.20779,37.61233 10.306646,13.62315 25.578766,25.66181 43.12447,26.32297 13.776441,-0.0162 29.368506,-5.24351 39.756566,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 178.23572,355.14087 127.53634,329.43046 91.6221,287.03639 82.17705,275.76672 75.062512,262.21784 67.870499,249.37514 Z",key:11}),a.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 66.602,247.696 C 52.86568,196.53976 39.49361,141.80794 55.339838,89.465764 56.328552,83.465126 66.873595,59.107602 59.14075,75.457859 40.733199,108.14043 32.74117,146.07316 36.302,183.42158 c 1.652806,24.26835 6.494341,50.30059 12.834214,71.3799 6.565374,-1.56175 11.1465,-3.16529 17.465786,-7.10548 z",key:12}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 116.17545,59.061363 c 0.16868,5.947406 0.39752,13.664686 2.0767,15.773132 2.98389,-1.759869 38.22732,-34.357568 60.96102,-46.693558 -15.50568,5.033141 -32.04762,12.518891 -45.86676,20.958792 z",key:13}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 225.64,61.137 C 264.73517,55.010913 298.44667,77.960338 332.70312,92.156375 306.87464,64.802122 271.45022,42.921721 232.36,45.457 c -4.42206,3.958809 -6.50128,9.86066 -6.72,15.68 z",key:14}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 96.361,173.137 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.8671 -5.59041,-17.25403 -13.61969,-4.97773 -43.38529,35.78347 -99.4078,53.74048 -155.01931,57.77773 z",key:15}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 193.64,192.337 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 C 127.83871,309.95607 133.57164,213.79055 193.64,192.337 Z",key:16}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 206.59405,315.67182 C 108.47789,334.53759 101.64431,190.69706 193.64,192.337",key:17}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 320.04,153.616 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 C 268.57093,235.80103 272.85535,169.95439 320.04,153.616 Z",key:18}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 304.68,269.136 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8",key:19}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 305.96,269.776 C 253.85079,248.76171 246.28365,199.93508 277.48,161.616",key:20}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 305.32,269.456 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227",key:21}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"M 49.32,256.336 C 15.949108,166.75216 27.447525,53.315743 127.72,25.618",key:22}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"M 127.59993,25.798839 C 119.87536,36.509836 117.01441,42.73521 116.201,56.978 c -0.92731,6.644941 -0.41032,14.674895 3.25217,19.609037",key:23}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 116.201,56.978 C 159.65372,29.525504 212.04875,13.654188 263.719,19.537",key:24}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 263.719,19.537 c -11.97359,5.249406 -21.96258,14.210197 -30.08,24.32",key:25}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 233.64,43.858 c -4.96723,4.014221 -9.16337,13.474567 -8.125,19.2425",key:26}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 233.639,43.857 c 38.57084,1.082347 72.86725,22.973268 100.16,48.64",key:27}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 333.799,92.497 c -25.28601,-0.93692 -51.80898,3.741983 -74.6713,14.88614",key:28}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 96.361,173.137 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.24",key:29}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"M 49.32,256.336 C 92.76477,239.79068 98.167094,208.34988 95.873864,171.27984",key:30}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 277.48,161.616 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.079",key:31}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 243.561,345.936 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:32}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 49.32,256.336 c -80.116072,39.6821 32.644578,116.1168 67.07408,71.90242",key:33}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 116.85408,327.72342 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:34}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 85.666,289.9 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:35})])}n.defaultProps={height:"400",width:"400",viewBox:"0 0 400 400"},e.exports=n,n.default=n}}]); +//# sourceMappingURL=da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js.map \ No newline at end of file diff --git a/da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js.map b/da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js.map new file mode 100644 index 0000000..abbdf89 --- /dev/null +++ b/da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","mappings":"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","sources":["webpack://blog/./src/components/header/style.module.css","webpack://blog/./src/components/colourThemeToggler/colourThemeToggler.js","webpack://blog/./src/components/header/header.js","webpack://blog/./src/components/footer/style.module.css","webpack://blog/./src/components/footer/footer.js","webpack://blog/./src/components/sidebar/style.module.css","webpack://blog/./src/components/sidebar/sidebar.js","webpack://blog/./src/components/backdrop/backdrop.js","webpack://blog/./src/components/backdrop/style.module.css","webpack://blog/./src/components/themetoggler/themetoggler.js","webpack://blog/./src/components/layout/layout.js","webpack://blog/./src/components/layout/style.module.css","webpack://blog/./static/logo.png","webpack://blog/./src/components/seo/seo.js","webpack://blog/./src/hooks/useSiteMetadata.js","webpack://blog/./static/logo.inline.svg"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport var header = \"style-module--header--9b211\";\nexport var headerClosed = \"style-module--headerClosed--73985\";\nexport var logo = \"style-module--logo--196b3\";\nexport var navBar = \"style-module--navBar--f838a\";\nexport var navBarItem = \"style-module--navBarItem--499d5\";\nexport var navBarMenu = \"style-module--navBarMenu--4d86d\";\nexport var navButton = \"style-module--navButton--35b21\";\nexport var navButtonIcon = \"style-module--navButtonIcon--4ab71\";\nexport var sideBarColourThemeToggler = \"style-module--sideBarColourThemeToggler--21700\";","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSun, faMoon } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst ColourThemeToggler = ({theme, toggleTheme}) => {\r\n return (\r\n toggleTheme(theme === 'light' ? 'dark' : 'light')}\r\n aria-label=\"Switch between light and dark mode.\">\r\n { theme === 'light' && }\r\n { theme === 'dark' && }\r\n \r\n );\r\n};\r\n\r\nexport default ColourThemeToggler;","import React from \"react\";\r\nimport Logo from \"../../../static/logo.inline.svg\";\r\nimport * as style from \"./style.module.css\";\r\nimport { Link } from \"gatsby\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faBars } from \"@fortawesome/free-solid-svg-icons\";\r\nimport ColourThemeToggler from \"../colourThemeToggler/colourThemeToggler\";\r\n\r\nconst Header = ({ navButtonClickHandler, show, theme, toggleTheme}) => {\r\n const headerClass = show ? style.header : style.headerClosed;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Header;","// extracted by mini-css-extract-plugin\nexport var footer = \"style-module--footer--fd23b\";\nexport var socialIcon = \"style-module--socialIcon--a0692\";\nexport var socialIconLink = \"style-module--socialIconLink--f277d\";\nexport var socialIcons = \"style-module--socialIcons--5cc49\";","import React from \"react\";\r\nimport { useSiteMetadata } from \"../../hooks/useSiteMetadata\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faEnvelope } from \"@fortawesome/free-solid-svg-icons\";\r\nimport {\r\n faXTwitter,\r\n faLinkedinIn,\r\n faGithubAlt,\r\n} from \"@fortawesome/free-brands-svg-icons\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst Footer = () => {\r\n const { twitterUsername } = useSiteMetadata();\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

© George Pearson {new Date().getFullYear()}

\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;","// extracted by mini-css-extract-plugin\nexport var logo = \"style-module--logo--c90ae\";\nexport var sideBarColourThemeToggler = \"style-module--sideBarColourThemeToggler--db3c3\";\nexport var sidebar = \"style-module--sidebar--a86b4\";\nexport var sidebarNav = \"style-module--sidebarNav--b2fa6\";\nexport var sidebarNavItem = \"style-module--sidebarNavItem--43b27\";\nexport var sidebarOpen = \"style-module--sidebarOpen--b3f30\";","import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport Logo from \"../../../static/logo.inline.svg\";\r\nimport { Link } from \"gatsby\";\r\nimport ColourThemeToggler from \"../colourThemeToggler/colourThemeToggler\";\r\n\r\nconst SideBar = ({ show, theme, toggleTheme}) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SideBar;","import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\n\r\n const Backdrop = ({ backdropClickHandler }) => {\r\n return ;\r\n};\r\nexport default Backdrop;","// extracted by mini-css-extract-plugin\nexport var backdrop = \"style-module--backdrop--2bd13\";","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nclass ThemeToggler extends React.Component {\r\n state = {\r\n theme: typeof window !== 'undefined' ? window.__theme : null,\r\n }\r\n\r\n componentDidMount() {\r\n window.__onThemeChange = () => {\r\n this.setState({ theme: window.__theme })\r\n }\r\n }\r\n\r\n toggleTheme(theme) {\r\n window.__setPreferredTheme(theme)\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nThemeToggler.propTypes = {\r\n children: PropTypes.func.isRequired,\r\n}\r\n\r\nexport default ThemeToggler","import React, { useState, useLayoutEffect } from \"react\";\r\nimport Header from \"../header/header\";\r\nimport Footer from \"../footer/footer\";\r\nimport Sidebar from \"../sidebar/sidebar\";\r\nimport Backdrop from \"../backdrop/backdrop\";\r\nimport ThemeToggler from \"../themetoggler/themetoggler\"\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst Layout = ({ children }) => {\r\n const [sidebarOpen, setSidebarOpen] = useState(false);\r\n const [showHeader, setShowHeader] = useState(true);\r\n const [prevScrollPos, setPrevScrollPos] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n document.addEventListener(\"scroll\", handleScroll);\r\n return () => {\r\n document.removeEventListener(\"scroll\", handleScroll);\r\n };\r\n });\r\n\r\n const handleScroll = () => {\r\n const currentScrollPos =\r\n typeof window !== \"undefined\" ? window.pageYOffset : 0;\r\n setShowHeader(prevScrollPos >= currentScrollPos);\r\n setPrevScrollPos(currentScrollPos);\r\n };\r\n\r\n const navButtonClickHandler = () => {\r\n setSidebarOpen(prevSidebarOpen => !prevSidebarOpen.sidebarOpen);\r\n };\r\n\r\n const backdropClickHandler = () => {\r\n setSidebarOpen(false);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {({ theme, toggleTheme }) => (\r\n
\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {sidebarOpen && }\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Layout;","// extracted by mini-css-extract-plugin\nexport var fixedFooterWrapper = \"style-module--fixedFooterWrapper--51bdf\";","export default __webpack_public_path__ + \"static/logo-ad274be9cd1a4b8c9a225132ef6a70cf.png\";","import React from \"react\";\r\nimport { useSiteMetadata } from \"../../hooks/useSiteMetadata\";\r\nimport logoImage from \"../../../static/logo.png\";\r\n\r\nconst Seo = ({ page, post }) => {\r\n const {\r\n author,\r\n siteDescription,\r\n siteUrl,\r\n twitterUsername,\r\n } = useSiteMetadata();\r\n const pageTitle = post ? post.frontmatter.title : page;\r\n const description = post ? post.frontmatter.subtitle : siteDescription;\r\n const title = `${pageTitle} | ${author}`;\r\n const pageImage =\r\n post && post.frontmatter.image ? `${siteUrl}${post.frontmatter.image}` : logoImage;\r\n const url = \r\n post && post.fields.slug ? `${siteUrl}${post.fields.slug}` : siteUrl;\r\n return (\r\n <>\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {process.env.NODE_ENV === \"production\" && (\r\n \r\n )}\r\n {process.env.NODE_ENV === \"production\" && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Seo;","import { useStaticQuery, graphql } from \"gatsby\";\r\n\r\nexport const useSiteMetadata = () => {\r\n const { site } = useStaticQuery(\r\n graphql`\r\n query SiteMetaData {\r\n site {\r\n siteMetadata {\r\n author\r\n siteDescription\r\n siteUrl\r\n twitterUsername\r\n }\r\n }\r\n }\r\n `\r\n );\r\n return site.siteMetadata;\r\n};\r\n","var React = require('react');\n\nfunction LogoInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"M 49.002,255.376 C 44.861363,240.56032 42.726096,221.26752 39.96492,204.64867 33.569815,156.11234 34.53359,101.68969 66.273855,61.458738 77.379429,46.163821 94.193466,36.181281 112.35388,31.794302 c 4.10201,-0.682841 16.44015,-9.196305 10.37051,-0.208306 -4.33798,7.099864 -13.6935,34.169106 1.47761,20.591004 29.16454,-16.991298 61.45366,-29.523756 94.86517,-34.580937 13.57196,-0.812716 27.01177,1.747359 40.49383,2.900937 -8.25404,7.940706 -19.61107,13.359695 -25.92,22.72 38.0844,2.037556 72.17,23.177287 99.06212,48.939375 -6.85106,2.375814 -27.50231,-0.526068 -39.33625,3.16375 -17.32356,1.423837 -32.60892,10.383805 -46.28687,20.536875 -43.35668,30.73622 -94.29898,52.04884 -147.464,56.85 -6.661519,6.47001 -0.112366,27.96215 -5.256875,39.6668 -4.24141,22.26047 -23.144186,39.27185 -45.038125,43.6422 z\",\"key\":0}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"M 255.4,380.175 C 205.61418,378.39211 161.70408,352.22357 118.80975,329.68125 106.15381,324.13756 94.065321,344.16903 78.531547,340.45906 52.015012,340.03571 29.776678,316.70668 23.296371,292.14375 17.856575,273.21983 36.628843,260.35512 52.521,256.016 c 21.818632,-5.97249 36.853669,-25.11932 43.233984,-47.10102 3.292985,-15.19856 -9.6178,-40.41231 15.647806,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98432 40.22076,-18.98366 5.07695,16.63334 21.0005,36.64996 11.3002,53.19344 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.227747,-7.20227 -18.740834,13.69844 -23.48,-0.52 -17.171508,-22.97847 16.973403,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.737956,11.14121 17.872603,8.60518 26.4,2.6 z\",\"key\":1}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 323.16063,265.24116 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 175.75229,315.856 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 353.32,247.696 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 200.041,314.896 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 324.84,259.536 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 202.92,231.056 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 181.481,215.696 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 332.2,183.697 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 308.52,168.977 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 67.870499,249.37514 c -15.179419,4.7639 -32.215532,11.09003 -39.951615,26.70032 -6.614189,12.96011 -5.505489,28.24165 6.20779,37.61233 10.306646,13.62315 25.578766,25.66181 43.12447,26.32297 13.776441,-0.0162 29.368506,-5.24351 39.756566,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 178.23572,355.14087 127.53634,329.43046 91.6221,287.03639 82.17705,275.76672 75.062512,262.21784 67.870499,249.37514 Z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 66.602,247.696 C 52.86568,196.53976 39.49361,141.80794 55.339838,89.465764 56.328552,83.465126 66.873595,59.107602 59.14075,75.457859 40.733199,108.14043 32.74117,146.07316 36.302,183.42158 c 1.652806,24.26835 6.494341,50.30059 12.834214,71.3799 6.565374,-1.56175 11.1465,-3.16529 17.465786,-7.10548 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 116.17545,59.061363 c 0.16868,5.947406 0.39752,13.664686 2.0767,15.773132 2.98389,-1.759869 38.22732,-34.357568 60.96102,-46.693558 -15.50568,5.033141 -32.04762,12.518891 -45.86676,20.958792 z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 225.64,61.137 C 264.73517,55.010913 298.44667,77.960338 332.70312,92.156375 306.87464,64.802122 271.45022,42.921721 232.36,45.457 c -4.42206,3.958809 -6.50128,9.86066 -6.72,15.68 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 96.361,173.137 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.8671 -5.59041,-17.25403 -13.61969,-4.97773 -43.38529,35.78347 -99.4078,53.74048 -155.01931,57.77773 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 193.64,192.337 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 C 127.83871,309.95607 133.57164,213.79055 193.64,192.337 Z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 206.59405,315.67182 C 108.47789,334.53759 101.64431,190.69706 193.64,192.337\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 320.04,153.616 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 C 268.57093,235.80103 272.85535,169.95439 320.04,153.616 Z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 304.68,269.136 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 305.96,269.776 C 253.85079,248.76171 246.28365,199.93508 277.48,161.616\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 305.32,269.456 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"M 49.32,256.336 C 15.949108,166.75216 27.447525,53.315743 127.72,25.618\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"M 127.59993,25.798839 C 119.87536,36.509836 117.01441,42.73521 116.201,56.978 c -0.92731,6.644941 -0.41032,14.674895 3.25217,19.609037\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 116.201,56.978 C 159.65372,29.525504 212.04875,13.654188 263.719,19.537\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 263.719,19.537 c -11.97359,5.249406 -21.96258,14.210197 -30.08,24.32\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 233.64,43.858 c -4.96723,4.014221 -9.16337,13.474567 -8.125,19.2425\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 233.639,43.857 c 38.57084,1.082347 72.86725,22.973268 100.16,48.64\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 333.799,92.497 c -25.28601,-0.93692 -51.80898,3.741983 -74.6713,14.88614\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 96.361,173.137 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.24\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"M 49.32,256.336 C 92.76477,239.79068 98.167094,208.34988 95.873864,171.27984\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 277.48,161.616 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.079\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 243.561,345.936 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 49.32,256.336 c -80.116072,39.6821 32.644578,116.1168 67.07408,71.90242\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 116.85408,327.72342 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 85.666,289.9 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":35})]);\n}\n\nLogoInline.defaultProps = {\"height\":\"400\",\"width\":\"400\",\"viewBox\":\"0 0 400 400\"};\n\nmodule.exports = LogoInline;\n\nLogoInline.default = LogoInline;\n"],"names":["navBarItem","_ref","theme","toggleTheme","React","onClick","e","FontAwesomeIcon","icon","faMoon","size","faSun","navButtonClickHandler","show","headerClass","className","Link","to","Logo","faBars","style","ColourThemeToggler","socialIcon","socialIconLink","Footer","twitterUsername","useSiteMetadata","href","faGithubAlt","faLinkedinIn","faXTwitter","faEnvelope","Date","getFullYear","sidebarNavItem","backdropClickHandler","onKeyDown","role","tabIndex","ThemeToggler","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","window","__theme","_inheritsLoose","_proto","prototype","componentDidMount","__onThemeChange","this","setState","__setPreferredTheme","render","props","children","sidebarOpen","setSidebarOpen","useState","showHeader","setShowHeader","prevScrollPos","setPrevScrollPos","useLayoutEffect","document","addEventListener","handleScroll","removeEventListener","currentScrollPos","pageYOffset","prevSidebarOpen","_ref2","Header","Sidebar","Backdrop","page","post","author","siteDescription","siteUrl","pageTitle","frontmatter","title","description","subtitle","pageImage","image","logoImage","url","fields","slug","lang","name","content","property","async","src","site","useStaticQuery","siteMetadata","LogoInline","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js b/da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js deleted file mode 100644 index 68abc82..0000000 --- a/da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkblog=self.webpackChunkblog||[]).push([[504],{7025:function(e,t,l){"use strict";l.d(t,{Z:function(){return L}});var a=l(7294),n=l(1883);const r=()=>{const{site:e}=(0,n.useStaticQuery)("4175673927");return e.siteMetadata};var s=l.p+"static/logo-ad274be9cd1a4b8c9a225132ef6a70cf.png";var o=e=>{let{page:t,post:l}=e;const{author:n,siteDescription:o,siteUrl:i,twitterUsername:c}=r(),m=l?l.frontmatter.title:t,d=l?l.frontmatter.subtitle:o,k=`${m} | ${n}`,h=l&&l.frontmatter.image?`${i}${l.frontmatter.image}`:s,f=l&&l.fields.slug?`${i}${l.fields.slug}`:i;return a.createElement(a.Fragment,null,a.createElement("html",{lang:"en"}),a.createElement("title",null,k),a.createElement("meta",{name:"description",content:d}),a.createElement("meta",{property:"og:url",content:f}),a.createElement("meta",{property:"og:site_name",content:i}),a.createElement("meta",{property:"og:description",content:d}),a.createElement("meta",{property:"og:title",content:k}),a.createElement("meta",{property:"og:image",content:h}),a.createElement("meta",{name:"twitter:title",content:k}),a.createElement("meta",{name:"twitter:creator",content:c}),a.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),a.createElement("meta",{name:"twitter:description",content:d}),a.createElement("meta",{name:"twitter:image",content:h}),a.createElement("script",{async:!0,src:"https://www.googletagmanager.com/gtag/js?id=UA-134616286-1"}),a.createElement("script",null,"\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', 'UA-134616286-1');\n "))},i=l(2670),c=l.n(i),m="style-module--navBarItem--499d5",d=l(982),k=l(9417);var h=e=>{let{theme:t,toggleTheme:l}=e;return a.createElement("button",{onClick:e=>l("light"===t?"dark":"light"),"aria-label":"Switch between light and dark mode."},"light"===t&&a.createElement(d.G,{icon:k.DBF,size:"1x"}),"dark"===t&&a.createElement(d.G,{icon:k.enB,size:"1x"}))};var f=e=>{let{navButtonClickHandler:t,show:l,theme:r,toggleTheme:s}=e;const o=l?"style-module--header--9b211":"style-module--headerClosed--73985";return a.createElement("header",{className:o},a.createElement("nav",{className:"style-module--navBar--f838a"},a.createElement(n.Link,{to:"/"},a.createElement(c(),{"aria-label":"home",className:"style-module--logo--196b3"})),a.createElement("button",{"aria-label":"navigation button",className:"style-module--navButton--35b21",onClick:t},a.createElement(d.G,{className:"style-module--navButtonIcon--4ab71",icon:k.xiG,size:"2x"})),a.createElement("div",{className:"style-module--navBarMenu--4d86d"},a.createElement(n.Link,{to:"/",className:m},"Home"),a.createElement(n.Link,{to:"/about",className:m},"About"),a.createElement(n.Link,{to:"/photos",className:m},"Photos")),a.createElement("div",{className:"style-module--sideBarColourThemeToggler--21700"},a.createElement(h,{theme:r,toggleTheme:s}))))},y=l(3024),u="style-module--socialIcon--a0692",p="style-module--socialIconLink--f277d";var E=()=>{const{twitterUsername:e}=r();return a.createElement("footer",{className:"style-module--footer--fd23b"},a.createElement("div",{className:"style-module--socialIcons--5cc49"},a.createElement("a",{"aria-label":"GitHub",className:p,href:"https://github.com/george-pearson"},a.createElement(d.G,{icon:y.Nz9,className:u,size:"3x"})),a.createElement("a",{"aria-label":"Linkedin",className:p,href:"https://linkedin.com/in/george-pearson-27244a30"},a.createElement(d.G,{icon:y.hwn,className:u,size:"3x"})),a.createElement("a",{"aria-label":"Twitter",className:p,href:`https://twitter.com/${e}`},a.createElement(d.G,{icon:y.NCc,className:u,size:"3x"})),a.createElement("a",{"aria-label":"Email",className:p,href:"mailto:george-pearson.business@outlook.com"},a.createElement(d.G,{icon:k.FU$,className:u,size:"3x"}))),a.createElement("p",null,"© George Pearson ",(new Date).getFullYear()))},g="style-module--sidebarNavItem--43b27";var N=e=>{let{show:t,theme:l,toggleTheme:r}=e;return a.createElement("div",{className:t?"style-module--sidebarOpen--b3f30":"style-module--sidebar--a86b4"},a.createElement(c(),{className:"style-module--logo--c90ae"}),a.createElement("nav",{className:"style-module--sidebarNav--b2fa6"},a.createElement(n.Link,{to:"/",className:g},"Home"),a.createElement(n.Link,{to:"/about",className:g},"About"),a.createElement(n.Link,{to:"/photos",className:g},"Photos")),a.createElement("div",{className:"style-module--sideBarColourThemeToggler--db3c3"},a.createElement(h,{theme:l,toggleTheme:r})))};var b=e=>{let{backdropClickHandler:t}=e;return a.createElement("div",{className:"style-module--backdrop--2bd13",onClick:t,onKeyDown:t,role:"menuitem","aria-label":"menu item",tabIndex:"0"})},w=l(4578);let z=function(e){function t(){for(var t,l=arguments.length,a=new Array(l),n=0;n{this.setState({theme:window.__theme})}},l.toggleTheme=function(e){window.__setPreferredTheme(e)},l.render=function(){return a.createElement(this.props.children,{theme:this.state.theme,toggleTheme:this.toggleTheme})},t}(a.Component);var v=z;var L=e=>{let{page:t,post:l,children:n}=e;const{0:r,1:s}=(0,a.useState)(!1),{0:i,1:c}=(0,a.useState)(!0),{0:m,1:d}=(0,a.useState)(0);(0,a.useLayoutEffect)((()=>(document.addEventListener("scroll",k),()=>{document.removeEventListener("scroll",k)})));const k=()=>{const e="undefined"!=typeof window?window.pageYOffset:0;c(m>=e),d(e)},h=()=>{s((e=>!e.sidebarOpen))};return a.createElement("div",null,a.createElement(o,{page:t,post:l}),a.createElement(v,null,(e=>{let{theme:t,toggleTheme:l}=e;return a.createElement("div",null,a.createElement(f,{show:i,navButtonClickHandler:h,theme:t,toggleTheme:l}),a.createElement(N,{show:r,theme:t,toggleTheme:l}))})),r&&a.createElement(b,{backdropClickHandler:()=>{s(!1)}}),a.createElement("div",{className:"style-module--fixedFooterWrapper--51bdf"},a.createElement("main",null,n),a.createElement(E,null)))}},2670:function(e,t,l){var a=l(7294);function n(e){return a.createElement("svg",e,[a.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"M 49.002,255.376 C 44.861363,240.56032 42.726096,221.26752 39.96492,204.64867 33.569815,156.11234 34.53359,101.68969 66.273855,61.458738 77.379429,46.163821 94.193466,36.181281 112.35388,31.794302 c 4.10201,-0.682841 16.44015,-9.196305 10.37051,-0.208306 -4.33798,7.099864 -13.6935,34.169106 1.47761,20.591004 29.16454,-16.991298 61.45366,-29.523756 94.86517,-34.580937 13.57196,-0.812716 27.01177,1.747359 40.49383,2.900937 -8.25404,7.940706 -19.61107,13.359695 -25.92,22.72 38.0844,2.037556 72.17,23.177287 99.06212,48.939375 -6.85106,2.375814 -27.50231,-0.526068 -39.33625,3.16375 -17.32356,1.423837 -32.60892,10.383805 -46.28687,20.536875 -43.35668,30.73622 -94.29898,52.04884 -147.464,56.85 -6.661519,6.47001 -0.112366,27.96215 -5.256875,39.6668 -4.24141,22.26047 -23.144186,39.27185 -45.038125,43.6422 z",key:0}),a.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"M 255.4,380.175 C 205.61418,378.39211 161.70408,352.22357 118.80975,329.68125 106.15381,324.13756 94.065321,344.16903 78.531547,340.45906 52.015012,340.03571 29.776678,316.70668 23.296371,292.14375 17.856575,273.21983 36.628843,260.35512 52.521,256.016 c 21.818632,-5.97249 36.853669,-25.11932 43.233984,-47.10102 3.292985,-15.19856 -9.6178,-40.41231 15.647806,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98432 40.22076,-18.98366 5.07695,16.63334 21.0005,36.64996 11.3002,53.19344 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.227747,-7.20227 -18.740834,13.69844 -23.48,-0.52 -17.171508,-22.97847 16.973403,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.737956,11.14121 17.872603,8.60518 26.4,2.6 z",key:1}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 323.16063,265.24116 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:2}),a.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 175.75229,315.856 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z",key:3}),a.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 353.32,247.696 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:4}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 200.041,314.896 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:5}),a.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 324.84,259.536 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:6}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 202.92,231.056 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:7}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 181.481,215.696 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z",key:8}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 332.2,183.697 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:9}),a.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 308.52,168.977 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z",key:10}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 67.870499,249.37514 c -15.179419,4.7639 -32.215532,11.09003 -39.951615,26.70032 -6.614189,12.96011 -5.505489,28.24165 6.20779,37.61233 10.306646,13.62315 25.578766,25.66181 43.12447,26.32297 13.776441,-0.0162 29.368506,-5.24351 39.756566,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 178.23572,355.14087 127.53634,329.43046 91.6221,287.03639 82.17705,275.76672 75.062512,262.21784 67.870499,249.37514 Z",key:11}),a.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 66.602,247.696 C 52.86568,196.53976 39.49361,141.80794 55.339838,89.465764 56.328552,83.465126 66.873595,59.107602 59.14075,75.457859 40.733199,108.14043 32.74117,146.07316 36.302,183.42158 c 1.652806,24.26835 6.494341,50.30059 12.834214,71.3799 6.565374,-1.56175 11.1465,-3.16529 17.465786,-7.10548 z",key:12}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 116.17545,59.061363 c 0.16868,5.947406 0.39752,13.664686 2.0767,15.773132 2.98389,-1.759869 38.22732,-34.357568 60.96102,-46.693558 -15.50568,5.033141 -32.04762,12.518891 -45.86676,20.958792 z",key:13}),a.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 225.64,61.137 C 264.73517,55.010913 298.44667,77.960338 332.70312,92.156375 306.87464,64.802122 271.45022,42.921721 232.36,45.457 c -4.42206,3.958809 -6.50128,9.86066 -6.72,15.68 z",key:14}),a.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 96.361,173.137 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.8671 -5.59041,-17.25403 -13.61969,-4.97773 -43.38529,35.78347 -99.4078,53.74048 -155.01931,57.77773 z",key:15}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 193.64,192.337 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 C 127.83871,309.95607 133.57164,213.79055 193.64,192.337 Z",key:16}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 206.59405,315.67182 C 108.47789,334.53759 101.64431,190.69706 193.64,192.337",key:17}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 320.04,153.616 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 C 268.57093,235.80103 272.85535,169.95439 320.04,153.616 Z",key:18}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 304.68,269.136 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8",key:19}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 305.96,269.776 C 253.85079,248.76171 246.28365,199.93508 277.48,161.616",key:20}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 305.32,269.456 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227",key:21}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"M 49.32,256.336 C 15.949108,166.75216 27.447525,53.315743 127.72,25.618",key:22}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"M 127.59993,25.798839 C 119.87536,36.509836 117.01441,42.73521 116.201,56.978 c -0.92731,6.644941 -0.41032,14.674895 3.25217,19.609037",key:23}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 116.201,56.978 C 159.65372,29.525504 212.04875,13.654188 263.719,19.537",key:24}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 263.719,19.537 c -11.97359,5.249406 -21.96258,14.210197 -30.08,24.32",key:25}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 233.64,43.858 c -4.96723,4.014221 -9.16337,13.474567 -8.125,19.2425",key:26}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 233.639,43.857 c 38.57084,1.082347 72.86725,22.973268 100.16,48.64",key:27}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 333.799,92.497 c -25.28601,-0.93692 -51.80898,3.741983 -74.6713,14.88614",key:28}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 96.361,173.137 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.24",key:29}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"M 49.32,256.336 C 92.76477,239.79068 98.167094,208.34988 95.873864,171.27984",key:30}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 277.48,161.616 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.079",key:31}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 243.561,345.936 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:32}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 49.32,256.336 c -80.116072,39.6821 32.644578,116.1168 67.07408,71.90242",key:33}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 116.85408,327.72342 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:34}),a.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 85.666,289.9 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:35})])}n.defaultProps={height:"400",width:"400",viewBox:"0 0 400 400"},e.exports=n,n.default=n}}]); -//# sourceMappingURL=da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js.map \ No newline at end of file diff --git a/da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js.map b/da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js.map deleted file mode 100644 index 840e352..0000000 --- a/da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"da497fb35118ece64ecc2a23d03017fcd97099fa-7e7216404f287a83b13f.js","mappings":"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","sources":["webpack://blog/./src/hooks/useSiteMetadata.js","webpack://blog/./static/logo.png","webpack://blog/./src/components/head/head.js","webpack://blog/./src/components/header/style.module.css","webpack://blog/./src/components/colourThemeToggler/colourThemeToggler.js","webpack://blog/./src/components/header/header.js","webpack://blog/./src/components/footer/style.module.css","webpack://blog/./src/components/footer/footer.js","webpack://blog/./src/components/sidebar/style.module.css","webpack://blog/./src/components/sidebar/sidebar.js","webpack://blog/./src/components/backdrop/backdrop.js","webpack://blog/./src/components/backdrop/style.module.css","webpack://blog/./src/components/themetoggler/themetoggler.js","webpack://blog/./src/components/layout/layout.js","webpack://blog/./src/components/layout/style.module.css","webpack://blog/./static/logo.inline.svg"],"sourcesContent":["import { useStaticQuery, graphql } from \"gatsby\";\r\n\r\nexport const useSiteMetadata = () => {\r\n const { site } = useStaticQuery(\r\n graphql`\r\n query SiteMetaData {\r\n site {\r\n siteMetadata {\r\n author\r\n siteDescription\r\n siteUrl\r\n twitterUsername\r\n }\r\n }\r\n }\r\n `\r\n );\r\n return site.siteMetadata;\r\n};\r\n","export default __webpack_public_path__ + \"static/logo-ad274be9cd1a4b8c9a225132ef6a70cf.png\";","import React from \"react\";\r\nimport { useSiteMetadata } from \"../../hooks/useSiteMetadata\";\r\nimport logoImage from \"../../../static/logo.png\";\r\n\r\nconst Head = ({ page, post }) => {\r\n const {\r\n author,\r\n siteDescription,\r\n siteUrl,\r\n twitterUsername,\r\n } = useSiteMetadata();\r\n const pageTitle = post ? post.frontmatter.title : page;\r\n const description = post ? post.frontmatter.subtitle : siteDescription;\r\n const title = `${pageTitle} | ${author}`;\r\n const pageImage =\r\n post && post.frontmatter.image ? `${siteUrl}${post.frontmatter.image}` : logoImage;\r\n const url = \r\n post && post.fields.slug ? `${siteUrl}${post.fields.slug}` : siteUrl;\r\n return (\r\n <>\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {process.env.NODE_ENV === \"production\" && (\r\n \r\n )}\r\n {process.env.NODE_ENV === \"production\" && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Head;","// extracted by mini-css-extract-plugin\nexport var header = \"style-module--header--9b211\";\nexport var headerClosed = \"style-module--headerClosed--73985\";\nexport var logo = \"style-module--logo--196b3\";\nexport var navBar = \"style-module--navBar--f838a\";\nexport var navBarItem = \"style-module--navBarItem--499d5\";\nexport var navBarMenu = \"style-module--navBarMenu--4d86d\";\nexport var navButton = \"style-module--navButton--35b21\";\nexport var navButtonIcon = \"style-module--navButtonIcon--4ab71\";\nexport var sideBarColourThemeToggler = \"style-module--sideBarColourThemeToggler--21700\";","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSun, faMoon } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst ColourThemeToggler = ({theme, toggleTheme}) => {\r\n return (\r\n toggleTheme(theme === 'light' ? 'dark' : 'light')}\r\n aria-label=\"Switch between light and dark mode.\">\r\n { theme === 'light' && }\r\n { theme === 'dark' && }\r\n \r\n );\r\n};\r\n\r\nexport default ColourThemeToggler;","import React from \"react\";\r\nimport Logo from \"../../../static/logo.inline.svg\";\r\nimport * as style from \"./style.module.css\";\r\nimport { Link } from \"gatsby\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faBars } from \"@fortawesome/free-solid-svg-icons\";\r\nimport ColourThemeToggler from \"../colourThemeToggler/colourThemeToggler\";\r\n\r\nconst Header = ({ navButtonClickHandler, show, theme, toggleTheme}) => {\r\n const headerClass = show ? style.header : style.headerClosed;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Header;","// extracted by mini-css-extract-plugin\nexport var footer = \"style-module--footer--fd23b\";\nexport var socialIcon = \"style-module--socialIcon--a0692\";\nexport var socialIconLink = \"style-module--socialIconLink--f277d\";\nexport var socialIcons = \"style-module--socialIcons--5cc49\";","import React from \"react\";\r\nimport { useSiteMetadata } from \"../../hooks/useSiteMetadata\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faEnvelope } from \"@fortawesome/free-solid-svg-icons\";\r\nimport {\r\n faXTwitter,\r\n faLinkedinIn,\r\n faGithubAlt,\r\n} from \"@fortawesome/free-brands-svg-icons\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst Footer = () => {\r\n const { twitterUsername } = useSiteMetadata();\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

© George Pearson {new Date().getFullYear()}

\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;","// extracted by mini-css-extract-plugin\nexport var logo = \"style-module--logo--c90ae\";\nexport var sideBarColourThemeToggler = \"style-module--sideBarColourThemeToggler--db3c3\";\nexport var sidebar = \"style-module--sidebar--a86b4\";\nexport var sidebarNav = \"style-module--sidebarNav--b2fa6\";\nexport var sidebarNavItem = \"style-module--sidebarNavItem--43b27\";\nexport var sidebarOpen = \"style-module--sidebarOpen--b3f30\";","import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport Logo from \"../../../static/logo.inline.svg\";\r\nimport { Link } from \"gatsby\";\r\nimport ColourThemeToggler from \"../colourThemeToggler/colourThemeToggler\";\r\n\r\nconst SideBar = ({ show, theme, toggleTheme}) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SideBar;","import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\n\r\n const Backdrop = ({ backdropClickHandler }) => {\r\n return ;\r\n};\r\nexport default Backdrop;","// extracted by mini-css-extract-plugin\nexport var backdrop = \"style-module--backdrop--2bd13\";","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nclass ThemeToggler extends React.Component {\r\n state = {\r\n theme: typeof window !== 'undefined' ? window.__theme : null,\r\n }\r\n\r\n componentDidMount() {\r\n window.__onThemeChange = () => {\r\n this.setState({ theme: window.__theme })\r\n }\r\n }\r\n\r\n toggleTheme(theme) {\r\n window.__setPreferredTheme(theme)\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nThemeToggler.propTypes = {\r\n children: PropTypes.func.isRequired,\r\n}\r\n\r\nexport default ThemeToggler","import React, { useState, useLayoutEffect } from \"react\";\r\nimport Head from \"../head/head\";\r\nimport Header from \"../header/header\";\r\nimport Footer from \"../footer/footer\";\r\nimport Sidebar from \"../sidebar/sidebar\";\r\nimport Backdrop from \"../backdrop/backdrop\";\r\nimport ThemeToggler from \"../themetoggler/themetoggler\"\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst Layout = ({ page, post, children }) => {\r\n const [sidebarOpen, setSidebarOpen] = useState(false);\r\n const [showHeader, setShowHeader] = useState(true);\r\n const [prevScrollPos, setPrevScrollPos] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n document.addEventListener(\"scroll\", handleScroll);\r\n return () => {\r\n document.removeEventListener(\"scroll\", handleScroll);\r\n };\r\n });\r\n\r\n const handleScroll = () => {\r\n const currentScrollPos =\r\n typeof window !== \"undefined\" ? window.pageYOffset : 0;\r\n setShowHeader(prevScrollPos >= currentScrollPos);\r\n setPrevScrollPos(currentScrollPos);\r\n };\r\n\r\n const navButtonClickHandler = () => {\r\n setSidebarOpen(prevSidebarOpen => !prevSidebarOpen.sidebarOpen);\r\n };\r\n\r\n const backdropClickHandler = () => {\r\n setSidebarOpen(false);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {({ theme, toggleTheme }) => (\r\n
\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {sidebarOpen && }\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Layout;","// extracted by mini-css-extract-plugin\nexport var fixedFooterWrapper = \"style-module--fixedFooterWrapper--51bdf\";","var React = require('react');\n\nfunction LogoInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"M 49.002,255.376 C 44.861363,240.56032 42.726096,221.26752 39.96492,204.64867 33.569815,156.11234 34.53359,101.68969 66.273855,61.458738 77.379429,46.163821 94.193466,36.181281 112.35388,31.794302 c 4.10201,-0.682841 16.44015,-9.196305 10.37051,-0.208306 -4.33798,7.099864 -13.6935,34.169106 1.47761,20.591004 29.16454,-16.991298 61.45366,-29.523756 94.86517,-34.580937 13.57196,-0.812716 27.01177,1.747359 40.49383,2.900937 -8.25404,7.940706 -19.61107,13.359695 -25.92,22.72 38.0844,2.037556 72.17,23.177287 99.06212,48.939375 -6.85106,2.375814 -27.50231,-0.526068 -39.33625,3.16375 -17.32356,1.423837 -32.60892,10.383805 -46.28687,20.536875 -43.35668,30.73622 -94.29898,52.04884 -147.464,56.85 -6.661519,6.47001 -0.112366,27.96215 -5.256875,39.6668 -4.24141,22.26047 -23.144186,39.27185 -45.038125,43.6422 z\",\"key\":0}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"M 255.4,380.175 C 205.61418,378.39211 161.70408,352.22357 118.80975,329.68125 106.15381,324.13756 94.065321,344.16903 78.531547,340.45906 52.015012,340.03571 29.776678,316.70668 23.296371,292.14375 17.856575,273.21983 36.628843,260.35512 52.521,256.016 c 21.818632,-5.97249 36.853669,-25.11932 43.233984,-47.10102 3.292985,-15.19856 -9.6178,-40.41231 15.647806,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98432 40.22076,-18.98366 5.07695,16.63334 21.0005,36.64996 11.3002,53.19344 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.227747,-7.20227 -18.740834,13.69844 -23.48,-0.52 -17.171508,-22.97847 16.973403,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.737956,11.14121 17.872603,8.60518 26.4,2.6 z\",\"key\":1}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 323.16063,265.24116 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 175.75229,315.856 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 353.32,247.696 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 200.041,314.896 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 324.84,259.536 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 202.92,231.056 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 181.481,215.696 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 332.2,183.697 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 308.52,168.977 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 67.870499,249.37514 c -15.179419,4.7639 -32.215532,11.09003 -39.951615,26.70032 -6.614189,12.96011 -5.505489,28.24165 6.20779,37.61233 10.306646,13.62315 25.578766,25.66181 43.12447,26.32297 13.776441,-0.0162 29.368506,-5.24351 39.756566,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 178.23572,355.14087 127.53634,329.43046 91.6221,287.03639 82.17705,275.76672 75.062512,262.21784 67.870499,249.37514 Z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 66.602,247.696 C 52.86568,196.53976 39.49361,141.80794 55.339838,89.465764 56.328552,83.465126 66.873595,59.107602 59.14075,75.457859 40.733199,108.14043 32.74117,146.07316 36.302,183.42158 c 1.652806,24.26835 6.494341,50.30059 12.834214,71.3799 6.565374,-1.56175 11.1465,-3.16529 17.465786,-7.10548 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 116.17545,59.061363 c 0.16868,5.947406 0.39752,13.664686 2.0767,15.773132 2.98389,-1.759869 38.22732,-34.357568 60.96102,-46.693558 -15.50568,5.033141 -32.04762,12.518891 -45.86676,20.958792 z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 225.64,61.137 C 264.73517,55.010913 298.44667,77.960338 332.70312,92.156375 306.87464,64.802122 271.45022,42.921721 232.36,45.457 c -4.42206,3.958809 -6.50128,9.86066 -6.72,15.68 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 96.361,173.137 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.8671 -5.59041,-17.25403 -13.61969,-4.97773 -43.38529,35.78347 -99.4078,53.74048 -155.01931,57.77773 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 193.64,192.337 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 C 127.83871,309.95607 133.57164,213.79055 193.64,192.337 Z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 206.59405,315.67182 C 108.47789,334.53759 101.64431,190.69706 193.64,192.337\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 320.04,153.616 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 C 268.57093,235.80103 272.85535,169.95439 320.04,153.616 Z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 304.68,269.136 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 305.96,269.776 C 253.85079,248.76171 246.28365,199.93508 277.48,161.616\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 305.32,269.456 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"M 49.32,256.336 C 15.949108,166.75216 27.447525,53.315743 127.72,25.618\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"M 127.59993,25.798839 C 119.87536,36.509836 117.01441,42.73521 116.201,56.978 c -0.92731,6.644941 -0.41032,14.674895 3.25217,19.609037\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 116.201,56.978 C 159.65372,29.525504 212.04875,13.654188 263.719,19.537\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 263.719,19.537 c -11.97359,5.249406 -21.96258,14.210197 -30.08,24.32\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 233.64,43.858 c -4.96723,4.014221 -9.16337,13.474567 -8.125,19.2425\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 233.639,43.857 c 38.57084,1.082347 72.86725,22.973268 100.16,48.64\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 333.799,92.497 c -25.28601,-0.93692 -51.80898,3.741983 -74.6713,14.88614\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 96.361,173.137 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.24\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"M 49.32,256.336 C 92.76477,239.79068 98.167094,208.34988 95.873864,171.27984\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 277.48,161.616 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.079\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 243.561,345.936 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 49.32,256.336 c -80.116072,39.6821 32.644578,116.1168 67.07408,71.90242\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 116.85408,327.72342 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 85.666,289.9 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":35})]);\n}\n\nLogoInline.defaultProps = {\"height\":\"400\",\"width\":\"400\",\"viewBox\":\"0 0 400 400\"};\n\nmodule.exports = LogoInline;\n\nLogoInline.default = LogoInline;\n"],"names":["useSiteMetadata","site","useStaticQuery","siteMetadata","_ref","page","post","author","siteDescription","siteUrl","twitterUsername","pageTitle","frontmatter","title","description","subtitle","pageImage","image","logoImage","url","fields","slug","React","lang","name","content","property","async","src","navBarItem","theme","toggleTheme","onClick","e","FontAwesomeIcon","icon","faMoon","size","faSun","navButtonClickHandler","show","headerClass","className","Link","to","Logo","faBars","style","ColourThemeToggler","socialIcon","socialIconLink","Footer","href","faGithubAlt","faLinkedinIn","faXTwitter","faEnvelope","Date","getFullYear","sidebarNavItem","backdropClickHandler","onKeyDown","role","tabIndex","ThemeToggler","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","window","__theme","_inheritsLoose","_proto","prototype","componentDidMount","__onThemeChange","this","setState","__setPreferredTheme","render","props","children","sidebarOpen","setSidebarOpen","useState","showHeader","setShowHeader","prevScrollPos","setPrevScrollPos","useLayoutEffect","document","addEventListener","handleScroll","removeEventListener","currentScrollPos","pageYOffset","prevSidebarOpen","Head","_ref2","Header","Sidebar","Backdrop","LogoInline","createElement","defaultProps","module","exports","default"],"sourceRoot":""} \ No newline at end of file diff --git a/da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js b/da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js deleted file mode 100644 index 0fb138f..0000000 --- a/da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkblog=self.webpackChunkblog||[]).push([[504],{4852:function(e){"use strict";e.exports=Object.assign},8610:function(e,t,n){"use strict";n.d(t,{Z:function(){return Ie}});var r,o,a,i,l=n(7294),s=n(5697),c=n.n(s),u=n(3524),f=n.n(u),m=n(9590),d=n.n(m),p=n(4852),h=n.n(p),y="bodyAttributes",k="htmlAttributes",b="titleAttributes",g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},E=(Object.keys(g).map((function(e){return g[e]})),"charset"),v="cssText",T="href",w="http-equiv",O="innerHTML",C="itemprop",N="name",A="property",S="rel",L="src",j="target",z={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},M="defaultTitle",x="defer",P="encodeSpecialCharacters",W="onChangeClientState",I="titleTemplate",R=Object.keys(z).reduce((function(e,t){return e[z[t]]=t,e}),{}),D=[g.NOSCRIPT,g.SCRIPT,g.STYLE],_="data-react-helmet",B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},F=function(e){return!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Y=function(e){var t=V(e,g.TITLE),n=V(e,I);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=V(e,M);return t||r||void 0},G=function(e){return V(e,W)||function(){}},$=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return U({},e,t)}),{})},K=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},Q=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){Q(e)}),0)}),J=function(e){return clearTimeout(e)},X="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Q:n.g.requestAnimationFrame||Q,ee="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||J:n.g.cancelAnimationFrame||J,te=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},ne=null,re=function(e,t){var n=e.baseTag,r=e.bodyAttributes,o=e.htmlAttributes,a=e.linkTags,i=e.metaTags,l=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,f=e.title,m=e.titleAttributes;ie(g.BODY,r),ie(g.HTML,o),ae(f,m);var d={baseTag:le(g.BASE,n),linkTags:le(g.LINK,a),metaTags:le(g.META,i),noscriptTags:le(g.NOSCRIPT,l),scriptTags:le(g.SCRIPT,c),styleTags:le(g.STYLE,u)},p={},h={};Object.keys(d).forEach((function(e){var t=d[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=d[e].oldTags)})),t&&t(),s(e,p,h)},oe=function(e){return Array.isArray(e)?e.join(""):e},ae=function(e,t){void 0!==e&&document.title!==e&&(document.title=oe(e)),ie(g.TITLE,t)},ie=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(_),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),l=0;l=0;f--)n.removeAttribute(a[f]);o.length===a.length?n.removeAttribute(_):n.getAttribute(_)!==i.join(",")&&n.setAttribute(_,i.join(","))}},le=function(e,t){var n=document.head||document.querySelector(g.HEAD),r=n.querySelectorAll(e+"["+_+"]"),o=Array.prototype.slice.call(r),a=[],i=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===O)n.innerHTML=t.innerHTML;else if(r===v)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var l=void 0===t[r]?"":t[r];n.setAttribute(r,l)}n.setAttribute(_,"true"),o.some((function(e,t){return i=t,n.isEqualNode(e)}))?o.splice(i,1):a.push(n)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),a.forEach((function(e){return n.appendChild(e)})),{oldTags:o,newTags:a}},se=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},ce=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[z[n]||n]=e[n],t}),t)},ue=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[_]=!0,o=ce(n,r),[l.createElement(g.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,r){var o=se(n),a=oe(t);return o?"<"+e+" "+_+'="true" '+o+">"+F(a,r)+"":"<"+e+" "+_+'="true">'+F(a,r)+""}(e,t.title,t.titleAttributes,n)}};case y:case k:return{toComponent:function(){return ce(t)},toString:function(){return se(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,o=((r={key:n})[_]=!0,r);return Object.keys(t).forEach((function(e){var n=z[e]||e;if(n===O||n===v){var r=t.innerHTML||t.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=t[e]})),l.createElement(e,o)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!(e===O||e===v)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+F(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===D.indexOf(e);return t+"<"+e+" "+_+'="true" '+o+(i?"/>":">"+a+"")}),"")}(e,t,n)}}}},fe=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.linkTags,i=e.metaTags,l=e.noscriptTags,s=e.scriptTags,c=e.styleTags,u=e.title,f=void 0===u?"":u,m=e.titleAttributes;return{base:ue(g.BASE,t,r),bodyAttributes:ue(y,n,r),htmlAttributes:ue(k,o,r),link:ue(g.LINK,a,r),meta:ue(g.META,i,r),noscript:ue(g.NOSCRIPT,l,r),script:ue(g.SCRIPT,s,r),style:ue(g.STYLE,c,r),title:ue(g.TITLE,{title:f,titleAttributes:m},r)}},me=f()((function(e){return{baseTag:K([T,j],e),bodyAttributes:$(y,e),defer:V(e,x),encode:V(e,P),htmlAttributes:$(k,e),linkTags:Z(g.LINK,[S,T],e),metaTags:Z(g.META,[N,E,w,A,C],e),noscriptTags:Z(g.NOSCRIPT,[O],e),onChangeClientState:G(e),scriptTags:Z(g.SCRIPT,[L,O],e),styleTags:Z(g.STYLE,[v],e),title:Y(e),titleAttributes:$(b,e)}}),(function(e){ne&&ee(ne),e.defer?ne=X((function(){re(e,(function(){ne=null}))})):(re(e),ne=null)}),fe)((function(){return null})),de=(o=me,i=a=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!d()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,o=e.newChildProps,a=e.nestedChildren;return U({},r,((t={})[n.type]=[].concat(r[n.type]||[],[U({},o,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return U({},o,((t={})[r.type]=i,t.titleAttributes=U({},a),t));case g.BODY:return U({},o,{bodyAttributes:U({},a)});case g.HTML:return U({},o,{htmlAttributes:U({},a)})}return U({},o,((n={})[r.type]=U({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=U({},t);return Object.keys(e).forEach((function(t){var r;n=U({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return l.Children.forEach(e,(function(e){if(e&&e.props){var o=e.props,a=o.children,i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[R[n]||n]=e[n],t}),t)}(q(o,["children"]));switch(n.warnOnInvalidChildren(e,a),e.type){case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:i,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:a})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=q(e,["children"]),r=U({},n);return t&&(r=this.mapChildrenToProps(t,r)),l.createElement(o,r)},H(t,null,[{key:"canUseDOM",set:function(e){o.canUseDOM=e}}]),t}(l.Component),a.propTypes={base:c().object,bodyAttributes:c().object,children:c().oneOfType([c().arrayOf(c().node),c().node]),defaultTitle:c().string,defer:c().bool,encodeSpecialCharacters:c().bool,htmlAttributes:c().object,link:c().arrayOf(c().object),meta:c().arrayOf(c().object),noscript:c().arrayOf(c().object),onChangeClientState:c().func,script:c().arrayOf(c().object),style:c().arrayOf(c().object),title:c().string,titleAttributes:c().object,titleTemplate:c().string},a.defaultProps={defer:!0,encodeSpecialCharacters:!0},a.peek=o.peek,a.rewind=function(){var e=o.rewind();return e||(e=fe({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},i);de.renderStatic=de.rewind;var pe=de,he=n(1883);const ye=()=>{const{site:e}=(0,he.useStaticQuery)("4175673927");return e.siteMetadata};var ke=n.p+"static/logo-ad274be9cd1a4b8c9a225132ef6a70cf.png";var be=e=>{let{page:t,post:n}=e;const{author:r,siteDescription:o,siteUrl:a,twitterUsername:i}=ye(),s=n?n.frontmatter.title:t,c=n?n.frontmatter.subtitle:o,u=`${s} | ${r}`,f=n&&n.frontmatter.image?`${a}${n.frontmatter.image}`:ke,m=n&&n.fields.slug?`${a}${n.fields.slug}`:a;return l.createElement(pe,null,l.createElement("html",{lang:"en"}),l.createElement("title",null,u),l.createElement("meta",{name:"description",content:c}),l.createElement("meta",{property:"og:url",content:m}),l.createElement("meta",{property:"og:site_name",content:a}),l.createElement("meta",{property:"og:description",content:c}),l.createElement("meta",{property:"og:title",content:u}),l.createElement("meta",{property:"og:image",content:f}),l.createElement("meta",{name:"twitter:title",content:u}),l.createElement("meta",{name:"twitter:creator",content:i}),l.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),l.createElement("meta",{name:"twitter:description",content:c}),l.createElement("meta",{name:"twitter:image",content:f}),l.createElement("script",{async:!0,src:"https://www.googletagmanager.com/gtag/js?id=UA-134616286-1"}),l.createElement("script",null,"\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', 'UA-134616286-1');\n "))},ge=n(2670),Ee=n.n(ge),ve="style-module--navBarItem--499d5",Te=n(982),we=n(9417);var Oe=e=>{let{theme:t,toggleTheme:n}=e;return l.createElement("button",{onClick:e=>n("light"===t?"dark":"light"),"aria-label":"Switch between light and dark mode."},"light"===t&&l.createElement(Te.G,{icon:we.DBF,size:"1x"}),"dark"===t&&l.createElement(Te.G,{icon:we.enB,size:"1x"}))};var Ce=e=>{let{navButtonClickHandler:t,show:n,theme:r,toggleTheme:o}=e;const a=n?"style-module--header--9b211":"style-module--headerClosed--73985";return l.createElement("header",{className:a},l.createElement("nav",{className:"style-module--navBar--f838a"},l.createElement(he.Link,{to:"/"},l.createElement(Ee(),{"aria-label":"home",className:"style-module--logo--196b3"})),l.createElement("button",{"aria-label":"navigation button",className:"style-module--navButton--35b21",onClick:t},l.createElement(Te.G,{className:"style-module--navButtonIcon--4ab71",icon:we.xiG,size:"2x"})),l.createElement("div",{className:"style-module--navBarMenu--4d86d"},l.createElement(he.Link,{to:"/",className:ve},"Home"),l.createElement(he.Link,{to:"/about",className:ve},"About"),l.createElement(he.Link,{to:"/photos",className:ve},"Photos")),l.createElement("div",{className:"style-module--sideBarColourThemeToggler--21700"},l.createElement(Oe,{theme:r,toggleTheme:o}))))},Ne=n(3024),Ae="style-module--socialIcon--a0692",Se="style-module--socialIconLink--f277d";var Le=()=>{const{twitterUsername:e}=ye();return l.createElement("footer",{className:"style-module--footer--fd23b"},l.createElement("div",{className:"style-module--socialIcons--5cc49"},l.createElement("a",{"aria-label":"GitHub",className:Se,href:"https://github.com/george-pearson"},l.createElement(Te.G,{icon:Ne.Nz9,className:Ae,size:"3x"})),l.createElement("a",{"aria-label":"Linkedin",className:Se,href:"https://linkedin.com/in/george-pearson-27244a30"},l.createElement(Te.G,{icon:Ne.hwn,className:Ae,size:"3x"})),l.createElement("a",{"aria-label":"Twitter",className:Se,href:`https://twitter.com/${e}`},l.createElement(Te.G,{icon:Ne.NCc,className:Ae,size:"3x"})),l.createElement("a",{"aria-label":"Email",className:Se,href:"mailto:george-pearson.business@outlook.com"},l.createElement(Te.G,{icon:we.FU$,className:Ae,size:"3x"}))),l.createElement("p",null,"© George Pearson ",(new Date).getFullYear()))},je="style-module--sidebarNavItem--43b27";var ze=e=>{let{show:t,theme:n,toggleTheme:r}=e;return l.createElement("div",{className:t?"style-module--sidebarOpen--b3f30":"style-module--sidebar--a86b4"},l.createElement(Ee(),{className:"style-module--logo--c90ae"}),l.createElement("nav",{className:"style-module--sidebarNav--b2fa6"},l.createElement(he.Link,{to:"/",className:je},"Home"),l.createElement(he.Link,{to:"/about",className:je},"About"),l.createElement(he.Link,{to:"/photos",className:je},"Photos")),l.createElement("div",{className:"style-module--sideBarColourThemeToggler--db3c3"},l.createElement(Oe,{theme:n,toggleTheme:r})))};var Me=e=>{let{backdropClickHandler:t}=e;return l.createElement("div",{className:"style-module--backdrop--2bd13",onClick:t,onKeyDown:t,role:"menuitem","aria-label":"menu item",tabIndex:"0"})},xe=n(4578);let Pe=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o{this.setState({theme:window.__theme})}},n.toggleTheme=function(e){window.__setPreferredTheme(e)},n.render=function(){return l.createElement(this.props.children,{theme:this.state.theme,toggleTheme:this.toggleTheme})},t}(l.Component);var We=Pe;var Ie=e=>{let{page:t,post:n,children:r}=e;const{0:o,1:a}=(0,l.useState)(!1),{0:i,1:s}=(0,l.useState)(!0),{0:c,1:u}=(0,l.useState)(0);(0,l.useLayoutEffect)((()=>(document.addEventListener("scroll",f),()=>{document.removeEventListener("scroll",f)})));const f=()=>{const e="undefined"!=typeof window?window.pageYOffset:0;s(c>=e),u(e)},m=()=>{a((e=>!e.sidebarOpen))};return l.createElement("div",null,l.createElement(be,{page:t,post:n}),l.createElement(We,null,(e=>{let{theme:t,toggleTheme:n}=e;return l.createElement("div",null,l.createElement(Ce,{show:i,navButtonClickHandler:m,theme:t,toggleTheme:n}),l.createElement(ze,{show:o,theme:t,toggleTheme:n}))})),o&&l.createElement(Me,{backdropClickHandler:()=>{a(!1)}}),l.createElement("div",{className:"style-module--fixedFooterWrapper--51bdf"},l.createElement("main",null,r),l.createElement(Le,null)))}},9590:function(e){var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.next()).done;)if(!a(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!a(e[c[s]],i[c[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},3524:function(e,t,n){"use strict";var r,o=n(7294),a=(r=o)&&"object"==typeof r&&"default"in r?r.default:r;function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var s,c=[];function u(){s=e(c.map((function(e){return e.props}))),f.canUseDOM?t(s):n&&(s=n(s))}var f=function(e){var t,n;function o(){return e.apply(this,arguments)||this}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o.peek=function(){return s},o.rewind=function(){if(o.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=s;return s=void 0,c=[],e};var i=o.prototype;return i.UNSAFE_componentWillMount=function(){c.push(this),u()},i.componentDidUpdate=function(){u()},i.componentWillUnmount=function(){var e=c.indexOf(this);c.splice(e,1),u()},i.render=function(){return a.createElement(r,this.props)},o}(o.PureComponent);return i(f,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),i(f,"canUseDOM",l),f}}},2670:function(e,t,n){var r=n(7294);function o(e){return r.createElement("svg",e,[r.createElement("path",{className:"shade",style:{fill:"#312929",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"M 49.002,255.376 C 44.861363,240.56032 42.726096,221.26752 39.96492,204.64867 33.569815,156.11234 34.53359,101.68969 66.273855,61.458738 77.379429,46.163821 94.193466,36.181281 112.35388,31.794302 c 4.10201,-0.682841 16.44015,-9.196305 10.37051,-0.208306 -4.33798,7.099864 -13.6935,34.169106 1.47761,20.591004 29.16454,-16.991298 61.45366,-29.523756 94.86517,-34.580937 13.57196,-0.812716 27.01177,1.747359 40.49383,2.900937 -8.25404,7.940706 -19.61107,13.359695 -25.92,22.72 38.0844,2.037556 72.17,23.177287 99.06212,48.939375 -6.85106,2.375814 -27.50231,-0.526068 -39.33625,3.16375 -17.32356,1.423837 -32.60892,10.383805 -46.28687,20.536875 -43.35668,30.73622 -94.29898,52.04884 -147.464,56.85 -6.661519,6.47001 -0.112366,27.96215 -5.256875,39.6668 -4.24141,22.26047 -23.144186,39.27185 -45.038125,43.6422 z",key:0}),r.createElement("path",{className:"shade",style:{fill:"#efcebd",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"M 255.4,380.175 C 205.61418,378.39211 161.70408,352.22357 118.80975,329.68125 106.15381,324.13756 94.065321,344.16903 78.531547,340.45906 52.015012,340.03571 29.776678,316.70668 23.296371,292.14375 17.856575,273.21983 36.628843,260.35512 52.521,256.016 c 21.818632,-5.97249 36.853669,-25.11932 43.233984,-47.10102 3.292985,-15.19856 -9.6178,-40.41231 15.647806,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98432 40.22076,-18.98366 5.07695,16.63334 21.0005,36.64996 11.3002,53.19344 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.227747,-7.20227 -18.740834,13.69844 -23.48,-0.52 -17.171508,-22.97847 16.973403,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.737956,11.14121 17.872603,8.60518 26.4,2.6 z",key:1}),r.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 323.16063,265.24116 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z",key:2}),r.createElement("path",{className:"shade",style:{fill:"#00adef",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4.02821445"},d:"m 175.75229,315.856 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z",key:3}),r.createElement("path",{className:"shade",style:{fill:"#4c7287",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 353.32,247.696 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z",key:4}),r.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 200.041,314.896 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z",key:5}),r.createElement("path",{className:"shade",style:{fill:"#8ccef7",fillOpacity:"1",fillRule:"nonzero",stroke:"none",strokeWidth:"4"},d:"m 324.84,259.536 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z",key:6}),r.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 202.92,231.056 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z",key:7}),r.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.31999999",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 181.481,215.696 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z",key:8}),r.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 332.2,183.697 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z",key:9}),r.createElement("path",{className:"shade",style:{fill:"#ffffff",fillOpacity:"1",fillRule:"nonzero",stroke:"#ffffff",strokeWidth:"0.63999999",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 308.52,168.977 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z",key:10}),r.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.82034659",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 67.870499,249.37514 c -15.179419,4.7639 -32.215532,11.09003 -39.951615,26.70032 -6.614189,12.96011 -5.505489,28.24165 6.20779,37.61233 10.306646,13.62315 25.578766,25.66181 43.12447,26.32297 13.776441,-0.0162 29.368506,-5.24351 39.756566,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 178.23572,355.14087 127.53634,329.43046 91.6221,287.03639 82.17705,275.76672 75.062512,262.21784 67.870499,249.37514 Z",key:11}),r.createElement("path",{className:"shade",style:{fill:"#171717",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 66.602,247.696 C 52.86568,196.53976 39.49361,141.80794 55.339838,89.465764 56.328552,83.465126 66.873595,59.107602 59.14075,75.457859 40.733199,108.14043 32.74117,146.07316 36.302,183.42158 c 1.652806,24.26835 6.494341,50.30059 12.834214,71.3799 6.565374,-1.56175 11.1465,-3.16529 17.465786,-7.10548 z",key:12}),r.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"4.30889797",strokeLinecap:"butt",strokeLinejoin:"round",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 116.17545,59.061363 c 0.16868,5.947406 0.39752,13.664686 2.0767,15.773132 2.98389,-1.759869 38.22732,-34.357568 60.96102,-46.693558 -15.50568,5.033141 -32.04762,12.518891 -45.86676,20.958792 z",key:13}),r.createElement("path",{className:"shade",style:{fill:"#181818",fillOpacity:"1",fillRule:"nonzero",stroke:"#181818",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"M 225.64,61.137 C 264.73517,55.010913 298.44667,77.960338 332.70312,92.156375 306.87464,64.802122 271.45022,42.921721 232.36,45.457 c -4.42206,3.958809 -6.50128,9.86066 -6.72,15.68 z",key:14}),r.createElement("path",{className:"shade",style:{fill:"#9a8179",fillOpacity:"1",fillRule:"nonzero",stroke:"#9a8179",strokeWidth:"3.83999991",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:"4",strokeDasharray:"none",strokeOpacity:"1"},d:"m 96.361,173.137 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.8671 -5.59041,-17.25403 -13.61969,-4.97773 -43.38529,35.78347 -99.4078,53.74048 -155.01931,57.77773 z",key:15}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 193.64,192.337 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 C 127.83871,309.95607 133.57164,213.79055 193.64,192.337 Z",key:16}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 206.59405,315.67182 C 108.47789,334.53759 101.64431,190.69706 193.64,192.337",key:17}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 320.04,153.616 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 C 268.57093,235.80103 272.85535,169.95439 320.04,153.616 Z",key:18}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 304.68,269.136 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8",key:19}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 305.96,269.776 C 253.85079,248.76171 246.28365,199.93508 277.48,161.616",key:20}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 305.32,269.456 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227",key:21}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"M 49.32,256.336 C 15.949108,166.75216 27.447525,53.315743 127.72,25.618",key:22}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"4.29128981"},d:"M 127.59993,25.798839 C 119.87536,36.509836 117.01441,42.73521 116.201,56.978 c -0.92731,6.644941 -0.41032,14.674895 3.25217,19.609037",key:23}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"M 116.201,56.978 C 159.65372,29.525504 212.04875,13.654188 263.719,19.537",key:24}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 263.719,19.537 c -11.97359,5.249406 -21.96258,14.210197 -30.08,24.32",key:25}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 233.64,43.858 c -4.96723,4.014221 -9.16337,13.474567 -8.125,19.2425",key:26}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 233.639,43.857 c 38.57084,1.082347 72.86725,22.973268 100.16,48.64",key:27}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 333.799,92.497 c -25.28601,-0.93692 -51.80898,3.741983 -74.6713,14.88614",key:28}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 96.361,173.137 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.24",key:29}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"butt"},d:"M 49.32,256.336 C 92.76477,239.79068 98.167094,208.34988 95.873864,171.27984",key:30}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 277.48,161.616 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.079",key:31}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 243.561,345.936 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84",key:32}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square",strokeMiterlimit:"4",strokeDasharray:"none"},d:"m 49.32,256.336 c -80.116072,39.6821 32.644578,116.1168 67.07408,71.90242",key:33}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991",strokeLinecap:"square"},d:"m 116.85408,327.72342 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775",key:34}),r.createElement("path",{className:"line",style:{fill:"none",stroke:"#000000",strokeWidth:"3.83999991"},d:"m 85.666,289.9 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96",key:35})])}o.defaultProps={height:"400",width:"400",viewBox:"0 0 400 400"},e.exports=o,o.default=o}}]); -//# sourceMappingURL=da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js.map \ No newline at end of file diff --git a/da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js.map b/da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js.map deleted file mode 100644 index ff78971..0000000 --- a/da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","mappings":"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","sources":["webpack://blog/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://blog/./node_modules/react-helmet/es/Helmet.js","webpack://blog/./src/hooks/useSiteMetadata.js","webpack://blog/./static/logo.png","webpack://blog/./src/components/head/head.js","webpack://blog/./src/components/header/style.module.css","webpack://blog/./src/components/colourThemeToggler/colourThemeToggler.js","webpack://blog/./src/components/header/header.js","webpack://blog/./src/components/footer/style.module.css","webpack://blog/./src/components/footer/footer.js","webpack://blog/./src/components/sidebar/style.module.css","webpack://blog/./src/components/sidebar/sidebar.js","webpack://blog/./src/components/backdrop/backdrop.js","webpack://blog/./src/components/backdrop/style.module.css","webpack://blog/./src/components/themetoggler/themetoggler.js","webpack://blog/./src/components/layout/layout.js","webpack://blog/./src/components/layout/style.module.css","webpack://blog/./node_modules/react-fast-compare/index.js","webpack://blog/./node_modules/react-side-effect/lib/index.js","webpack://blog/./static/logo.inline.svg"],"sourcesContent":["\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","import { useStaticQuery, graphql } from \"gatsby\";\r\n\r\nexport const useSiteMetadata = () => {\r\n const { site } = useStaticQuery(\r\n graphql`\r\n query SiteMetaData {\r\n site {\r\n siteMetadata {\r\n author\r\n siteDescription\r\n siteUrl\r\n twitterUsername\r\n }\r\n }\r\n }\r\n `\r\n );\r\n return site.siteMetadata;\r\n};\r\n","export default __webpack_public_path__ + \"static/logo-ad274be9cd1a4b8c9a225132ef6a70cf.png\";","import React from \"react\";\r\nimport Helmet from \"react-helmet\";\r\nimport { useSiteMetadata } from \"../../hooks/useSiteMetadata\";\r\nimport logoImage from \"../../../static/logo.png\";\r\n\r\nconst Head = ({ page, post }) => {\r\n const {\r\n author,\r\n siteDescription,\r\n siteUrl,\r\n twitterUsername,\r\n } = useSiteMetadata();\r\n const pageTitle = post ? post.frontmatter.title : page;\r\n const description = post ? post.frontmatter.subtitle : siteDescription;\r\n const title = `${pageTitle} | ${author}`;\r\n const pageImage =\r\n post && post.frontmatter.image ? `${siteUrl}${post.frontmatter.image}` : logoImage;\r\n const url = \r\n post && post.fields.slug ? `${siteUrl}${post.fields.slug}` : siteUrl;\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {process.env.NODE_ENV === \"production\" && (\r\n \r\n )}\r\n {process.env.NODE_ENV === \"production\" && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Head;","// extracted by mini-css-extract-plugin\nexport var header = \"style-module--header--9b211\";\nexport var headerClosed = \"style-module--headerClosed--73985\";\nexport var logo = \"style-module--logo--196b3\";\nexport var navBar = \"style-module--navBar--f838a\";\nexport var navBarItem = \"style-module--navBarItem--499d5\";\nexport var navBarMenu = \"style-module--navBarMenu--4d86d\";\nexport var navButton = \"style-module--navButton--35b21\";\nexport var navButtonIcon = \"style-module--navButtonIcon--4ab71\";\nexport var sideBarColourThemeToggler = \"style-module--sideBarColourThemeToggler--21700\";","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSun, faMoon } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst ColourThemeToggler = ({theme, toggleTheme}) => {\r\n return (\r\n toggleTheme(theme === 'light' ? 'dark' : 'light')}\r\n aria-label=\"Switch between light and dark mode.\">\r\n { theme === 'light' && }\r\n { theme === 'dark' && }\r\n \r\n );\r\n};\r\n\r\nexport default ColourThemeToggler;","import React from \"react\";\r\nimport Logo from \"../../../static/logo.inline.svg\";\r\nimport * as style from \"./style.module.css\";\r\nimport { Link } from \"gatsby\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faBars } from \"@fortawesome/free-solid-svg-icons\";\r\nimport ColourThemeToggler from \"../colourThemeToggler/colourThemeToggler\";\r\n\r\nconst Header = ({ navButtonClickHandler, show, theme, toggleTheme}) => {\r\n const headerClass = show ? style.header : style.headerClosed;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Header;","// extracted by mini-css-extract-plugin\nexport var footer = \"style-module--footer--fd23b\";\nexport var socialIcon = \"style-module--socialIcon--a0692\";\nexport var socialIconLink = \"style-module--socialIconLink--f277d\";\nexport var socialIcons = \"style-module--socialIcons--5cc49\";","import React from \"react\";\r\nimport { useSiteMetadata } from \"../../hooks/useSiteMetadata\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faEnvelope } from \"@fortawesome/free-solid-svg-icons\";\r\nimport {\r\n faXTwitter,\r\n faLinkedinIn,\r\n faGithubAlt,\r\n} from \"@fortawesome/free-brands-svg-icons\";\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst Footer = () => {\r\n const { twitterUsername } = useSiteMetadata();\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

© George Pearson {new Date().getFullYear()}

\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;","// extracted by mini-css-extract-plugin\nexport var logo = \"style-module--logo--c90ae\";\nexport var sideBarColourThemeToggler = \"style-module--sideBarColourThemeToggler--db3c3\";\nexport var sidebar = \"style-module--sidebar--a86b4\";\nexport var sidebarNav = \"style-module--sidebarNav--b2fa6\";\nexport var sidebarNavItem = \"style-module--sidebarNavItem--43b27\";\nexport var sidebarOpen = \"style-module--sidebarOpen--b3f30\";","import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\nimport Logo from \"../../../static/logo.inline.svg\";\r\nimport { Link } from \"gatsby\";\r\nimport ColourThemeToggler from \"../colourThemeToggler/colourThemeToggler\";\r\n\r\nconst SideBar = ({ show, theme, toggleTheme}) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SideBar;","import React from \"react\";\r\nimport * as style from \"./style.module.css\";\r\n\r\n const Backdrop = ({ backdropClickHandler }) => {\r\n return ;\r\n};\r\nexport default Backdrop;","// extracted by mini-css-extract-plugin\nexport var backdrop = \"style-module--backdrop--2bd13\";","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nclass ThemeToggler extends React.Component {\r\n state = {\r\n theme: typeof window !== 'undefined' ? window.__theme : null,\r\n }\r\n\r\n componentDidMount() {\r\n window.__onThemeChange = () => {\r\n this.setState({ theme: window.__theme })\r\n }\r\n }\r\n\r\n toggleTheme(theme) {\r\n window.__setPreferredTheme(theme)\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nThemeToggler.propTypes = {\r\n children: PropTypes.func.isRequired,\r\n}\r\n\r\nexport default ThemeToggler","import React, { useState, useLayoutEffect } from \"react\";\r\nimport Head from \"../head/head\";\r\nimport Header from \"../header/header\";\r\nimport Footer from \"../footer/footer\";\r\nimport Sidebar from \"../sidebar/sidebar\";\r\nimport Backdrop from \"../backdrop/backdrop\";\r\nimport ThemeToggler from \"../themetoggler/themetoggler\"\r\nimport * as style from \"./style.module.css\";\r\n\r\nconst Layout = ({ page, post, children }) => {\r\n const [sidebarOpen, setSidebarOpen] = useState(false);\r\n const [showHeader, setShowHeader] = useState(true);\r\n const [prevScrollPos, setPrevScrollPos] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n document.addEventListener(\"scroll\", handleScroll);\r\n return () => {\r\n document.removeEventListener(\"scroll\", handleScroll);\r\n };\r\n });\r\n\r\n const handleScroll = () => {\r\n const currentScrollPos =\r\n typeof window !== \"undefined\" ? window.pageYOffset : 0;\r\n setShowHeader(prevScrollPos >= currentScrollPos);\r\n setPrevScrollPos(currentScrollPos);\r\n };\r\n\r\n const navButtonClickHandler = () => {\r\n setSidebarOpen(prevSidebarOpen => !prevSidebarOpen.sidebarOpen);\r\n };\r\n\r\n const backdropClickHandler = () => {\r\n setSidebarOpen(false);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {({ theme, toggleTheme }) => (\r\n
\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {sidebarOpen && }\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Layout;","// extracted by mini-css-extract-plugin\nexport var fixedFooterWrapper = \"style-module--fixedFooterWrapper--51bdf\";","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","var React = require('react');\n\nfunction LogoInline (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#312929\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"M 49.002,255.376 C 44.861363,240.56032 42.726096,221.26752 39.96492,204.64867 33.569815,156.11234 34.53359,101.68969 66.273855,61.458738 77.379429,46.163821 94.193466,36.181281 112.35388,31.794302 c 4.10201,-0.682841 16.44015,-9.196305 10.37051,-0.208306 -4.33798,7.099864 -13.6935,34.169106 1.47761,20.591004 29.16454,-16.991298 61.45366,-29.523756 94.86517,-34.580937 13.57196,-0.812716 27.01177,1.747359 40.49383,2.900937 -8.25404,7.940706 -19.61107,13.359695 -25.92,22.72 38.0844,2.037556 72.17,23.177287 99.06212,48.939375 -6.85106,2.375814 -27.50231,-0.526068 -39.33625,3.16375 -17.32356,1.423837 -32.60892,10.383805 -46.28687,20.536875 -43.35668,30.73622 -94.29898,52.04884 -147.464,56.85 -6.661519,6.47001 -0.112366,27.96215 -5.256875,39.6668 -4.24141,22.26047 -23.144186,39.27185 -45.038125,43.6422 z\",\"key\":0}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#efcebd\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"M 255.4,380.175 C 205.61418,378.39211 161.70408,352.22357 118.80975,329.68125 106.15381,324.13756 94.065321,344.16903 78.531547,340.45906 52.015012,340.03571 29.776678,316.70668 23.296371,292.14375 17.856575,273.21983 36.628843,260.35512 52.521,256.016 c 21.818632,-5.97249 36.853669,-25.11932 43.233984,-47.10102 3.292985,-15.19856 -9.6178,-40.41231 15.647806,-36.86098 37.54324,-5.74581 77.72335,-18.42272 109.96687,-38.78334 13.13589,-3.37221 30.04659,-28.98432 40.22076,-18.98366 5.07695,16.63334 21.0005,36.64996 11.3002,53.19344 -13.7542,18.3016 -18.98592,44.10702 -10.66312,65.79906 8.62032,17.49344 24.84654,28.75866 42.1325,36.8165 -8.00524,36.00398 -16.64594,72.30451 -31.80625,106.05625 -2.56307,6.59635 -11.83844,2.78543 -17.15375,4.02275 z m -1.28,-40 c 6.87656,-3.80189 19.38046,-19.27694 16.285,-21.26 -1.34943,12.9642 -26.34536,21.39606 -24.7,27.56 3.2373,-1.42346 5.49578,-4.37708 8.415,-6.3 z m -24.64,-34.56 c 30.43458,-24.38664 31.47486,-77.28873 -0.53375,-100.824 -23.77385,-21.23615 -60.60451,-14.53757 -83.62625,4.185 -19.83319,20.23263 -23.89059,54.38306 -10.02119,78.955 12.35248,25.0954 43.76697,33.37911 69.62969,28.77563 9.34801,-0.57952 17.61636,-5.01531 24.5515,-11.09163 z m -148.479,4.48 c 2.227747,-7.20227 -18.740834,13.69844 -23.48,-0.52 -17.171508,-22.97847 16.973403,-20.69895 28.145,-19.675 -13.86326,-5.56872 -45.87032,-4.51846 -31.065,17.595 5.737956,11.14121 17.872603,8.60518 26.4,2.6 z\",\"key\":1}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 323.16063,265.24116 c -16.26339,6.66415 -31.18915,-0.57876 -43.69508,-11.66594 -25.27378,-18.87186 -29.51628,-60.80327 -8.11805,-83.95203 7.17376,-11.09975 26.43123,-12.86892 40.6925,-15.04719 -11.60322,9.1473 -24.40134,19.32227 -28.53062,34.53356 -8.90241,26.51634 4.30469,61.16623 33.04554,68.38332 5.45359,1.68671 21.22404,3.84865 6.60571,7.74828 z\",\"key\":2}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#00adef\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4.02821445\"},\"d\":\"m 175.75229,315.856 c -30.90211,-5.78363 -53.97078,-38.29544 -46.76213,-68.88313 1.85627,-21.24734 13.88737,-45.09311 37.53365,-48.24807 6.50869,-2.6057 12.82339,-3.33499 19.28891,-4.7888 -16.06554,9.98879 -28.8584,26.44469 -35.63715,43.90617 -9.99788,29.28995 7.75775,63.27929 36.80407,74.01071 15.32439,6.47177 -7.9793,4.43827 -11.22735,4.00312 z\",\"key\":3}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#4c7287\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 353.32,247.696 c 20.69876,-24.01073 16.01899,-62.20314 -5.44,-84.16 -9.91216,-1.64986 -20.36484,-10.77695 -1.6,-7.04 23.74442,12.99025 41.81642,44.02961 28.54703,70.40148 -5.15136,12.63525 -13.11149,25.75207 -27.16548,29.23621 -5.38952,2.95993 1.36986,-4.71862 5.65845,-8.43769 z\",\"key\":4}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 200.041,314.896 c -42.46211,-3.82902 -67.18093,-59.07024 -43.125,-93.84 11.64293,-18.21879 34.76459,-34.32047 56.76883,-23.88461 18.83143,6.89707 33.23115,23.57078 36.44367,43.53117 8.21601,30.4185 -10.22973,69.47686 -43.0475,74.51844 l -3.43,6.3e-4 z\",\"key\":5}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#8ccef7\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"none\",\"strokeWidth\":\"4\"},\"d\":\"m 324.84,259.536 c -28.12357,-4.85494 -48.64871,-35.29858 -41.37813,-63.19023 4.40851,-19.56774 20.60949,-41.5661 42.37313,-41.09977 26.71271,4.89712 44.72392,32.1904 41.01777,58.62276 -2.05931,18.39389 -11.45918,40.06186 -30.60964,45.58599 -3.77715,0.49952 -7.61827,0.49618 -11.40313,0.0813 z\",\"key\":6}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 202.92,231.056 c -4.05314,24.23374 28.83188,-0.96837 2.155,-1.325 z\",\"key\":7}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.31999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 181.481,215.696 c -13.62336,23.23239 34.20992,17.4479 14.93,-1.675 -4.7198,-3.42966 -10.9359,-2.38684 -14.93,1.675 z\",\"key\":8}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 332.2,183.697 c -18.08538,6.98785 7.09016,26.07096 8,6.72 -1.00515,-3.20344 -4.2826,-7.29425 -8,-6.72 z\",\"key\":9}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#ffffff\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#ffffff\",\"strokeWidth\":\"0.63999999\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 308.52,168.977 c -23.16535,13.48053 16.22355,36.19796 16.84,10.08 -0.55392,-8.7522 -8.80383,-13.74638 -16.84,-10.08 z\",\"key\":10}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.82034659\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 67.870499,249.37514 c -15.179419,4.7639 -32.215532,11.09003 -39.951615,26.70032 -6.614189,12.96011 -5.505489,28.24165 6.20779,37.61233 10.306646,13.62315 25.578766,25.66181 43.12447,26.32297 13.776441,-0.0162 29.368506,-5.24351 39.756566,-12.28753 40.13167,21.27959 77.29129,46.85207 122.53678,51.60675 8.85324,0.89592 19.50226,1.41606 28.36445,0.59542 -12.89001,-1.72417 -24.30474,-4.89911 -37.78469,-8.77919 C 178.23572,355.14087 127.53634,329.43046 91.6221,287.03639 82.17705,275.76672 75.062512,262.21784 67.870499,249.37514 Z\",\"key\":11}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#171717\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 66.602,247.696 C 52.86568,196.53976 39.49361,141.80794 55.339838,89.465764 56.328552,83.465126 66.873595,59.107602 59.14075,75.457859 40.733199,108.14043 32.74117,146.07316 36.302,183.42158 c 1.652806,24.26835 6.494341,50.30059 12.834214,71.3799 6.565374,-1.56175 11.1465,-3.16529 17.465786,-7.10548 z\",\"key\":12}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"4.30889797\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 116.17545,59.061363 c 0.16868,5.947406 0.39752,13.664686 2.0767,15.773132 2.98389,-1.759869 38.22732,-34.357568 60.96102,-46.693558 -15.50568,5.033141 -32.04762,12.518891 -45.86676,20.958792 z\",\"key\":13}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#181818\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#181818\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"M 225.64,61.137 C 264.73517,55.010913 298.44667,77.960338 332.70312,92.156375 306.87464,64.802122 271.45022,42.921721 232.36,45.457 c -4.42206,3.958809 -6.50128,9.86066 -6.72,15.68 z\",\"key\":14}),React.createElement(\"path\",{\"className\":\"shade\",\"style\":{\"fill\":\"#9a8179\",\"fillOpacity\":\"1\",\"fillRule\":\"nonzero\",\"stroke\":\"#9a8179\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\",\"strokeLinejoin\":\"miter\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\",\"strokeOpacity\":\"1\"},\"d\":\"m 96.361,173.137 c 60.27617,3.32632 120.76577,-16.23383 168.639,-52.8 -3.07308,-8.8671 -5.59041,-17.25403 -13.61969,-4.97773 -43.38529,35.78347 -99.4078,53.74048 -155.01931,57.77773 z\",\"key\":15}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 193.64,192.337 c 79.20475,7.78078 72.67773,114.43784 12.95405,123.33482 C 127.83871,309.95607 133.57164,213.79055 193.64,192.337 Z\",\"key\":16}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 206.59405,315.67182 C 108.47789,334.53759 101.64431,190.69706 193.64,192.337\",\"key\":17}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 320.04,153.616 c 78.17725,11.74101 42.79063,123.12265 -3.40512,104.49962 C 268.57093,235.80103 272.85535,169.95439 320.04,153.616 Z\",\"key\":18}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 304.68,269.136 c 113.71622,-13.62889 73.00191,-125.21531 15.36,-115.52 -19.64316,1.13381 -31.95772,4.91189 -42.56,8\",\"key\":19}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 305.96,269.776 C 253.85079,248.76171 246.28365,199.93508 277.48,161.616\",\"key\":20}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 305.32,269.456 c -6.85062,38.10239 -20.82219,75.95738 -36.29421,111.37227\",\"key\":21}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"M 49.32,256.336 C 15.949108,166.75216 27.447525,53.315743 127.72,25.618\",\"key\":22}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"4.29128981\"},\"d\":\"M 127.59993,25.798839 C 119.87536,36.509836 117.01441,42.73521 116.201,56.978 c -0.92731,6.644941 -0.41032,14.674895 3.25217,19.609037\",\"key\":23}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"M 116.201,56.978 C 159.65372,29.525504 212.04875,13.654188 263.719,19.537\",\"key\":24}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 263.719,19.537 c -11.97359,5.249406 -21.96258,14.210197 -30.08,24.32\",\"key\":25}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 233.64,43.858 c -4.96723,4.014221 -9.16337,13.474567 -8.125,19.2425\",\"key\":26}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 233.639,43.857 c 38.57084,1.082347 72.86725,22.973268 100.16,48.64\",\"key\":27}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 333.799,92.497 c -25.28601,-0.93692 -51.80898,3.741983 -74.6713,14.88614\",\"key\":28}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 96.361,173.137 c 59.65671,-4.58454 116.70526,-29.49885 163.52,-66.24\",\"key\":29}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"butt\"},\"d\":\"M 49.32,256.336 C 92.76477,239.79068 98.167094,208.34988 95.873864,171.27984\",\"key\":30}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 277.48,161.616 c -3.31232,-18.70495 -9.16037,-37.22261 -17.92,-54.079\",\"key\":31}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 243.561,345.936 c 11.44571,-6.73588 22.5173,-15.47232 28.159,-27.84\",\"key\":32}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\",\"strokeMiterlimit\":\"4\",\"strokeDasharray\":\"none\"},\"d\":\"m 49.32,256.336 c -80.116072,39.6821 32.644578,116.1168 67.07408,71.90242\",\"key\":33}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\",\"strokeLinecap\":\"square\"},\"d\":\"m 116.85408,327.72342 c 45.59922,26.57551 98.78037,60.77733 151.68557,52.39775\",\"key\":34}),React.createElement(\"path\",{\"className\":\"line\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000000\",\"strokeWidth\":\"3.83999991\"},\"d\":\"m 85.666,289.9 c -53.06448,-13.54691 -29.23712,45.62389 -3.84,16.96\",\"key\":35})]);\n}\n\nLogoInline.defaultProps = {\"height\":\"400\",\"width\":\"400\",\"viewBox\":\"0 0 400 400\"};\n\nmodule.exports = LogoInline;\n\nLogoInline.default = LogoInline;\n"],"names":["module","exports","Object","assign","clock","Component","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","keys","map","name","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","reduce","obj","key","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","Symbol","iterator","constructor","prototype","createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_extends","arguments","source","hasOwnProperty","call","objectWithoutProperties","indexOf","encodeSpecialCharacters","str","undefined","String","replace","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","Array","isArray","join","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","toLowerCase","concat","getTagsFromPropsList","tagName","approvedSeenTags","warn","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","value","forEach","push","tagUnion","property","rafPolyfill","Date","now","callback","currentTime","setTimeout","cafPolyfill","id","clearTimeout","requestAnimationFrame","window","bind","webkitRequestAnimationFrame","mozRequestAnimationFrame","g","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","console","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","title","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","document","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","split","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","splice","_i","removeAttribute","type","tags","headElement","head","querySelector","tagNodes","querySelectorAll","slice","indexToDelete","newElement","createElement","innerHTML","styleSheet","cssText","appendChild","createTextNode","some","existingTag","index","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","toString","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","string","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref","_ref$title","base","link","meta","noscript","script","style","HelmetSideEffects","defer","HelmetExport","_React$Component","HelmetWrapper","instance","TypeError","classCallCheck","this","self","ReferenceError","possibleConstructorReturn","apply","subClass","superClass","create","setPrototypeOf","__proto__","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","Error","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","children","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","render","_props","set","canUseDOM","propTypes","defaultTitle","titleTemplate","defaultProps","peek","rewind","mappedState","renderStatic","useSiteMetadata","site","useStaticQuery","siteMetadata","page","post","author","siteDescription","siteUrl","twitterUsername","pageTitle","frontmatter","description","subtitle","pageImage","image","logoImage","url","fields","slug","React","Helmet","lang","async","src","navBarItem","theme","toggleTheme","onClick","e","FontAwesomeIcon","icon","faMoon","size","faSun","navButtonClickHandler","show","headerClass","className","Link","to","Logo","faBars","ColourThemeToggler","socialIcon","socialIconLink","Footer","href","faGithubAlt","faLinkedinIn","faXTwitter","faEnvelope","getFullYear","sidebarNavItem","backdropClickHandler","onKeyDown","role","tabIndex","ThemeToggler","_this","_len","args","_key","state","__theme","_inheritsLoose","_proto","componentDidMount","__onThemeChange","setState","__setPreferredTheme","sidebarOpen","setSidebarOpen","useState","showHeader","setShowHeader","prevScrollPos","setPrevScrollPos","useLayoutEffect","addEventListener","handleScroll","removeEventListener","currentScrollPos","pageYOffset","prevSidebarOpen","Head","Header","Sidebar","Backdrop","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","it","entries","next","done","has","get","RegExp","flags","valueOf","$$typeof","error","message","match","ex","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","PureComponent","displayName","getDisplayName","LogoInline","default"],"sourceRoot":""} \ No newline at end of file diff --git a/index.html b/index.html index b57a30d..d0a88eb 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Home | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/offline-plugin-app-shell-fallback/index.html b/offline-plugin-app-shell-fallback/index.html index 99d1255..b4ddb02 100644 --- a/offline-plugin-app-shell-fallback/index.html +++ b/offline-plugin-app-shell-fallback/index.html @@ -37,6 +37,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index b8652ba..a075b3f 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"4e3108f03e52befb9280"} +{"webpackCompilationHash":"628b6428df58bcfcc772"} diff --git a/photos/index.html b/photos/index.html index a14f9aa..82c212d 100644 --- a/photos/index.html +++ b/photos/index.html @@ -1,4 +1,4 @@ -Photos | George Pearson - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-02-09-hello-world/index.html b/posts/2019-02-09-hello-world/index.html index 2ffe38a..69a1744 100644 --- a/posts/2019-02-09-hello-world/index.html +++ b/posts/2019-02-09-hello-world/index.html @@ -106,6 +106,6 @@

Conclusion

- \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-02-20-dsa-cloud-images/index.html b/posts/2019-02-20-dsa-cloud-images/index.html index 4a476e8..8a70bfe 100644 --- a/posts/2019-02-20-dsa-cloud-images/index.html +++ b/posts/2019-02-20-dsa-cloud-images/index.html @@ -118,6 +118,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-03-06-svg-path-animations/index.html b/posts/2019-03-06-svg-path-animations/index.html index 00a34db..3da3d43 100644 --- a/posts/2019-03-06-svg-path-animations/index.html +++ b/posts/2019-03-06-svg-path-animations/index.html @@ -165,6 +165,6 @@

Further reading

- \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-04-06-the-game-of-life/index.html b/posts/2019-04-06-the-game-of-life/index.html index a49fd94..e22312b 100644 --- a/posts/2019-04-06-the-game-of-life/index.html +++ b/posts/2019-04-06-the-game-of-life/index.html @@ -124,6 +124,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-05-19-sobel/index.html b/posts/2019-05-19-sobel/index.html index b941008..03c72cd 100644 --- a/posts/2019-05-19-sobel/index.html +++ b/posts/2019-05-19-sobel/index.html @@ -90,6 +90,6 @@

Further reading / watching

- \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-06-17-circles-everywhere/index.html b/posts/2019-06-17-circles-everywhere/index.html index f888edc..d334052 100644 --- a/posts/2019-06-17-circles-everywhere/index.html +++ b/posts/2019-06-17-circles-everywhere/index.html @@ -136,6 +136,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-07-23-putting-svgs-on-the-map/index.html b/posts/2019-07-23-putting-svgs-on-the-map/index.html index af29ea9..99aaed9 100644 --- a/posts/2019-07-23-putting-svgs-on-the-map/index.html +++ b/posts/2019-07-23-putting-svgs-on-the-map/index.html @@ -94,6 +94,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-08-11-moire-patterns/index.html b/posts/2019-08-11-moire-patterns/index.html index 0282125..1b8fbb3 100644 --- a/posts/2019-08-11-moire-patterns/index.html +++ b/posts/2019-08-11-moire-patterns/index.html @@ -125,6 +125,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-11-10-from-ruby-to-react/index.html b/posts/2019-11-10-from-ruby-to-react/index.html index 784f3aa..6b01506 100644 --- a/posts/2019-11-10-from-ruby-to-react/index.html +++ b/posts/2019-11-10-from-ruby-to-react/index.html @@ -76,6 +76,6 @@

All still on GitHub

- \ No newline at end of file + \ No newline at end of file diff --git a/sw.js b/sw.js index 3a02d90..20663f4 100644 --- a/sw.js +++ b/sw.js @@ -27,7 +27,7 @@ workbox.core.clientsClaim(); */ self.__precacheManifest = [ { - "url": "webpack-runtime-6a0f0439d7ed3d04dc1f.js" + "url": "webpack-runtime-22d4c7728b674418871e.js" }, { "url": "styles.e148c04380a0aa6ad03d.css" @@ -40,7 +40,7 @@ self.__precacheManifest = [ }, { "url": "offline-plugin-app-shell-fallback/index.html", - "revision": "169e8aae2d95662d11129822eecb13f8" + "revision": "b26ab8bb0d5d0d84de5c35a08ffc5ab7" }, { "url": "manifest.webmanifest", diff --git a/webpack-runtime-83a68e5b1bd3621e6b20.js b/webpack-runtime-22d4c7728b674418871e.js similarity index 81% rename from webpack-runtime-83a68e5b1bd3621e6b20.js rename to webpack-runtime-22d4c7728b674418871e.js index 4727f6e..bdc7e87 100644 --- a/webpack-runtime-83a68e5b1bd3621e6b20.js +++ b/webpack-runtime-22d4c7728b674418871e.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,o,a,c={},s={};function r(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return c[e](n,n.exports,r),n.exports}r.m=c,e=[],r.O=function(t,n,o,a){if(!n){var c=1/0;for(d=0;d=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[p])}))?n.splice(p--,1):(s=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},r.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var c={};t=t||[null,n({}),n([]),n(n)];for(var s=2&o&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},r.d(a,c),a},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce((function(t,n){return r.f[n](e,t),t}),[]))},r.u=function(e){return{39:"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx",91:"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba",93:"158b2dac7de283d1c748ddb8b4c5344d19d059f5",188:"bdd7def790a14dba1495fe454e55321fa9778156",286:"component---src-pages-photos-index-js",302:"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx",306:"component---cache-caches-gatsby-plugin-offline-app-shell-js",342:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx",351:"795ab356",397:"375210ebb48ed7c60b267de1be0436292cc81ea6",426:"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx",438:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx",456:"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx",485:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx",502:"component---src-pages-posts-2019-02-09-hello-world-index-mdx",504:"da497fb35118ece64ecc2a23d03017fcd97099fa",511:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx",545:"component---src-pages-posts-2019-05-19-sobel-index-mdx",578:"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx",626:"06fa0f4b",660:"f131f4d1e5fe1b0b847b19b004623a94ea709d3e",689:"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx",718:"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx",723:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx",749:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx",790:"component---src-pages-about-index-js",813:"component---src-templates-post-list-template-post-list-template-js",871:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx",911:"component---src-pages-404-index-js",915:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx",926:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx",936:"f6cf500c339ee5fae8077daadffc501a4d69b868",948:"2cca2479",976:"c16184b3"}[e]+"-"+{39:"1725c181effa9d506341",91:"832b4ff2fa2519bfc58e",93:"c97ed78d06ef9732b7c7",188:"9c382482340a815ca9d4",286:"c99a783852b84cfe29c5",302:"997f2d46a8cadae02817",306:"819fe14f87f7d11ff78a",342:"4471dcdcd409786da3e6",351:"0d167cc43f447e82fa46",397:"1bc96dcee60e4885f03c",426:"f72154962eced13af4b6",438:"069608bd6cc5f647210a",456:"cf34bed01e0db7f55215",485:"ecbab336b183358c432f",502:"2c874ef8011dec766139",504:"7e7216404f287a83b13f",511:"be9f19332aaad51ab25f",545:"9fd24b867eb282d6c48d",578:"80958722cca925682e87",626:"012962fcaebc91b35ec6",660:"6f07afc1a07b8f16be31",689:"384e9c797e686317da81",718:"9855ed94670d6a646fd8",723:"8d9823f680bbe8937360",749:"8d7e5db8d7b6e6a237b7",790:"81a2a2b55d10538c0650",813:"65df93a9df60d2b97e9d",871:"6ad88a56dbe0f299b369",911:"b31088d4d20dea69e29b",915:"89afac1244048219ff34",926:"d687fcd9b30bf409793c",936:"8aaf8ab9d97a9f0320bb",948:"7bd1a8d52a5c2f1a5dce",976:"12653d8df1be68db7c61"}[e]+".js"},r.miniCssF=function(e){return"styles.e148c04380a0aa6ad03d.css"},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o={},a="blog:",r.l=function(e,t,n,c){if(o[e])o[e].push(t);else{var s,p;if(void 0!==n)for(var f=document.getElementsByTagName("script"),d=0;d=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[p])}))?n.splice(p--,1):(s=!1,a0&&e[f-1][2]>a;f--)e[f]=e[f-1];e[f]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},r.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var c={};t=t||[null,n({}),n([]),n(n)];for(var s=2&o&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},r.d(a,c),a},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce((function(t,n){return r.f[n](e,t),t}),[]))},r.u=function(e){return{39:"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx",91:"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba",93:"158b2dac7de283d1c748ddb8b4c5344d19d059f5",188:"bdd7def790a14dba1495fe454e55321fa9778156",286:"component---src-pages-photos-index-js",302:"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx",306:"component---cache-caches-gatsby-plugin-offline-app-shell-js",342:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx",351:"795ab356",397:"375210ebb48ed7c60b267de1be0436292cc81ea6",426:"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx",438:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx",456:"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx",485:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx",502:"component---src-pages-posts-2019-02-09-hello-world-index-mdx",504:"da497fb35118ece64ecc2a23d03017fcd97099fa",511:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx",545:"component---src-pages-posts-2019-05-19-sobel-index-mdx",578:"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx",626:"06fa0f4b",660:"f131f4d1e5fe1b0b847b19b004623a94ea709d3e",689:"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx",718:"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx",723:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx",749:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx",790:"component---src-pages-about-index-js",813:"component---src-templates-post-list-template-post-list-template-js",871:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx",911:"component---src-pages-404-index-js",915:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx",926:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx",936:"f6cf500c339ee5fae8077daadffc501a4d69b868",948:"2cca2479",976:"c16184b3"}[e]+"-"+{39:"1725c181effa9d506341",91:"832b4ff2fa2519bfc58e",93:"c97ed78d06ef9732b7c7",188:"9c382482340a815ca9d4",286:"aa5d1f71ba139a48226b",302:"997f2d46a8cadae02817",306:"819fe14f87f7d11ff78a",342:"16d6ee9e85343cc10a5a",351:"0d167cc43f447e82fa46",397:"1bc96dcee60e4885f03c",426:"f72154962eced13af4b6",438:"621d5c26fd0dbaf7309a",456:"cf34bed01e0db7f55215",485:"0edffaf0d34fd06908a3",502:"2c874ef8011dec766139",504:"625390953412cc80d75b",511:"1a55c5738e73e5d9372c",545:"9fd24b867eb282d6c48d",578:"80958722cca925682e87",626:"012962fcaebc91b35ec6",660:"6f07afc1a07b8f16be31",689:"384e9c797e686317da81",718:"9855ed94670d6a646fd8",723:"659fe8c35d8c1b26057c",749:"c5a2da95d1205be1bb8b",790:"f91c3c56105ac2884c28",813:"10ba15cdc10671124c42",871:"841c6946ed9129cad9fb",911:"0159f18ed22d22ce992a",915:"f6702a057f7bc1ad17f9",926:"965d2d7c321a3cee4304",936:"8aaf8ab9d97a9f0320bb",948:"7bd1a8d52a5c2f1a5dce",976:"12653d8df1be68db7c61"}[e]+".js"},r.miniCssF=function(e){return"styles.e148c04380a0aa6ad03d.css"},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o={},a="blog:",r.l=function(e,t,n,c){if(o[e])o[e].push(t);else{var s,p;if(void 0!==n)for(var d=document.getElementsByTagName("script"),f=0;f 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"blog:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"39\":\"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx\",\"91\":\"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba\",\"93\":\"158b2dac7de283d1c748ddb8b4c5344d19d059f5\",\"188\":\"bdd7def790a14dba1495fe454e55321fa9778156\",\"286\":\"component---src-pages-photos-index-js\",\"302\":\"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx\",\"306\":\"component---cache-caches-gatsby-plugin-offline-app-shell-js\",\"342\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx\",\"351\":\"795ab356\",\"397\":\"375210ebb48ed7c60b267de1be0436292cc81ea6\",\"426\":\"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx\",\"438\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx\",\"456\":\"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx\",\"485\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx\",\"502\":\"component---src-pages-posts-2019-02-09-hello-world-index-mdx\",\"504\":\"da497fb35118ece64ecc2a23d03017fcd97099fa\",\"511\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx\",\"545\":\"component---src-pages-posts-2019-05-19-sobel-index-mdx\",\"578\":\"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx\",\"626\":\"06fa0f4b\",\"660\":\"f131f4d1e5fe1b0b847b19b004623a94ea709d3e\",\"689\":\"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx\",\"718\":\"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx\",\"723\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx\",\"749\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx\",\"790\":\"component---src-pages-about-index-js\",\"813\":\"component---src-templates-post-list-template-post-list-template-js\",\"871\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx\",\"911\":\"component---src-pages-404-index-js\",\"915\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx\",\"926\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx\",\"936\":\"f6cf500c339ee5fae8077daadffc501a4d69b868\",\"948\":\"2cca2479\",\"976\":\"c16184b3\"}[chunkId] + \"-\" + {\"39\":\"1725c181effa9d506341\",\"91\":\"832b4ff2fa2519bfc58e\",\"93\":\"c97ed78d06ef9732b7c7\",\"188\":\"9c382482340a815ca9d4\",\"286\":\"c99a783852b84cfe29c5\",\"302\":\"997f2d46a8cadae02817\",\"306\":\"819fe14f87f7d11ff78a\",\"342\":\"4471dcdcd409786da3e6\",\"351\":\"0d167cc43f447e82fa46\",\"397\":\"1bc96dcee60e4885f03c\",\"426\":\"f72154962eced13af4b6\",\"438\":\"069608bd6cc5f647210a\",\"456\":\"cf34bed01e0db7f55215\",\"485\":\"ecbab336b183358c432f\",\"502\":\"2c874ef8011dec766139\",\"504\":\"7e7216404f287a83b13f\",\"511\":\"be9f19332aaad51ab25f\",\"545\":\"9fd24b867eb282d6c48d\",\"578\":\"80958722cca925682e87\",\"626\":\"012962fcaebc91b35ec6\",\"660\":\"6f07afc1a07b8f16be31\",\"689\":\"384e9c797e686317da81\",\"718\":\"9855ed94670d6a646fd8\",\"723\":\"8d9823f680bbe8937360\",\"749\":\"8d7e5db8d7b6e6a237b7\",\"790\":\"81a2a2b55d10538c0650\",\"813\":\"65df93a9df60d2b97e9d\",\"871\":\"6ad88a56dbe0f299b369\",\"911\":\"b31088d4d20dea69e29b\",\"915\":\"89afac1244048219ff34\",\"926\":\"d687fcd9b30bf409793c\",\"936\":\"8aaf8ab9d97a9f0320bb\",\"948\":\"7bd1a8d52a5c2f1a5dce\",\"976\":\"12653d8df1be68db7c61\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"e148c04380a0aa6ad03d\" + \".css\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkblog\"] = self[\"webpackChunkblog\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-22d4c7728b674418871e.js","mappings":"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","sources":["webpack://blog/webpack/runtime/chunk loaded","webpack://blog/webpack/runtime/create fake namespace object","webpack://blog/webpack/runtime/load script","webpack://blog/webpack/bootstrap","webpack://blog/webpack/runtime/compat get default export","webpack://blog/webpack/runtime/define property getters","webpack://blog/webpack/runtime/ensure chunk","webpack://blog/webpack/runtime/get javascript chunk filename","webpack://blog/webpack/runtime/get mini-css chunk filename","webpack://blog/webpack/runtime/hasOwnProperty shorthand","webpack://blog/webpack/runtime/make namespace object","webpack://blog/webpack/runtime/publicPath","webpack://blog/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"blog:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"39\":\"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx\",\"91\":\"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba\",\"93\":\"158b2dac7de283d1c748ddb8b4c5344d19d059f5\",\"188\":\"bdd7def790a14dba1495fe454e55321fa9778156\",\"286\":\"component---src-pages-photos-index-js\",\"302\":\"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx\",\"306\":\"component---cache-caches-gatsby-plugin-offline-app-shell-js\",\"342\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx\",\"351\":\"795ab356\",\"397\":\"375210ebb48ed7c60b267de1be0436292cc81ea6\",\"426\":\"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx\",\"438\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx\",\"456\":\"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx\",\"485\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx\",\"502\":\"component---src-pages-posts-2019-02-09-hello-world-index-mdx\",\"504\":\"da497fb35118ece64ecc2a23d03017fcd97099fa\",\"511\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx\",\"545\":\"component---src-pages-posts-2019-05-19-sobel-index-mdx\",\"578\":\"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx\",\"626\":\"06fa0f4b\",\"660\":\"f131f4d1e5fe1b0b847b19b004623a94ea709d3e\",\"689\":\"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx\",\"718\":\"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx\",\"723\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx\",\"749\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx\",\"790\":\"component---src-pages-about-index-js\",\"813\":\"component---src-templates-post-list-template-post-list-template-js\",\"871\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx\",\"911\":\"component---src-pages-404-index-js\",\"915\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx\",\"926\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx\",\"936\":\"f6cf500c339ee5fae8077daadffc501a4d69b868\",\"948\":\"2cca2479\",\"976\":\"c16184b3\"}[chunkId] + \"-\" + {\"39\":\"1725c181effa9d506341\",\"91\":\"832b4ff2fa2519bfc58e\",\"93\":\"c97ed78d06ef9732b7c7\",\"188\":\"9c382482340a815ca9d4\",\"286\":\"aa5d1f71ba139a48226b\",\"302\":\"997f2d46a8cadae02817\",\"306\":\"819fe14f87f7d11ff78a\",\"342\":\"16d6ee9e85343cc10a5a\",\"351\":\"0d167cc43f447e82fa46\",\"397\":\"1bc96dcee60e4885f03c\",\"426\":\"f72154962eced13af4b6\",\"438\":\"621d5c26fd0dbaf7309a\",\"456\":\"cf34bed01e0db7f55215\",\"485\":\"0edffaf0d34fd06908a3\",\"502\":\"2c874ef8011dec766139\",\"504\":\"625390953412cc80d75b\",\"511\":\"1a55c5738e73e5d9372c\",\"545\":\"9fd24b867eb282d6c48d\",\"578\":\"80958722cca925682e87\",\"626\":\"012962fcaebc91b35ec6\",\"660\":\"6f07afc1a07b8f16be31\",\"689\":\"384e9c797e686317da81\",\"718\":\"9855ed94670d6a646fd8\",\"723\":\"659fe8c35d8c1b26057c\",\"749\":\"c5a2da95d1205be1bb8b\",\"790\":\"f91c3c56105ac2884c28\",\"813\":\"10ba15cdc10671124c42\",\"871\":\"841c6946ed9129cad9fb\",\"911\":\"0159f18ed22d22ce992a\",\"915\":\"f6702a057f7bc1ad17f9\",\"926\":\"965d2d7c321a3cee4304\",\"936\":\"8aaf8ab9d97a9f0320bb\",\"948\":\"7bd1a8d52a5c2f1a5dce\",\"976\":\"12653d8df1be68db7c61\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"e148c04380a0aa6ad03d\" + \".css\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkblog\"] = self[\"webpackChunkblog\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack-runtime-6a0f0439d7ed3d04dc1f.js b/webpack-runtime-6a0f0439d7ed3d04dc1f.js deleted file mode 100644 index 2c014ae..0000000 --- a/webpack-runtime-6a0f0439d7ed3d04dc1f.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){"use strict";var e,t,n,o,a,c={},s={};function r(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return c[e](n,n.exports,r),n.exports}r.m=c,e=[],r.O=function(t,n,o,a){if(!n){var c=1/0;for(d=0;d=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[p])}))?n.splice(p--,1):(s=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},r.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var c={};t=t||[null,n({}),n([]),n(n)];for(var s=2&o&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},r.d(a,c),a},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce((function(t,n){return r.f[n](e,t),t}),[]))},r.u=function(e){return{39:"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx",91:"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba",93:"158b2dac7de283d1c748ddb8b4c5344d19d059f5",188:"bdd7def790a14dba1495fe454e55321fa9778156",286:"component---src-pages-photos-index-js",302:"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx",306:"component---cache-caches-gatsby-plugin-offline-app-shell-js",342:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx",351:"795ab356",397:"375210ebb48ed7c60b267de1be0436292cc81ea6",426:"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx",438:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx",456:"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx",485:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx",502:"component---src-pages-posts-2019-02-09-hello-world-index-mdx",504:"da497fb35118ece64ecc2a23d03017fcd97099fa",511:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx",545:"component---src-pages-posts-2019-05-19-sobel-index-mdx",578:"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx",626:"06fa0f4b",660:"f131f4d1e5fe1b0b847b19b004623a94ea709d3e",689:"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx",718:"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx",723:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx",749:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx",790:"component---src-pages-about-index-js",813:"component---src-templates-post-list-template-post-list-template-js",871:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx",911:"component---src-pages-404-index-js",915:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx",926:"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx",936:"f6cf500c339ee5fae8077daadffc501a4d69b868",948:"2cca2479",976:"c16184b3"}[e]+"-"+{39:"1725c181effa9d506341",91:"832b4ff2fa2519bfc58e",93:"c97ed78d06ef9732b7c7",188:"9c382482340a815ca9d4",286:"e130782ec785ed63ae33",302:"997f2d46a8cadae02817",306:"819fe14f87f7d11ff78a",342:"edb6b2aea9b2e4006041",351:"0d167cc43f447e82fa46",397:"1bc96dcee60e4885f03c",426:"f72154962eced13af4b6",438:"f7db666735359631cbf5",456:"cf34bed01e0db7f55215",485:"a4d5053c50e571136064",502:"2c874ef8011dec766139",504:"b895b0e864f8c5498fad",511:"762ae251e453fa33acf3",545:"9fd24b867eb282d6c48d",578:"80958722cca925682e87",626:"012962fcaebc91b35ec6",660:"6f07afc1a07b8f16be31",689:"384e9c797e686317da81",718:"9855ed94670d6a646fd8",723:"0c42aa7c8ef93b705913",749:"6679b90d926dc373447c",790:"635a90325f80ce2ef5b8",813:"c3fa21995dbe260e18c3",871:"1a17e4c8d9134e36e720",911:"d58d7d2efb7e833438b7",915:"07d3160a6fb72de0e5c6",926:"edd9c84933515f545bab",936:"8aaf8ab9d97a9f0320bb",948:"7bd1a8d52a5c2f1a5dce",976:"12653d8df1be68db7c61"}[e]+".js"},r.miniCssF=function(e){return"styles.e148c04380a0aa6ad03d.css"},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o={},a="blog:",r.l=function(e,t,n,c){if(o[e])o[e].push(t);else{var s,p;if(void 0!==n)for(var f=document.getElementsByTagName("script"),d=0;d 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"blog:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"39\":\"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx\",\"91\":\"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba\",\"93\":\"158b2dac7de283d1c748ddb8b4c5344d19d059f5\",\"188\":\"bdd7def790a14dba1495fe454e55321fa9778156\",\"286\":\"component---src-pages-photos-index-js\",\"302\":\"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx\",\"306\":\"component---cache-caches-gatsby-plugin-offline-app-shell-js\",\"342\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx\",\"351\":\"795ab356\",\"397\":\"375210ebb48ed7c60b267de1be0436292cc81ea6\",\"426\":\"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx\",\"438\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx\",\"456\":\"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx\",\"485\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx\",\"502\":\"component---src-pages-posts-2019-02-09-hello-world-index-mdx\",\"504\":\"da497fb35118ece64ecc2a23d03017fcd97099fa\",\"511\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx\",\"545\":\"component---src-pages-posts-2019-05-19-sobel-index-mdx\",\"578\":\"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx\",\"626\":\"06fa0f4b\",\"660\":\"f131f4d1e5fe1b0b847b19b004623a94ea709d3e\",\"689\":\"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx\",\"718\":\"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx\",\"723\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx\",\"749\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx\",\"790\":\"component---src-pages-about-index-js\",\"813\":\"component---src-templates-post-list-template-post-list-template-js\",\"871\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx\",\"911\":\"component---src-pages-404-index-js\",\"915\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx\",\"926\":\"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx\",\"936\":\"f6cf500c339ee5fae8077daadffc501a4d69b868\",\"948\":\"2cca2479\",\"976\":\"c16184b3\"}[chunkId] + \"-\" + {\"39\":\"1725c181effa9d506341\",\"91\":\"832b4ff2fa2519bfc58e\",\"93\":\"c97ed78d06ef9732b7c7\",\"188\":\"9c382482340a815ca9d4\",\"286\":\"e130782ec785ed63ae33\",\"302\":\"997f2d46a8cadae02817\",\"306\":\"819fe14f87f7d11ff78a\",\"342\":\"edb6b2aea9b2e4006041\",\"351\":\"0d167cc43f447e82fa46\",\"397\":\"1bc96dcee60e4885f03c\",\"426\":\"f72154962eced13af4b6\",\"438\":\"f7db666735359631cbf5\",\"456\":\"cf34bed01e0db7f55215\",\"485\":\"a4d5053c50e571136064\",\"502\":\"2c874ef8011dec766139\",\"504\":\"b895b0e864f8c5498fad\",\"511\":\"762ae251e453fa33acf3\",\"545\":\"9fd24b867eb282d6c48d\",\"578\":\"80958722cca925682e87\",\"626\":\"012962fcaebc91b35ec6\",\"660\":\"6f07afc1a07b8f16be31\",\"689\":\"384e9c797e686317da81\",\"718\":\"9855ed94670d6a646fd8\",\"723\":\"0c42aa7c8ef93b705913\",\"749\":\"6679b90d926dc373447c\",\"790\":\"635a90325f80ce2ef5b8\",\"813\":\"c3fa21995dbe260e18c3\",\"871\":\"1a17e4c8d9134e36e720\",\"911\":\"d58d7d2efb7e833438b7\",\"915\":\"07d3160a6fb72de0e5c6\",\"926\":\"edd9c84933515f545bab\",\"936\":\"8aaf8ab9d97a9f0320bb\",\"948\":\"7bd1a8d52a5c2f1a5dce\",\"976\":\"12653d8df1be68db7c61\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"e148c04380a0aa6ad03d\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkblog\"] = self[\"webpackChunkblog\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index 3c324ab..91c78ff 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-6a0f0439d7ed3d04dc1f.js","size":7036},{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"framework-00bf2bb98c1b8e9fbdeb.js","size":140749},{"name":"app-d078deb4953fa6ea7d8b.js","size":73697}],"filteredAssets":0,"assetsSize":231983,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":630762},"component---cache-caches-gatsby-plugin-offline-app-shell-js":{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js","assets":[{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js-819fe14f87f7d11ff78a.js","size":503}],"filteredAssets":0,"assetsSize":503,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":1641},"component---src-pages-404-index-js":{"name":"component---src-pages-404-index-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"component---src-pages-404-index-js-d58d7d2efb7e833438b7.js","size":14325}],"filteredAssets":0,"assetsSize":132647,"filteredAuxiliaryAssets":6,"auxiliaryAssetsSize":1968602},"component---src-pages-about-index-js":{"name":"component---src-pages-about-index-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"component---src-pages-about-index-js-635a90325f80ce2ef5b8.js","size":1001}],"filteredAssets":0,"assetsSize":119323,"filteredAuxiliaryAssets":7,"auxiliaryAssetsSize":2707960},"component---src-pages-photos-index-js":{"name":"component---src-pages-photos-index-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"component---src-pages-photos-index-js-e130782ec785ed63ae33.js","size":2658}],"filteredAssets":0,"assetsSize":120980,"filteredAuxiliaryAssets":18,"auxiliaryAssetsSize":6372297},"component---src-pages-posts-2019-02-09-hello-world-index-mdx":{"name":"component---src-pages-posts-2019-02-09-hello-world-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-02-09-hello-world-index-mdx-2c874ef8011dec766139.js","size":7434}],"filteredAssets":0,"assetsSize":17935,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":265134},"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":{"name":"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-997f2d46a8cadae02817.js","size":7976}],"filteredAssets":0,"assetsSize":18477,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":43819},"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx":{"name":"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","size":19652},{"name":"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx-384e9c797e686317da81.js","size":13849}],"filteredAssets":0,"assetsSize":44002,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":60257},"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx":{"name":"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx-cf34bed01e0db7f55215.js","size":10092}],"filteredAssets":0,"assetsSize":92146,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":1261814},"component---src-pages-posts-2019-05-19-sobel-index-mdx":{"name":"component---src-pages-posts-2019-05-19-sobel-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-05-19-sobel-index-mdx-9fd24b867eb282d6c48d.js","size":9852}],"filteredAssets":0,"assetsSize":20353,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":560093},"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx":{"name":"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"06fa0f4b-012962fcaebc91b35ec6.js","size":234090},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","size":128159},{"name":"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx-80958722cca925682e87.js","size":594}],"filteredAssets":0,"assetsSize":443219,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":867153},"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":{"name":"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-1725c181effa9d506341.js","size":7770}],"filteredAssets":0,"assetsSize":88146,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":568787},"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx":{"name":"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"795ab356-0d167cc43f447e82fa46.js","size":595553},{"name":"bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","size":15635},{"name":"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx-9855ed94670d6a646fd8.js","size":590}],"filteredAssets":0,"assetsSize":622279,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":1304109},"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":{"name":"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-f72154962eced13af4b6.js","size":5685}],"filteredAssets":0,"assetsSize":16186,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":627884},"component---src-templates-post-list-template-post-list-template-js":{"name":"component---src-templates-post-list-template-post-list-template-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js","size":18029}],"filteredAssets":0,"assetsSize":136351,"filteredAuxiliaryAssets":6,"auxiliaryAssetsSize":1977286},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js","size":7598}],"filteredAssets":0,"assetsSize":200877,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2432019},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js","size":8140}],"filteredAssets":0,"assetsSize":201419,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2210726},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","size":19652},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js","size":763}],"filteredAssets":0,"assetsSize":213694,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2207160},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js","size":10255}],"filteredAssets":0,"assetsSize":203534,"filteredAuxiliaryAssets":7,"auxiliaryAssetsSize":2194138},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js","size":10016}],"filteredAssets":0,"assetsSize":203295,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":2726985},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"06fa0f4b-012962fcaebc91b35ec6.js","size":234090},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","size":128159},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js","size":762}],"filteredAssets":0,"assetsSize":626165,"filteredAuxiliaryAssets":10,"auxiliaryAssetsSize":3034090},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js","size":7935}],"filteredAssets":0,"assetsSize":271089,"filteredAuxiliaryAssets":11,"auxiliaryAssetsSize":2735702},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"795ab356-0d167cc43f447e82fa46.js","size":595553},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","size":15635},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js","size":758}],"filteredAssets":0,"assetsSize":805225,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":3471042},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","size":34564},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js","size":5848}],"filteredAssets":0,"assetsSize":199127,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2794785}},"assetsByChunkName":{"app":["webpack-runtime-6a0f0439d7ed3d04dc1f.js","styles.e148c04380a0aa6ad03d.css","framework-00bf2bb98c1b8e9fbdeb.js","app-d078deb4953fa6ea7d8b.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["component---cache-caches-gatsby-plugin-offline-app-shell-js-819fe14f87f7d11ff78a.js"],"component---src-pages-404-index-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","component---src-pages-404-index-js-d58d7d2efb7e833438b7.js"],"component---src-pages-about-index-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","component---src-pages-about-index-js-635a90325f80ce2ef5b8.js"],"component---src-pages-photos-index-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","component---src-pages-photos-index-js-e130782ec785ed63ae33.js"],"component---src-pages-posts-2019-02-09-hello-world-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-02-09-hello-world-index-mdx-2c874ef8011dec766139.js"],"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-997f2d46a8cadae02817.js"],"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["styles.e148c04380a0aa6ad03d.css","f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx-384e9c797e686317da81.js"],"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx-cf34bed01e0db7f55215.js"],"component---src-pages-posts-2019-05-19-sobel-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-05-19-sobel-index-mdx-9fd24b867eb282d6c48d.js"],"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["styles.e148c04380a0aa6ad03d.css","06fa0f4b-012962fcaebc91b35ec6.js","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx-80958722cca925682e87.js"],"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["styles.e148c04380a0aa6ad03d.css","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-1725c181effa9d506341.js"],"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx":["styles.e148c04380a0aa6ad03d.css","795ab356-0d167cc43f447e82fa46.js","bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","component---src-pages-posts-2019-08-11-moire-patterns-index-mdx-9855ed94670d6a646fd8.js"],"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-f72154962eced13af4b6.js"],"component---src-templates-post-list-template-post-list-template-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","component---src-templates-post-list-template-post-list-template-js-c3fa21995dbe260e18c3.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-762ae251e453fa33acf3.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-edb6b2aea9b2e4006041.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-a4d5053c50e571136064.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-07d3160a6fb72de0e5c6.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-1a17e4c8d9134e36e720.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","06fa0f4b-012962fcaebc91b35ec6.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-6679b90d926dc373447c.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-edd9c84933515f545bab.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","795ab356-0d167cc43f447e82fa46.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-f7db666735359631cbf5.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-b895b0e864f8c5498fad.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-0c42aa7c8ef93b705913.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-22d4c7728b674418871e.js","size":6871},{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"framework-00bf2bb98c1b8e9fbdeb.js","size":140749},{"name":"app-d078deb4953fa6ea7d8b.js","size":73697}],"filteredAssets":0,"assetsSize":231818,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":630290},"component---cache-caches-gatsby-plugin-offline-app-shell-js":{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js","assets":[{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js-819fe14f87f7d11ff78a.js","size":503}],"filteredAssets":0,"assetsSize":503,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":1641},"component---src-pages-404-index-js":{"name":"component---src-pages-404-index-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"component---src-pages-404-index-js-0159f18ed22d22ce992a.js","size":14399}],"filteredAssets":0,"assetsSize":117803,"filteredAuxiliaryAssets":6,"auxiliaryAssetsSize":1900227},"component---src-pages-about-index-js":{"name":"component---src-pages-about-index-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"component---src-pages-about-index-js-f91c3c56105ac2884c28.js","size":1075}],"filteredAssets":0,"assetsSize":104479,"filteredAuxiliaryAssets":7,"auxiliaryAssetsSize":2639585},"component---src-pages-photos-index-js":{"name":"component---src-pages-photos-index-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js","size":2732}],"filteredAssets":0,"assetsSize":106136,"filteredAuxiliaryAssets":18,"auxiliaryAssetsSize":6303925},"component---src-pages-posts-2019-02-09-hello-world-index-mdx":{"name":"component---src-pages-posts-2019-02-09-hello-world-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-02-09-hello-world-index-mdx-2c874ef8011dec766139.js","size":7434}],"filteredAssets":0,"assetsSize":17935,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":265134},"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":{"name":"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-997f2d46a8cadae02817.js","size":7976}],"filteredAssets":0,"assetsSize":18477,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":43819},"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx":{"name":"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","size":19652},{"name":"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx-384e9c797e686317da81.js","size":13849}],"filteredAssets":0,"assetsSize":44002,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":60257},"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx":{"name":"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx-cf34bed01e0db7f55215.js","size":10092}],"filteredAssets":0,"assetsSize":92146,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":1261814},"component---src-pages-posts-2019-05-19-sobel-index-mdx":{"name":"component---src-pages-posts-2019-05-19-sobel-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-05-19-sobel-index-mdx-9fd24b867eb282d6c48d.js","size":9852}],"filteredAssets":0,"assetsSize":20353,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":560093},"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx":{"name":"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"06fa0f4b-012962fcaebc91b35ec6.js","size":234090},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","size":128159},{"name":"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx-80958722cca925682e87.js","size":594}],"filteredAssets":0,"assetsSize":443219,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":867153},"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":{"name":"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-1725c181effa9d506341.js","size":7770}],"filteredAssets":0,"assetsSize":88146,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":568787},"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx":{"name":"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"795ab356-0d167cc43f447e82fa46.js","size":595553},{"name":"bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","size":15635},{"name":"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx-9855ed94670d6a646fd8.js","size":590}],"filteredAssets":0,"assetsSize":622279,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":1304109},"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":{"name":"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-f72154962eced13af4b6.js","size":5685}],"filteredAssets":0,"assetsSize":16186,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":627884},"component---src-templates-post-list-template-post-list-template-js":{"name":"component---src-templates-post-list-template-post-list-template-js","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js","size":18103}],"filteredAssets":0,"assetsSize":121507,"filteredAuxiliaryAssets":6,"auxiliaryAssetsSize":1908913},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js","size":7704}],"filteredAssets":0,"assetsSize":186065,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2363771},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js","size":8246}],"filteredAssets":0,"assetsSize":186607,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2142480},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","size":19652},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js","size":869}],"filteredAssets":0,"assetsSize":198882,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2138912},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js","size":10361}],"filteredAssets":0,"assetsSize":188722,"filteredAuxiliaryAssets":7,"auxiliaryAssetsSize":2125892},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js","size":10122}],"filteredAssets":0,"assetsSize":188483,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":2658740},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"06fa0f4b-012962fcaebc91b35ec6.js","size":234090},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","size":128159},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js","size":868}],"filteredAssets":0,"assetsSize":611353,"filteredAuxiliaryAssets":10,"auxiliaryAssetsSize":2965842},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","size":69875},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js","size":8041}],"filteredAssets":0,"assetsSize":256277,"filteredAuxiliaryAssets":11,"auxiliaryAssetsSize":2667457},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"795ab356-0d167cc43f447e82fa46.js","size":595553},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","size":15635},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js","size":864}],"filteredAssets":0,"assetsSize":790413,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":3402794},"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx","assets":[{"name":"styles.e148c04380a0aa6ad03d.css","size":10501},{"name":"c16184b3-12653d8df1be68db7c61.js","size":3047},{"name":"2cca2479-7bd1a8d52a5c2f1a5dce.js","size":1704},{"name":"158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","size":68506},{"name":"da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","size":19646},{"name":"fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","size":74957},{"name":"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js","size":5954}],"filteredAssets":0,"assetsSize":184315,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":2726538}},"assetsByChunkName":{"app":["webpack-runtime-22d4c7728b674418871e.js","styles.e148c04380a0aa6ad03d.css","framework-00bf2bb98c1b8e9fbdeb.js","app-d078deb4953fa6ea7d8b.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["component---cache-caches-gatsby-plugin-offline-app-shell-js-819fe14f87f7d11ff78a.js"],"component---src-pages-404-index-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","component---src-pages-404-index-js-0159f18ed22d22ce992a.js"],"component---src-pages-about-index-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","component---src-pages-about-index-js-f91c3c56105ac2884c28.js"],"component---src-pages-photos-index-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","component---src-pages-photos-index-js-aa5d1f71ba139a48226b.js"],"component---src-pages-posts-2019-02-09-hello-world-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-02-09-hello-world-index-mdx-2c874ef8011dec766139.js"],"component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-997f2d46a8cadae02817.js"],"component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["styles.e148c04380a0aa6ad03d.css","f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","component---src-pages-posts-2019-03-06-svg-path-animations-index-mdx-384e9c797e686317da81.js"],"component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","component---src-pages-posts-2019-04-06-the-game-of-life-index-mdx-cf34bed01e0db7f55215.js"],"component---src-pages-posts-2019-05-19-sobel-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-05-19-sobel-index-mdx-9fd24b867eb282d6c48d.js"],"component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["styles.e148c04380a0aa6ad03d.css","06fa0f4b-012962fcaebc91b35ec6.js","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","component---src-pages-posts-2019-06-17-circles-everywhere-index-mdx-80958722cca925682e87.js"],"component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["styles.e148c04380a0aa6ad03d.css","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","component---src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-1725c181effa9d506341.js"],"component---src-pages-posts-2019-08-11-moire-patterns-index-mdx":["styles.e148c04380a0aa6ad03d.css","795ab356-0d167cc43f447e82fa46.js","bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","component---src-pages-posts-2019-08-11-moire-patterns-index-mdx-9855ed94670d6a646fd8.js"],"component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["styles.e148c04380a0aa6ad03d.css","component---src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-f72154962eced13af4b6.js"],"component---src-templates-post-list-template-post-list-template-js":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","component---src-templates-post-list-template-post-list-template-js-10ba15cdc10671124c42.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-09-hello-world-index-mdx-1a55c5738e73e5d9372c.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-02-20-dsa-cloud-images-index-mdx-16d6ee9e85343cc10a5a.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","f131f4d1e5fe1b0b847b19b004623a94ea709d3e-6f07afc1a07b8f16be31.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-03-06-svg-path-animations-index-mdx-0edffaf0d34fd06908a3.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-04-06-the-game-of-life-index-mdx-f6702a057f7bc1ad17f9.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-05-19-sobel-index-mdx-841c6946ed9129cad9fb.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","06fa0f4b-012962fcaebc91b35ec6.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","375210ebb48ed7c60b267de1be0436292cc81ea6-1bc96dcee60e4885f03c.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-06-17-circles-everywhere-index-mdx-c5a2da95d1205be1bb8b.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","f6cf500c339ee5fae8077daadffc501a4d69b868-8aaf8ab9d97a9f0320bb.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-07-23-putting-svgs-on-the-map-index-mdx-965d2d7c321a3cee4304.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","795ab356-0d167cc43f447e82fa46.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","bdd7def790a14dba1495fe454e55321fa9778156-9c382482340a815ca9d4.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-08-11-moire-patterns-index-mdx-621d5c26fd0dbaf7309a.js"],"component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx":["styles.e148c04380a0aa6ad03d.css","c16184b3-12653d8df1be68db7c61.js","2cca2479-7bd1a8d52a5c2f1a5dce.js","158b2dac7de283d1c748ddb8b4c5344d19d059f5-c97ed78d06ef9732b7c7.js","da497fb35118ece64ecc2a23d03017fcd97099fa-625390953412cc80d75b.js","fa4ebb80df0d8bc9b2a706d71a352d222a2eeaba-832b4ff2fa2519bfc58e.js","component---src-templates-post-template-post-template-js-content-file-path-src-pages-posts-2019-11-10-from-ruby-to-react-index-mdx-659fe8c35d8c1b26057c.js"]},"childAssetsByChunkName":{}} \ No newline at end of file