diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e86fe25..0000000 --- a/.gitignore +++ /dev/null @@ -1,69 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env - -# gatsby files -.cache/ -public - -# Mac files -.DS_Store - -# Yarn -yarn-error.log -.pnp/ -.pnp.js -# Yarn Integrity file -.yarn-integrity diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index d27ac8e..0000000 --- a/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "endOfLine": "lf", - "semi": false, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5" -} diff --git a/0ffd815739fc50656ba53c98cd2c5e95/terms-grid-track-2c92ad8f-eb75-4478-bd56-5c198a462fa4.svg b/0ffd815739fc50656ba53c98cd2c5e95/terms-grid-track-2c92ad8f-eb75-4478-bd56-5c198a462fa4.svg new file mode 100755 index 0000000..ebeb426 --- /dev/null +++ b/0ffd815739fc50656ba53c98cd2c5e95/terms-grid-track-2c92ad8f-eb75-4478-bd56-5c198a462fa4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2ae7389f495ed49191f4bdc614afa28c/grid-column-row-start-end-01-08ab8475-9f06-46ed-a2c0-f3c3c451e677.svg b/2ae7389f495ed49191f4bdc614afa28c/grid-column-row-start-end-01-08ab8475-9f06-46ed-a2c0-f3c3c451e677.svg new file mode 100755 index 0000000..4a094cf --- /dev/null +++ b/2ae7389f495ed49191f4bdc614afa28c/grid-column-row-start-end-01-08ab8475-9f06-46ed-a2c0-f3c3c451e677.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 0000000..1a024ec --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +404: Not Found | Cube Blog

Cube Blog

Not Found

You just hit a route that doesn't exist... the sadness.

\ No newline at end of file diff --git a/404/index.html b/404/index.html new file mode 100644 index 0000000..09ea330 --- /dev/null +++ b/404/index.html @@ -0,0 +1 @@ +404: Not Found | Cube Blog

Cube Blog

Not Found

You just hit a route that doesn't exist... the sadness.

\ No newline at end of file diff --git a/57713be2cf9b38a714105db8e0a517a9/template-columns-rows-01-9ff80498-a9b2-4059-bdd1-e1bca49a62b0.svg b/57713be2cf9b38a714105db8e0a517a9/template-columns-rows-01-9ff80498-a9b2-4059-bdd1-e1bca49a62b0.svg new file mode 100755 index 0000000..316c1d6 --- /dev/null +++ b/57713be2cf9b38a714105db8e0a517a9/template-columns-rows-01-9ff80498-a9b2-4059-bdd1-e1bca49a62b0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/75dd4c18172ef2354f34c92af12e88c2/terms-grid-line-a0343f0a-7176-4aa0-be1c-89529a03ffbc.svg b/75dd4c18172ef2354f34c92af12e88c2/terms-grid-line-a0343f0a-7176-4aa0-be1c-89529a03ffbc.svg new file mode 100755 index 0000000..5a4bd3f --- /dev/null +++ b/75dd4c18172ef2354f34c92af12e88c2/terms-grid-line-a0343f0a-7176-4aa0-be1c-89529a03ffbc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/858b9f1a36ccfd84b6804386bcaddd8a/terms-grid-cell-be3318de-d8a7-4d71-b482-ae5ac5984977.svg b/858b9f1a36ccfd84b6804386bcaddd8a/terms-grid-cell-be3318de-d8a7-4d71-b482-ae5ac5984977.svg new file mode 100755 index 0000000..28a7885 --- /dev/null +++ b/858b9f1a36ccfd84b6804386bcaddd8a/terms-grid-cell-be3318de-d8a7-4d71-b482-ae5ac5984977.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/JavaScript-\345\270\270\350\247\201\345\207\275\346\225\260\346\226\271\346\263\225\346\250\241\346\213\237\345\256\236\347\216\260/index.html" "b/JavaScript-\345\270\270\350\247\201\345\207\275\346\225\260\346\226\271\346\263\225\346\250\241\346\213\237\345\256\236\347\216\260/index.html" new file mode 100644 index 0000000..e6d915f --- /dev/null +++ "b/JavaScript-\345\270\270\350\247\201\345\207\275\346\225\260\346\226\271\346\263\225\346\250\241\346\213\237\345\256\236\347\216\260/index.html" @@ -0,0 +1,330 @@ +JavaScript 常见函数方法模拟实现 | Cube Blog

Cube Blog

JavaScript 常见函数方法模拟实现

February 12, 2020 • ☕️ 6 min read

call 的模拟实现

+

call() 方法先指定了 this 和可选的参数值后,调用某个函数或方法,返回该函数执行的返回值。

+
    +
  1. 将函数设置为对象的属性
  2. +
  3. 执行该函数
  4. +
  5. 在对象属性中删除该函数
  6. +
+
Function.prototype.myCall = function (context, ...args) {
+  // 对 context 为 null 的情况做处理
+  context = context || window
+
+  // 获取调用 call 的函数,可以用 this 获取
+  context.fn = this
+
+  // 调用该函数
+  let temp = context.fn(...args)
+
+  // 在属性中删除该函数
+  delete context.fn
+
+  return temp
+}
+

如果不用 ES6 中的 ... 语法,可以对函数的 arguments 类数组进行参数处理

+

apply 的模拟实现

+

apply 方法与 call 方法的不同之处是,apply 接收数组形式的可选参数

+
  /**
+   * @param {function} context
+   * @param {array} arr
+   */
+  Function.prototype.myApply = function (context, arr) {
+    context = context || window
+    context.fn = this
+    let temp = context.fn(...arr)
+    delete context.fn
+    return temp
+  }
+

bind 的模拟实现

+

bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

+
  Function.prototype.myBind = function (context, ...args) {
+    // 调用 bind 的不是函数,报错!
+    if (typeof this !== 'function') {
+      threw new Error('Function.prototype.myBind - what is trying to bind is not callable!')
+    }
+
+    context = context || window
+
+    // 获取调用 bind 的函数
+    const self = this
+
+    return function F(...bindArgs) {
+      const distArgs = args.concat(bindArgs)
+      // 如果返回的函数以new F()的方式调用,因为new不会被任何方式改变this指向,所以我们需要忽略传入的 this
+      if (this instanceof F) {
+        return new self(...distArgs)
+      }
+      return self.apply(context, distArgs)
+    }
+  }
+

bind() 方法创建的函数还可以作为构造函数来创建新对象

+

一个绑定函数也能使用new操作符创建对象:这种行为就像把原函数当成构造器。提供的 this 值被忽略,同时调用时的参数被提供给模拟函数。

+

new

+

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一

+
/**
+ * 创建一个空的简单JavaScript对象(即{});
+ * 链接该对象(即设置该对象的构造函数)到另一个对象 ;
+ * 将步骤1新创建的对象作为this的上下文 ;
+ * 如果该函数没有返回对象,则返回this。
+ */
+
+const _new = (_Contructor, ...args) => {
+  // 1.创建一个空的简单JavaScript对象(即{});
+  const obj = {}
+  // 2.链接该对象(即设置该对象的构造函数)到另一个对象 ;
+  Object.setPrototypeOf(obj, _Contructor.prototype)
+  // 3.将步骤1新创建的对象作为this的上下文 ;
+  const ret = _Contructor.apply(obj, args)
+  //4.如果该函数没有返回对象,则返回this。
+  return ret instanceof Object ? ret : this
+}
+

节流 throttle

+

节流指的是,如果持续触发事件,每隔一段事件,执行一次事件

+
    +
  • 当触发事件时,取出当前的时间戳,减去之前的时间戳(初始为0)。如果大于之前设置的时间周期,则执行函数,并更新时间戳为当前时间戳;如果小于时间周期,就不执行函数。
  • +
+
  // 使用时间戳实现
+  function throttle(func, delay) {
+    let previous = 0
+    return function(...args) {
+      const now = +new Date()
+      const context = this
+      if (now - previous > delay) {
+        func.apply(context, args)
+        previous = now
+      }
+    }
+  }
+

特点:事件会立即执行,但是停止触发后不能再执行。

+
    +
  • 在触发事件时,设置一个定时器,再次触发事件时,如果定时器存在,就不执行;直到定时器执行,然后执行函数,清空定时器。
  • +
+
  // 使用定时器实现
+  function throttle(func, delay) {
+    let timeout
+    let previous = 0
+
+    return function(...args) {
+      const context = this
+
+      if (!timeout) {
+        timeout = setTimeout(function() {
+          timeout = null
+          func.apply(this, args)
+        }, delay)
+      }
+    }
+  }
+

特点:事件会在 n 秒后第一次执行,事件停止触发后依然会执行一次。

+

leading: false 表示禁用第一次执行

+

trailing: false 表示禁用停止触发的回调

+
  function throttle(func, delay, options) {
+    let timeout, context, args, result
+    let previous = 0
+
+    if (!options) {
+      options = {}
+    }
+
+    const later = function() {
+      previous = options.leading === false ? 0 : new Date().getTime()
+      timeout = null
+      func.apply(context, args)
+    }
+
+    const throttled = function() {
+      const now = new Date().getTime()
+      if (!previous && options.leading === false) {
+        previous = now
+      }
+
+      // 下次触发 func 剩余的时间
+      let remaining = delay - (now - previous)
+      context = this
+      args = arguments
+
+      if (remaining <=0 || remaining > delay) {
+        if (timeout) {
+          clearTimeout(timeout)
+          timeout = null
+        }
+
+        previous = now
+        func.apply(context, args)
+
+        if (!timeout) {
+          context = args = null
+        }
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining)
+      }
+    }
+
+    throttled.cancel = function() {
+      clearTimeout(timeout)
+      previous = 0
+      timeout = null
+    }
+
+    return throttled
+  }
+

防抖 debounce

+
  function debounce(func, delay, immediate) {
+    let timeout
+    return function(...args) {
+      const context = this
+
+      if (timeout) {
+        clearTimeout(timeout)
+      }
+
+      if (immediate) {
+        // 如果已经执行了,就不再执行了
+        const callNow = !timeout
+        timeout = setTimeout(function() {
+          timeout = null
+        }, delay)
+
+        if (callNow) {
+          func.apply(context, args)
+        }
+      } else {
+        timeout = setTimeout(function() {
+          func.apply(context, args)
+        }, delay)
+      }
+    }
+  }
+

Promise

+

Promise 构造函数传入的参数是一个执行函数。

+
    +
  • 内部使用 status 记录内部状态(pending、resolved、rejected)
  • +
  • data 记录 resolve 之后得到的数据或是错误
  • +
  • resolve 之后需要执行的函数队列
  • +
  • reject 之后需要执行的函数队列
  • +
  • 向要执行的函数 fn 传入 resolve 函数和 reject 函数,这两个函数都是异步执行的
  • +
  • resolve(data) 函数内部会将 status 置为 resolved,并储存 data,最后调用 resolve 队列中的函数。
  • +
  • reject(err) 函数将 status 置为 rejected,并存储 err,最后调用 reject 队列中的函数
  • +
+
  function Promise(fn) {
+    const promise = this
+    promise.status = 'PENDING'
+    promise.value = null
+    promise.reason = null
+    promise.resolves = []
+    promise.rejects = []
+
+    function resolve(value) {
+      setTimeout(function () {
+        promise.status = 'FULFILLED'
+        promise.resolves.forEach(function (cb) {
+          cb(value)
+        })
+      }, 0)
+    }
+
+    function reject(reason) {
+      setTimeout(function () {
+        promise.status = 'REJECTED'
+        promise.rejects.forEach(function (cb) {
+          cb(reason)
+        })
+      }, 0)
+    }
+
+    promise.then = function (onFulfilled, onRejected) {
+      return new Promise(function (resolve, reject) {
+        function handle(value) {
+          let result = typeof onFulfilled === 'function' && onFulfilled(value) || value
+
+          if (result instanceof Promise) {
+            result.then(function (value) {
+              resolve(value)
+            })
+          } else {
+            resolve(result)
+          }
+        }
+
+        function err(reason) {
+          let result = typeof onRejected === 'function' && onRejected(reason) || reason
+
+          reject(reason)
+        }
+
+        if (promise.status === 'PENDING') {
+          promise.resolves.push(handle)
+          promise.rejects.push(err)
+        } else if (promise.status === 'FULFILLED') {
+          handle(promise.value)
+        } else if (promise.status === 'REJECTED') {
+          err(promise.reason)
+        }
+      })
+    }
+
+    // 全部完成才完成,一个 reject 直接 reject
+    promise.all = function(promiseArr) {
+      return new Promise((resolve, reject) => {
+        // 结果数组
+        let res = []
+        let count = 0
+        function handleData(index, data) {
+          count++
+          res[index] = data
+          if (count === promiseArr.length) {
+            resolve(res)
+          }
+        }
+
+        for (let i = 0; i < promiseArr.length; i++) {
+          Promise.resolve(promiseArr[i]).then((data) => {
+            handleData(i, data)
+          }, reject)
+        }
+      })
+    }
+
+    fn(resolve, reject)
+    return this
+  }
+

浅拷贝

+

浅拷贝和赋值有什么区别呢?

+

对于引用数据类型(数组、对象、函数),赋值只改变了引用的指针,指向同一个对象,所以相互之间会有影响。

+

而浅拷贝会在堆中重新创建内存,拷贝前后对象的基本类型互不影响,但只会拷贝一层,不能对对象中的子对象进行拷贝。

+
// Object
+Object.assign({}, obj)
+{...obj}
+
+// Array
+Array.concat()
+Array.slice(0)
+Array.from(a1)
+[...a1]
+

深拷贝

+
  // 缺点是对 函数、null、undefined 无效,不能处理循环引用
+  JSON.parse(JSON.stringfy())
+
+  // 手写
+  function deepClone(target, map = new Map()) {
+    if (typeof target === 'object') {
+      let cloneTarget = Array.isArray(target) ? [] : {}
+
+      // 解决循环引用的问题
+      if (map.get(target)) {
+        return map.get(target)
+      }
+      map.set(target, cloneTarget)
+
+      for (const key in target) {
+        cloneTarget[key] = deepClone(target[key], map)
+      }
+      return cloneTarget
+    } else {
+      return target
+    }
+  }
+

参考


这个博客用于记录我个人所读所思所想,前端开发相关。

\ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 1180a1c..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Gatsbyjs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 3eb71bc..0000000 --- a/README.md +++ /dev/null @@ -1,97 +0,0 @@ - -

- - Gatsby - -

-

- Gatsby's blog starter -

- -Kick off your project with this blog boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React. - -_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._ - -## 🚀 Quick start - -1. **Create a Gatsby site.** - - Use the Gatsby CLI to create a new site, specifying the blog starter. - - ```sh - # create a new Gatsby site using the blog starter - gatsby new my-blog-starter https://github.com/gatsbyjs/gatsby-starter-blog - ``` - -1. **Start developing.** - - Navigate into your new site’s directory and start it up. - - ```sh - cd my-blog-starter/ - gatsby develop - ``` - -1. **Open the source code and start editing!** - - Your site is now running at `http://localhost:8000`! - - _Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql)._ - - Open the `my-blog-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time! - -## 🧐 What's inside? - -A quick look at the top-level files and directories you'll see in a Gatsby project. - - . - ├── node_modules - ├── src - ├── .gitignore - ├── .prettierrc - ├── gatsby-browser.js - ├── gatsby-config.js - ├── gatsby-node.js - ├── gatsby-ssr.js - ├── LICENSE - ├── package-lock.json - ├── package.json - └── README.md - -1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed. - -2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”. - -3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for. - -4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent. - -5. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser. - -6. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail). - -7. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process. - -8. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering. - -9. **`LICENSE`**: Gatsby is licensed under the MIT license. - -10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).** - -11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project. - -12. **`README.md`**: A text file containing useful reference information about your project. - -## 🎓 Learning Gatsby - -Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start: - -- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process. - -- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar. - -## 💫 Deploy - -[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-blog) - - diff --git a/app-c10812a55a62a7ee38ef.js b/app-c10812a55a62a7ee38ef.js new file mode 100644 index 0000000..1e3386e --- /dev/null +++ b/app-c10812a55a62a7ee38ef.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+ZDr":function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.withPrefix=h,e.withAssetPrefix=function(t){return h(t,v())},e.navigateTo=e.replace=e.push=e.navigate=e.default=void 0;var o=r(n("8OQS")),a=r(n("pVnL")),i=r(n("PJYZ")),u=r(n("VbXa")),c=r(n("17x9")),s=r(n("q1tI")),l=n("YwZP"),p=n("LYrO"),f=n("cu4x");e.parsePath=f.parsePath;var d=function(t){return null==t?void 0:t.startsWith("/")};function h(t,e){var n,r;if(void 0===e&&(e=m()),!g(t))return t;if(t.startsWith("./")||t.startsWith("../"))return t;var o=null!==(n=null!==(r=e)&&void 0!==r?r:v())&&void 0!==n?n:"/";return""+((null==o?void 0:o.endsWith("/"))?o.slice(0,-1):o)+(t.startsWith("/")?t:"/"+t)}var v=function(){return""},m=function(){return""},g=function(t){return t&&!t.startsWith("http://")&&!t.startsWith("https://")&&!t.startsWith("//")};var w=function(t,e){return"number"==typeof t?t:g(t)?d(t)?h(t):function(t,e){return d(t)?t:(0,p.resolve)(t,e)}(t,e):t},y={activeClassName:c.default.string,activeStyle:c.default.object,partiallyActive:c.default.bool},b=function(t){function e(e){var n;(n=t.call(this,e)||this).defaultGetProps=function(t){var e=t.isPartiallyCurrent,r=t.isCurrent;return(n.props.partiallyActive?e:r)?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,a.default)({},n.props.style,n.props.activeStyle)}:null};var r=!1;return"undefined"!=typeof window&&window.IntersectionObserver&&(r=!0),n.state={IOSupported:r},n.handleRef=n.handleRef.bind((0,i.default)(n)),n}(0,u.default)(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){this.props.to===t.to||this.state.IOSupported||___loader.enqueue((0,f.parsePath)(w(this.props.to,window.location.pathname)).pathname)},n.componentDidMount=function(){this.state.IOSupported||___loader.enqueue((0,f.parsePath)(w(this.props.to,window.location.pathname)).pathname)},n.componentWillUnmount=function(){if(this.io){var t=this.io,e=t.instance,n=t.el;e.unobserve(n),e.disconnect()}},n.handleRef=function(t){var e,n,r,o=this;this.props.innerRef&&this.props.innerRef.hasOwnProperty("current")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=(e=t,n=function(){___loader.enqueue((0,f.parsePath)(w(o.props.to,window.location.pathname)).pathname)},(r=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(r.unobserve(e),r.disconnect(),n())}))}))).observe(e),{instance:r,el:e}))},n.render=function(){var t=this,e=this.props,n=e.to,r=e.getProps,i=void 0===r?this.defaultGetProps:r,u=e.onClick,c=e.onMouseEnter,p=(e.activeClassName,e.activeStyle,e.innerRef,e.partiallyActive,e.state),d=e.replace,h=(0,o.default)(e,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace"]);return s.default.createElement(l.Location,null,(function(e){var r=e.location,o=w(n,r.pathname);return g(o)?s.default.createElement(l.Link,(0,a.default)({to:o,state:p,getProps:i,innerRef:t.handleRef,onMouseEnter:function(t){c&&c(t),___loader.hovering((0,f.parsePath)(o).pathname)},onClick:function(e){if(u&&u(e),!(0!==e.button||t.props.target||e.defaultPrevented||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)){e.preventDefault();var n=d,r=encodeURI(o)===window.location.pathname;"boolean"!=typeof d&&r&&(n=!0),window.___navigate(o,{state:p,replace:n})}return!0}},h)):s.default.createElement("a",(0,a.default)({href:o},h))}))},e}(s.default.Component);b.propTypes=(0,a.default)({},y,{onClick:c.default.func,to:c.default.string.isRequired,replace:c.default.bool,state:c.default.object});var P=function(t,e,n){return console.warn('The "'+t+'" method is now deprecated and will be removed in Gatsby v'+n+'. Please use "'+e+'" instead.')},R=s.default.forwardRef((function(t,e){return s.default.createElement(b,(0,a.default)({innerRef:e},t))}));e.default=R;e.navigate=function(t,e){window.___navigate(w(t,window.location.pathname),e)};var S=function(t){P("push","navigate",3),window.___push(w(t,window.location.pathname))};e.push=S;e.replace=function(t){P("replace","navigate",3),window.___replace(w(t,window.location.pathname))};e.navigateTo=function(t){return P("navigateTo","navigate",3),S(t)}},"/hTd":function(t,e,n){"use strict";e.__esModule=!0,e.SessionStorage=void 0;var r=function(){function t(){}var e=t.prototype;return e.read=function(t,e){var n=this.getStateKey(t,e);try{var r=window.sessionStorage.getItem(n);return r?JSON.parse(r):0}catch(o){return window&&window.___GATSBY_REACT_ROUTER_SCROLL&&window.___GATSBY_REACT_ROUTER_SCROLL[n]?window.___GATSBY_REACT_ROUTER_SCROLL[n]:0}},e.save=function(t,e,n){var r=this.getStateKey(t,e),o=JSON.stringify(n);try{window.sessionStorage.setItem(r,o)}catch(a){window&&window.___GATSBY_REACT_ROUTER_SCROLL||(window.___GATSBY_REACT_ROUTER_SCROLL={}),window.___GATSBY_REACT_ROUTER_SCROLL[r]=JSON.parse(o)}},e.getStateKey=function(t,e){var n="@@scroll|"+t.pathname;return null==e?n:n+"|"+e},t}();e.SessionStorage=r},"284h":function(t,e,n){var r=n("cDf5");function o(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return o=function(){return t},t}t.exports=function(t){if(t&&t.__esModule)return t;if(null===t||"object"!==r(t)&&"function"!=typeof t)return{default:t};var e=o();if(e&&e.has(t))return e.get(t);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var u=a?Object.getOwnPropertyDescriptor(t,i):null;u&&(u.get||u.set)?Object.defineProperty(n,i,u):n[i]=t[i]}return n.default=t,e&&e.set(t,n),n}},"30RF":function(t,e,n){"use strict";n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return p})),n.d(e,"c",(function(){return f})),n.d(e,"b",(function(){return d}));var r=n("LYrO"),o=n("cSJ8"),a=function(t){return void 0===t?t:"/"===t?"/":"/"===t.charAt(t.length-1)?t.slice(0,-1):t},i=new Map,u=[],c=function(t){var e=decodeURIComponent(t);return Object(o.a)(e,"").split("#")[0].split("?")[0]};function s(t){return t.startsWith("/")||t.startsWith("https://")||t.startsWith("http://")?t:new URL(t,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}var l=function(t){u=t},p=function(t){var e=h(t),n=u.map((function(t){var e=t.path;return{path:t.matchPath,originalPath:e}})),o=Object(r.pick)(n,e);return o?a(o.route.originalPath):null},f=function(t){var e=h(t),n=u.map((function(t){var e=t.path;return{path:t.matchPath,originalPath:e}})),o=Object(r.pick)(n,e);return o?o.params:{}},d=function(t){var e=c(s(t));if(i.has(e))return i.get(e);var n=p(e);return n||(n=h(t)),i.set(e,n),n},h=function(t){var e=c(s(t));return"/index.html"===e&&(e="/"),e=a(e)}},"3uz+":function(t,e,n){"use strict";e.__esModule=!0,e.useScrollRestoration=function(t){var e=(0,a.useLocation)(),n=(0,o.useContext)(r.ScrollContext),i=(0,o.useRef)();return(0,o.useLayoutEffect)((function(){if(i.current){var r=n.read(e,t);i.current.scrollTo(0,r||0)}}),[]),{ref:i,onScroll:function(){i.current&&n.save(e,t,i.current.scrollTop)}}};var r=n("Enzk"),o=n("q1tI"),a=n("YwZP")},"5yr3":function(t,e,n){"use strict";var r=function(t){return t=t||Object.create(null),{on:function(e,n){(t[e]||(t[e]=[])).push(n)},off:function(e,n){t[e]&&t[e].splice(t[e].indexOf(n)>>>0,1)},emit:function(e,n){(t[e]||[]).slice().map((function(t){t(n)})),(t["*"]||[]).slice().map((function(t){t(e,n)}))}}}();e.a=r},"6qGY":function(t,e){t.exports=Object.assign},"7hJ6":function(t,e,n){"use strict";e.__esModule=!0,e.useScrollRestoration=e.ScrollContainer=e.ScrollContext=void 0;var r=n("Enzk");e.ScrollContext=r.ScrollHandler;var o=n("hd9s");e.ScrollContainer=o.ScrollContainer;var a=n("3uz+");e.useScrollRestoration=a.useScrollRestoration},"8OQS":function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}},"94VI":function(t,e){e.polyfill=function(t){return t}},"9Xx/":function(t,e,n){"use strict";n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return s})),n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return i}));var r=Object.assign||function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=c.state,l=c.replace,p=void 0!==l&&l;if("number"==typeof e)t.history.go(e);else{s=r({},s,{key:Date.now()+""});try{i||p?t.history.replaceState(s,null,e):t.history.pushState(s,null,e)}catch(d){t.location[p?"replace":"assign"](e)}}a=o(t),i=!0;var f=new Promise((function(t){return u=t}));return n.forEach((function(t){return t({location:a,action:"PUSH"})})),f}}},i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",e=t.indexOf("?"),n={pathname:e>-1?t.substr(0,e):t,search:e>-1?t.substr(e):""},r=0,o=[n],a=[null];return{get location(){return o[r]},addEventListener:function(t,e){},removeEventListener:function(t,e){},history:{get entries(){return o},get index(){return r},get state(){return a[r]},pushState:function(t,e,n){var i=n.split("?"),u=i[0],c=i[1],s=void 0===c?"":c;r++,o.push({pathname:u,search:s.length?"?"+s:s}),a.push(t)},replaceState:function(t,e,n){var i=n.split("?"),u=i[0],c=i[1],s=void 0===c?"":c;o[r]={pathname:u,search:s},a[r]=t},go:function(t){var e=r+t;e<0||e>a.length-1||(r=e)}}}},u=!("undefined"==typeof window||!window.document||!window.document.createElement),c=a(u?window:i()),s=c.navigate},"9hXx":function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;e.default=function(t,e){if(!Array.isArray(e))return"manifest.webmanifest";var n=e.find((function(e){return t.startsWith(e.start_url)}));return n?"manifest_"+n.lang+".webmanifest":"manifest.webmanifest"}},BOnt:function(t,e,n){"use strict";var r=n("TqRt"),o=n("Wbzz"),a=r(n("hqbx"));e.onClientEntry=function(t,e){void 0===e&&(e={}),(0,a.default)(window,e,(function(t){(0,o.navigate)(t)}))}},Enzk:function(t,e,n){"use strict";var r=n("284h"),o=n("TqRt");e.__esModule=!0,e.ScrollHandler=e.ScrollContext=void 0;var a=o(n("PJYZ")),i=o(n("VbXa")),u=r(n("q1tI")),c=o(n("17x9")),s=n("/hTd"),l=u.createContext(new s.SessionStorage);e.ScrollContext=l,l.displayName="GatsbyScrollContext";var p=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),o=0;ot.length)&&(e=t.length);for(var n=0,r=new Array(e);ne.score?-1:t.index-e.index}))},m=function(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")},g=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r0})))&&n.length>0?"?"+n.join("&"):"")},w=["uri","path"],y=function(t,e){var n=Object.keys(t);return n.length===Object.keys(e).length&&n.every((function(n){return e.hasOwnProperty(n)&&t[n]===e[n]}))}},LeKB:function(t,e,n){t.exports=[{plugin:n("pWkz"),options:{plugins:[]}},{plugin:n("npZl"),options:{plugins:[],name:"Cube Blog",short_name:"Cube",start_url:"/",background_color:"#ffffff",theme_color:"#663399",display:"minimal-ui",icon:"content/assets/icon.png",cache_busting_mode:"query",include_favicon:!0,legacy:!0,theme_color_in_head:!0,cacheDigest:"8c19a894ebc3f54d282a8f2418cf5398"}},{plugin:n("e/UW"),options:{plugins:[]}},{plugin:n("hZAw"),options:{plugins:[],pathToConfigModule:"src/utils/typography"}},{plugin:n("BOnt"),options:{plugins:[]}},{plugin:n("GddB"),options:{plugins:[]}}]},MMVs:function(t,e,n){t.exports=function(){var t=!1;-1!==navigator.appVersion.indexOf("MSIE 10")&&(t=!0);var e,n=[],r="object"==typeof document&&document,o=t?r.documentElement.doScroll("left"):r.documentElement.doScroll,a=r&&(o?/^loaded|^c/:/^loaded|^i|^c/).test(r.readyState);return!a&&r&&r.addEventListener("DOMContentLoaded",e=function(){for(r.removeEventListener("DOMContentLoaded",e),a=1;e=n.shift();)e()}),function(t){a?setTimeout(t,0):n.push(t)}}()},NSX3:function(t,e,n){"use strict";n.r(e);var r=n("xtsi");"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then((function(t){t.addEventListener("updatefound",(function(){Object(r.apiRunner)("onServiceWorkerUpdateFound",{serviceWorker:t});var e=t.installing;console.log("installingWorker",e),e.addEventListener("statechange",(function(){switch(e.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,Object(r.apiRunner)("onServiceWorkerUpdateReady",{serviceWorker:t}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),Object(r.apiRunner)("onServiceWorkerInstalled",{serviceWorker:t}));break;case"redundant":console.error("The installing service worker became redundant."),Object(r.apiRunner)("onServiceWorkerRedundant",{serviceWorker:t});break;case"activated":Object(r.apiRunner)("onServiceWorkerActive",{serviceWorker:t})}}))}))})).catch((function(t){console.error("Error during service worker registration:",t)}))},NsGk:function(t,e,n){e.components={"component---node-modules-gatsby-plugin-offline-app-shell-js":function(){return n.e(5).then(n.t.bind(null,"MqWW",7))},"component---src-pages-404-js":function(){return Promise.all([n.e(0),n.e(1),n.e(6)]).then(n.bind(null,"w2l6"))},"component---src-pages-index-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(7)]).then(n.bind(null,"RXBc"))},"component---src-templates-blog-post-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(8)]).then(n.bind(null,"yZlL"))}}},PJYZ:function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}},QLaP:function(t,e,n){"use strict";t.exports=function(t,e,n,r,o,a,i,u){if(!t){var c;if(void 0===e)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,a,i,u],l=0;(c=new Error(e.replace(/%s/g,(function(){return s[l++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},TqRt:function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},UxWs:function(t,e,n){"use strict";n.r(e);var r=n("dI71"),o=n("xtsi"),a=n("q1tI"),i=n.n(a),u=n("i8i4"),c=n.n(u),s=n("YwZP"),l=n("7hJ6"),p=n("MMVs"),f=n.n(p),d=n("Wbzz"),h=n("emEt"),v=n("YLt+"),m=n("5yr3"),g={id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},"aria-live":"assertive","aria-atomic":"true"},w=n("9Xx/"),y=n("+ZDr"),b=v.reduce((function(t,e){return t[e.fromPath]=e,t}),{});function P(t){var e=b[t];return null!=e&&(window.___replace(e.toPath),!0)}var R=function(t,e){P(t.pathname)||Object(o.apiRunner)("onPreRouteUpdate",{location:t,prevLocation:e})},S=function(t,e){P(t.pathname)||Object(o.apiRunner)("onRouteUpdate",{location:t,prevLocation:e})},O=function(t,e){if(void 0===e&&(e={}),"number"!=typeof t){var n=Object(y.parsePath)(t).pathname,r=b[n];if(r&&(t=r.toPath,n=Object(y.parsePath)(t).pathname),window.___swUpdated)window.location=n;else{var a=setTimeout((function(){m.a.emit("onDelayedLoadPageResources",{pathname:n}),Object(o.apiRunner)("onRouteUpdateDelayed",{location:window.location})}),1e3);h.default.loadPage(n).then((function(r){if(!r||r.status===h.PageResourceStatus.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(a);r&&r.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),console.log("Site has changed on server. Reloading browser"),window.location=n),Object(s.navigate)(t,e),clearTimeout(a)}))}}else w.c.navigate(t)};function _(t,e){var n=this,r=e.location,a=r.pathname,i=r.hash,u=Object(o.apiRunner)("shouldUpdateScroll",{prevRouterProps:t,pathname:a,routerProps:{location:r},getSavedScrollPosition:function(t){return n._stateStorage.read(t)}});if(u.length>0)return u[u.length-1];if(t&&t.location.pathname===a)return i?decodeURI(i.slice(1)):[0,0];return!0}var E=function(t){function e(e){var n;return(n=t.call(this,e)||this).announcementRef=i.a.createRef(),n}Object(r.a)(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){var n=this;requestAnimationFrame((function(){var t="new page at "+n.props.location.pathname;document.title&&(t=document.title);var e=document.querySelectorAll("#gatsby-focus-wrapper h1");e&&e.length&&(t=e[0].textContent);var r="Navigated to "+t;n.announcementRef.current&&(n.announcementRef.current.innerText!==r&&(n.announcementRef.current.innerText=r))}))},n.render=function(){return i.a.createElement("div",Object.assign({},g,{ref:this.announcementRef}))},e}(i.a.Component),j=function(t){function e(e){var n;return n=t.call(this,e)||this,R(e.location,null),n}Object(r.a)(e,t);var n=e.prototype;return n.componentDidMount=function(){S(this.props.location,null)},n.componentDidUpdate=function(t,e,n){n&&S(this.props.location,t.location)},n.getSnapshotBeforeUpdate=function(t){return this.props.location.pathname!==t.location.pathname&&(R(this.props.location,t.location),!0)},n.render=function(){return i.a.createElement(i.a.Fragment,null,this.props.children,i.a.createElement(E,{location:location}))},e}(i.a.Component),C=n("IOVJ"),x=n("NsGk"),k=n.n(x);function L(t,e){for(var n in t)if(!(n in e))return!0;for(var r in e)if(t[r]!==e[r])return!0;return!1}var D=function(t){function e(e){var n;n=t.call(this)||this;var r=e.location,o=e.pageResources;return n.state={location:Object.assign({},r),pageResources:o||h.default.loadPageSync(r.pathname)},n}Object(r.a)(e,t),e.getDerivedStateFromProps=function(t,e){var n=t.location;return e.location.href!==n.href?{pageResources:h.default.loadPageSync(n.pathname),location:Object.assign({},n)}:{location:Object.assign({},n)}};var n=e.prototype;return n.loadResources=function(t){var e=this;h.default.loadPage(t).then((function(n){n&&n.status!==h.PageResourceStatus.Error?e.setState({location:Object.assign({},window.location),pageResources:n}):(window.history.replaceState({},"",location.href),window.location=t)}))},n.shouldComponentUpdate=function(t,e){return e.pageResources?this.state.pageResources!==e.pageResources||(this.state.pageResources.component!==e.pageResources.component||(this.state.pageResources.json!==e.pageResources.json||(!(this.state.location.key===e.location.key||!e.pageResources.page||!e.pageResources.page.matchPath&&!e.pageResources.page.path)||function(t,e,n){return L(t.props,e)||L(t.state,n)}(this,t,e)))):(this.loadResources(t.location.pathname),!1)},n.render=function(){return this.props.children(this.state)},e}(i.a.Component),T=n("cSJ8"),A=n("JeVI"),q=new h.ProdLoader(k.a,A);Object(h.setLoader)(q),q.setApiRunner(o.apiRunner),window.asyncRequires=k.a,window.___emitter=m.a,window.___loader=h.publicLoader,w.c.listen((function(t){t.location.action=t.action})),window.___push=function(t){return O(t,{replace:!1})},window.___replace=function(t){return O(t,{replace:!0})},window.___navigate=function(t,e){return O(t,e)},P(window.location.pathname),Object(o.apiRunnerAsync)("onClientEntry").then((function(){Object(o.apiRunner)("registerServiceWorker").length>0&&n("NSX3");var t=function(t){return i.a.createElement(s.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},i.a.createElement(C.a,t))},e=i.a.createContext({}),a=function(t){function n(){return t.apply(this,arguments)||this}return Object(r.a)(n,t),n.prototype.render=function(){var t=this.props.children;return i.a.createElement(s.Location,null,(function(n){var r=n.location;return i.a.createElement(D,{location:r},(function(n){var r=n.pageResources,o=n.location,a=Object(h.getStaticQueryResults)();return i.a.createElement(d.StaticQueryContext.Provider,{value:a},i.a.createElement(e.Provider,{value:{pageResources:r,location:o}},t))}))}))},n}(i.a.Component),u=function(n){function o(){return n.apply(this,arguments)||this}return Object(r.a)(o,n),o.prototype.render=function(){var n=this;return i.a.createElement(e.Consumer,null,(function(e){var r=e.pageResources,o=e.location;return i.a.createElement(j,{location:o},i.a.createElement(l.ScrollContext,{location:o,shouldUpdateScroll:_},i.a.createElement(s.Router,{basepath:"",location:o,id:"gatsby-focus-wrapper"},i.a.createElement(t,Object.assign({path:"/404.html"===r.page.path?Object(T.a)(o.pathname,""):encodeURI(r.page.matchPath||r.page.path)},n.props,{location:o,pageResources:r},r.json)))))}))},o}(i.a.Component),p=window,v=p.pagePath,m=p.location;v&&""+v!==m.pathname&&!(q.findMatchPath(Object(T.a)(m.pathname,""))||"/404.html"===v||v.match(/^\/404\/?$/)||v.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&Object(s.navigate)(""+v+m.search+m.hash,{replace:!0}),h.publicLoader.loadPage(m.pathname).then((function(t){if(!t||t.status===h.PageResourceStatus.Error)throw new Error("page resources for "+m.pathname+" not found. Not rendering React");window.___webpackCompilationHash=t.page.webpackCompilationHash;var e=Object(o.apiRunner)("wrapRootElement",{element:i.a.createElement(u,null)},i.a.createElement(u,null),(function(t){return{element:t.result}})).pop(),n=function(){return i.a.createElement(a,null,e)},r=Object(o.apiRunner)("replaceHydrateFunction",void 0,c.a.hydrate)[0];f()((function(){r(i.a.createElement(n,null),"undefined"!=typeof window?document.getElementById("___gatsby"):void 0,(function(){Object(o.apiRunner)("onInitialClientRender")}))}))}))}))},VbXa:function(t,e){t.exports=function(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}},Wbzz:function(t,e,n){"use strict";n.r(e),n.d(e,"graphql",(function(){return v})),n.d(e,"StaticQueryContext",(function(){return p})),n.d(e,"StaticQuery",(function(){return d})),n.d(e,"useStaticQuery",(function(){return h})),n.d(e,"prefetchPathname",(function(){return l})),n.d(e,"unstable_collectionGraphql",(function(){return m}));var r=n("q1tI"),o=n.n(r),a=n("+ZDr"),i=n.n(a);n.d(e,"Link",(function(){return i.a})),n.d(e,"withAssetPrefix",(function(){return a.withAssetPrefix})),n.d(e,"withPrefix",(function(){return a.withPrefix})),n.d(e,"parsePath",(function(){return a.parsePath})),n.d(e,"navigate",(function(){return a.navigate})),n.d(e,"push",(function(){return a.push})),n.d(e,"replace",(function(){return a.replace})),n.d(e,"navigateTo",(function(){return a.navigateTo}));var u=n("7hJ6");n.d(e,"useScrollRestoration",(function(){return u.useScrollRestoration}));var c=n("lw3w"),s=n.n(c);n.d(e,"PageRenderer",(function(){return s.a}));var l=n("emEt").default.enqueue,p=o.a.createContext({});function f(t){var e=t.staticQueryData,n=t.data,r=t.query,a=t.render,i=n?n.data:e[r]&&e[r].data;return o.a.createElement(o.a.Fragment,null,i&&a(i),!i&&o.a.createElement("div",null,"Loading (StaticQuery)"))}var d=function(t){var e=t.data,n=t.query,r=t.render,a=t.children;return o.a.createElement(p.Consumer,null,(function(t){return o.a.createElement(f,{data:e,query:n,render:r||a,staticQueryData:t})}))},h=function(t){var e;o.a.useContext;var n=o.a.useContext(p);if(isNaN(Number(t)))throw new Error("useStaticQuery was called with a string but expects to be called using `graphql`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql`"+t+"`);\n");if(null==n||null===(e=n[t])||void 0===e?void 0:e.data)return n[t].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")};function v(){throw new Error("It appears like Gatsby is misconfigured. Gatsby related `graphql` calls are supposed to only be evaluated at compile time, and then compiled away. Unfortunately, something went wrong and the query was left in the compiled code.\n\nUnless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.")}function m(){return null}},"YLt+":function(t){t.exports=JSON.parse("[]")},YwZP:function(t,e,n){"use strict";n.r(e),n.d(e,"Link",(function(){return D})),n.d(e,"Location",(function(){return y})),n.d(e,"LocationProvider",(function(){return b})),n.d(e,"Match",(function(){return F})),n.d(e,"Redirect",(function(){return W})),n.d(e,"Router",(function(){return S})),n.d(e,"ServerLocation",(function(){return P})),n.d(e,"isRedirect",(function(){return A})),n.d(e,"redirectTo",(function(){return q})),n.d(e,"useLocation",(function(){return I})),n.d(e,"useNavigate",(function(){return M})),n.d(e,"useParams",(function(){return N})),n.d(e,"useMatch",(function(){return G})),n.d(e,"BaseContext",(function(){return R}));var r=n("q1tI"),o=n.n(r),a=(n("17x9"),n("QLaP")),i=n.n(a),u=n("nqlD"),c=n.n(u),s=n("94VI"),l=n("LYrO");n.d(e,"matchPath",(function(){return l.match}));var p=n("9Xx/");n.d(e,"createHistory",(function(){return p.a})),n.d(e,"createMemorySource",(function(){return p.b})),n.d(e,"navigate",(function(){return p.d})),n.d(e,"globalHistory",(function(){return p.c}));var f=Object.assign||function(t){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function m(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var g=function(t,e){var n=c()(e);return n.displayName=t,n},w=g("Location"),y=function(t){var e=t.children;return o.a.createElement(w.Consumer,null,(function(t){return t?e(t):o.a.createElement(b,null,e)}))},b=function(t){function e(){var n,r;h(this,e);for(var o=arguments.length,a=Array(o),i=0;i-1?(a=e.substring(0,r),i=e.substring(r)):a=e,o.a.createElement(w.Provider,{value:{location:{pathname:a,search:i,hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},R=g("Base",{baseuri:"/",basepath:"/"}),S=function(t){return o.a.createElement(R.Consumer,null,(function(e){return o.a.createElement(y,null,(function(n){return o.a.createElement(O,f({},e,n,t))}))}))},O=function(t){function e(){return h(this,e),v(this,t.apply(this,arguments))}return m(e,t),e.prototype.render=function(){var t=this.props,e=t.location,n=t.navigate,r=t.basepath,a=t.primary,i=t.children,u=(t.baseuri,t.component),c=void 0===u?"div":u,s=d(t,["location","navigate","basepath","primary","children","baseuri","component"]),p=o.a.Children.toArray(i).reduce((function(t,e){var n=J(r)(e);return t.concat(n)}),[]),h=e.pathname,v=Object(l.pick)(p,h);if(v){var m=v.params,g=v.uri,w=v.route,y=v.route.value;r=w.default?r:w.path.replace(/\*$/,"");var b=f({},m,{uri:g,location:e,navigate:function(t,e){return n(Object(l.resolve)(t,g),e)}}),P=o.a.cloneElement(y,b,y.props.children?o.a.createElement(S,{location:e,primary:a},y.props.children):void 0),O=a?E:c,_=a?f({uri:g,location:e,component:c},s):s;return o.a.createElement(R.Provider,{value:{baseuri:g,basepath:r}},o.a.createElement(O,_,P))}return null},e}(o.a.PureComponent);O.defaultProps={primary:!0};var _=g("Focus"),E=function(t){var e=t.uri,n=t.location,r=t.component,a=d(t,["uri","location","component"]);return o.a.createElement(_.Consumer,null,(function(t){return o.a.createElement(x,f({},a,{component:r,requestFocus:t,uri:e,location:n}))}))},j=!0,C=0,x=function(t){function e(){var n,r;h(this,e);for(var o=arguments.length,a=Array(o),i=0;i script[src],\n head > link[href],\n head > style[data-href]\n "),a=[].slice.call(o).map((function(t){return t.src||t.href||t.getAttribute("data-href")})),i=[];r.forEach((function(t){var r=e(t);i.push.apply(i,r),n.active.postMessage({gatsbyApi:"setPathResources",path:t,resources:r})})),[].concat(a,i).forEach((function(t){var e=document.createElement("link");e.rel="prefetch",e.href=t,e.onload=e.remove,e.onerror=e.remove,document.head.appendChild(e)}))}},e.onPostPrefetchPathname=function(t){var e=t.pathname,n=t.getResourceURLsForPathname;if(!window.___swUpdated&&"serviceWorker"in navigator){var o=navigator.serviceWorker;null===o.controller?r.push(e):o.controller.postMessage({gatsbyApi:"setPathResources",path:e,resources:n(e)})}}},emEt:function(t,e,n){"use strict";n.r(e),n.d(e,"PageResourceStatus",(function(){return l})),n.d(e,"BaseLoader",(function(){return m})),n.d(e,"ProdLoader",(function(){return w})),n.d(e,"setLoader",(function(){return y})),n.d(e,"publicLoader",(function(){return b})),n.d(e,"getStaticQueryResults",(function(){return P}));var r=n("dI71"),o=n("KQm4"),a=function(t){if("undefined"==typeof document)return!1;var e=document.createElement("link");try{if(e.relList&&"function"==typeof e.relList.supports)return e.relList.supports(t)}catch(n){return!1}return!1}("prefetch")?function(t,e){return new Promise((function(n,r){if("undefined"!=typeof document){var o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",t),Object.keys(e).forEach((function(t){o.setAttribute(t,e[t])})),o.onload=n,o.onerror=r,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}else r()}))}:function(t){return new Promise((function(e,n){var r=new XMLHttpRequest;r.open("GET",t,!0),r.onload=function(){200===r.status?e():n()},r.send(null)}))},i={},u=function(t,e){return new Promise((function(n){i[t]?n():a(t,e).then((function(){n(),i[t]=!0})).catch((function(){}))}))},c=n("5yr3"),s=n("30RF"),l={Error:"error",Success:"success"},p=function(t){return t&&t.default||t},f=function(t){var e;return"/page-data/"+("/"===t?"index":e=(e="/"===(e=t)[0]?e.slice(1):e).endsWith("/")?e.slice(0,-1):e)+"/page-data.json"};function d(t,e){return void 0===e&&(e="GET"),new Promise((function(n,r){var o=new XMLHttpRequest;o.open(e,t,!0),o.onreadystatechange=function(){4==o.readyState&&n(o)},o.send(null)}))}var h,v=function(t,e){void 0===e&&(e=null);var n={componentChunkName:t.componentChunkName,path:t.path,webpackCompilationHash:t.webpackCompilationHash,matchPath:t.matchPath,staticQueryHashes:t.staticQueryHashes};return{component:e,json:t.result,page:n}},m=function(){function t(t,e){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=t,Object(s.d)(e)}var e=t.prototype;return e.memoizedGet=function(t){var e=this,n=this.inFlightNetworkRequests.get(t);return n||(n=d(t,"GET"),this.inFlightNetworkRequests.set(t,n)),n.then((function(n){return e.inFlightNetworkRequests.delete(t),n})).catch((function(n){throw e.inFlightNetworkRequests.delete(t),n}))},e.setApiRunner=function(t){this.apiRunner=t,this.prefetchDisabled=t("disableCorePrefetching").some((function(t){return t}))},e.fetchPageDataJson=function(t){var e=this,n=t.pagePath,r=t.retries,o=void 0===r?0:r,a=f(n);return this.memoizedGet(a).then((function(r){var a=r.status,i=r.responseText;if(200===a)try{var u=JSON.parse(i);if(void 0===u.path)throw new Error("not a valid pageData response");return Object.assign(t,{status:l.Success,payload:u})}catch(c){}return 404===a||200===a?"/404.html"===n?Object.assign(t,{status:l.Error}):e.fetchPageDataJson(Object.assign(t,{pagePath:"/404.html",notFound:!0})):500===a?Object.assign(t,{status:l.Error}):o<3?e.fetchPageDataJson(Object.assign(t,{retries:o+1})):Object.assign(t,{status:l.Error})}))},e.loadPageDataJson=function(t){var e=this,n=Object(s.b)(t);return this.pageDataDb.has(n)?Promise.resolve(this.pageDataDb.get(n)):this.fetchPageDataJson({pagePath:n}).then((function(t){return e.pageDataDb.set(n,t),t}))},e.findMatchPath=function(t){return Object(s.a)(t)},e.loadPage=function(t){var e=this,n=Object(s.b)(t);if(this.pageDb.has(n)){var r=this.pageDb.get(n);return Promise.resolve(r.payload)}if(this.inFlightDb.has(n))return this.inFlightDb.get(n);var o=Promise.all([this.loadAppData(),this.loadPageDataJson(n)]).then((function(t){var r=t[1];if(r.status===l.Error)return{status:l.Error};var o=r.payload,a=o,i=a.componentChunkName,u=a.staticQueryHashes,s=void 0===u?[]:u,p={},f=e.loadComponent(i).then((function(e){var n;return p.createdAt=new Date,e?(p.status=l.Success,!0===r.notFound&&(p.notFound=!0),o=Object.assign(o,{webpackCompilationHash:t[0]?t[0].webpackCompilationHash:""}),n=v(o,e)):p.status=l.Error,n})),d=Promise.all(s.map((function(t){if(e.staticQueryDb[t]){var n=e.staticQueryDb[t];return{staticQueryHash:t,jsonPayload:n}}return e.memoizedGet("/page-data/sq/d/"+t+".json").then((function(e){var n=JSON.parse(e.responseText);return{staticQueryHash:t,jsonPayload:n}}))}))).then((function(t){var n={};return t.forEach((function(t){var r=t.staticQueryHash,o=t.jsonPayload;n[r]=o,e.staticQueryDb[r]=o})),n}));return Promise.all([f,d]).then((function(t){var r,o=t[0],a=t[1];return o&&(r=Object.assign({},o,{staticQueryResults:a}),p.payload=r,c.a.emit("onPostLoadPageResources",{page:r,pageResources:r})),e.pageDb.set(n,p),r}))}));return o.then((function(t){e.inFlightDb.delete(n)})).catch((function(t){throw e.inFlightDb.delete(n),t})),this.inFlightDb.set(n,o),o},e.loadPageSync=function(t){var e=Object(s.b)(t);if(this.pageDb.has(e))return this.pageDb.get(e).payload},e.shouldPrefetch=function(t){return!!function(){if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0}()&&!this.pageDb.has(t)},e.prefetch=function(t){var e=this;if(!this.shouldPrefetch(t))return!1;if(this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled)return!1;var n=Object(s.b)(t);return this.doPrefetch(n).then((function(){e.prefetchCompleted.has(t)||(e.apiRunner("onPostPrefetchPathname",{pathname:t}),e.prefetchCompleted.add(t))})),!0},e.doPrefetch=function(t){throw new Error("doPrefetch not implemented")},e.hovering=function(t){this.loadPage(t)},e.getResourceURLsForPathname=function(t){var e=Object(s.b)(t),n=this.pageDataDb.get(e);if(n){var r=v(n.payload);return[].concat(Object(o.a)(g(r.page.componentChunkName)),[f(e)])}return null},e.isPageNotFound=function(t){var e=Object(s.b)(t),n=this.pageDb.get(e);return n&&!0===n.notFound},e.loadAppData=function(t){var e=this;return void 0===t&&(t=0),this.memoizedGet("/page-data/app-data.json").then((function(n){var r,o=n.status,a=n.responseText;if(200!==o&&t<3)return e.loadAppData(t+1);if(200===o)try{var i=JSON.parse(a);if(void 0===i.webpackCompilationHash)throw new Error("not a valid app-data response");r=i}catch(u){}return r}))},t}(),g=function(t){return(window.___chunkMapping[t]||[]).map((function(t){return""+t}))},w=function(t){function e(e,n){return t.call(this,(function(t){return e.components[t]?e.components[t]().then(p).catch((function(){return null})):Promise.resolve()}),n)||this}Object(r.a)(e,t);var n=e.prototype;return n.doPrefetch=function(t){var e=this,n=f(t);return u(n,{crossOrigin:"anonymous",as:"fetch"}).then((function(){return e.loadPageDataJson(t)})).then((function(t){if(t.status!==l.Success)return Promise.resolve();var e=t.payload,n=e.componentChunkName,r=g(n);return Promise.all(r.map(u)).then((function(){return e}))}))},n.loadPageDataJson=function(e){return t.prototype.loadPageDataJson.call(this,e).then((function(t){return t.notFound?d(e,"HEAD").then((function(e){return 200===e.status?{status:l.Error}:t})):t}))},e}(m),y=function(t){h=t},b={getResourcesForPathname:function(t){return console.warn("Warning: getResourcesForPathname is deprecated. Use loadPage instead"),h.i.loadPage(t)},getResourcesForPathnameSync:function(t){return console.warn("Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead"),h.i.loadPageSync(t)},enqueue:function(t){return h.prefetch(t)},getResourceURLsForPathname:function(t){return h.getResourceURLsForPathname(t)},loadPage:function(t){return h.loadPage(t)},loadPageSync:function(t){return h.loadPageSync(t)},prefetch:function(t){return h.prefetch(t)},isPageNotFound:function(t){return h.isPageNotFound(t)},hovering:function(t){return h.hovering(t)},loadAppData:function(){return h.loadAppData()}};e.default=b;function P(){return h.staticQueryDb}},hZAw:function(t,e,n){"use strict"},hd9s:function(t,e,n){"use strict";var r=n("284h"),o=n("TqRt");e.__esModule=!0,e.ScrollContainer=void 0;var a=o(n("pVnL")),i=o(n("VbXa")),u=r(n("q1tI")),c=o(n("i8i4")),s=o(n("17x9")),l=n("Enzk"),p=n("YwZP"),f={scrollKey:s.default.string.isRequired,shouldUpdateScroll:s.default.func,children:s.default.element.isRequired},d=function(t){function e(e){return t.call(this,e)||this}(0,i.default)(e,t);var n=e.prototype;return n.componentDidMount=function(){var t=this,e=c.default.findDOMNode(this),n=this.props,r=n.location,o=n.scrollKey;if(e){e.addEventListener("scroll",(function(){t.props.context.save(r,o,e.scrollTop)}));var a=this.props.context.read(r,o);e.scrollTo(0,a||0)}},n.render=function(){return this.props.children},e}(u.Component),h=function(t){return u.createElement(p.Location,null,(function(e){var n=e.location;return u.createElement(l.ScrollContext.Consumer,null,(function(e){return u.createElement(d,(0,a.default)({},t,{context:e,location:n}))}))}))};e.ScrollContainer=h,h.propTypes=f},hqbx:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=function(t,e,n){var r=v(n,e);return t.addEventListener("click",r),function(){return t.removeEventListener("click",r)}},e.routeThroughBrowserOrApp=e.hashShouldBeFollowed=e.pathIsNotHandledByApp=e.urlsAreOnSameOrigin=e.authorIsForcingNavigation=e.anchorsTargetIsEquivalentToSelf=e.findClosestAnchor=e.navigationWasHandledElsewhere=e.slashedPathname=e.userIsForcingNavigation=void 0;var o=r(n("oxjq")),a=n("Wbzz"),i=function(t){return 0!==t.button||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey};e.userIsForcingNavigation=i;var u=function(t){return"/"===t[0]?t:"/"+t};e.slashedPathname=u;var c=function(t){return t.defaultPrevented};e.navigationWasHandledElsewhere=c;var s=function(t){for(;t.parentNode;t=t.parentNode)if("a"===t.nodeName.toLowerCase())return t;return null};e.findClosestAnchor=s;var l=function(t){return!1===t.hasAttribute("target")||null==t.target||["_self",""].includes(t.target)||"_parent"===t.target&&(!t.ownerDocument.defaultView.parent||t.ownerDocument.defaultView.parent===t.ownerDocument.defaultView)||"_top"===t.target&&(!t.ownerDocument.defaultView.top||t.ownerDocument.defaultView.top===t.ownerDocument.defaultView)};e.anchorsTargetIsEquivalentToSelf=l;var p=function(t){return!0===t.hasAttribute("download")||!1===l(t)};e.authorIsForcingNavigation=p;var f=function(t,e){return t.protocol===e.protocol&&t.host===e.host};e.urlsAreOnSameOrigin=f;var d=function(t,e){return!1===e.test(u(t.pathname))||-1!==t.pathname.search(/^.*\.((?!htm)[a-z0-9]{1,5})$/i)};e.pathIsNotHandledByApp=d;var h=function(t,e){return""!==e.hash&&(""===e.pathname||e.pathname===t.pathname)};e.hashShouldBeFollowed=h;var v=function(t,e){return function(n){if(window.___failedResources)return!0;if(i(n))return!0;if(c(n))return!0;var r=s(n.target);if(null==r)return!0;if(p(r))return!0;var l=document.createElement("a");""!==r.href&&(l.href=r.href),r.href instanceof SVGAnimatedString&&(l.href=r.href.animVal);var v=document.createElement("a");if(v.href=window.location.href,!1===f(v,l))return!0;var m=new RegExp("^"+(0,o.default)((0,a.withPrefix)("/")));if(d(l,m))return!0;if(h(v,l))return!0;if(e.excludePattern&&new RegExp(e.excludePattern).test(l.pathname))return!0;n.preventDefault();var g=u(l.pathname).replace(m,"/");return t(""+g+l.search+l.hash),!1}};e.routeThroughBrowserOrApp=v},lw3w:function(t,e,n){var r;t.exports=(r=n("rzlk"))&&r.default||r},npZl:function(t,e,n){"use strict";var r=n("TqRt");n("Wbzz"),r(n("9hXx"))},nqlD:function(t,e,n){var r=n("q1tI").createContext;t.exports=r,t.exports.default=r},oxjq:function(t,e,n){"use strict";var r=/[|\\{}()[\]^$+*?.]/g;t.exports=function(t){if("string"!=typeof t)throw new TypeError("Expected a string");return t.replace(r,"\\$&")}},pVnL:function(t,e){function n(){return t.exports=n=Object.assign||function(t){for(var e=1;e0?l:n?[n]:[]},e.apiRunnerAsync=function(t,e,n){return r.reduce((function(n,r){return r.plugin[t]?n.then((function(){return r.plugin[t](e,r.options)})):n}),Promise.resolve())}}},[["UxWs",3,0,9]]]); +//# sourceMappingURL=app-c10812a55a62a7ee38ef.js.map \ No newline at end of file diff --git a/app-c10812a55a62a7ee38ef.js.map b/app-c10812a55a62a7ee38ef.js.map new file mode 100644 index 0000000..a36fff9 --- /dev/null +++ b/app-c10812a55a62a7ee38ef.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/gatsby-link/index.js","webpack:///./node_modules/gatsby-react-router-scroll/session-storage.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./.cache/normalize-page-path.js","webpack:///./.cache/find-path.js","webpack:///./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack:///./node_modules/mitt/dist/mitt.es.js","webpack:///./.cache/emitter.js","webpack:///./.cache/polyfills/object-assign.js","webpack:///./node_modules/gatsby-react-router-scroll/index.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./.cache/react-lifecycles-compat.js","webpack:///./node_modules/@reach/router/es/lib/history.js","webpack:///./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack:///./node_modules/gatsby-plugin-catch-links/gatsby-browser.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack:///./gatsby-browser.js","webpack:///./.cache/page-renderer.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@reach/router/es/lib/utils.js","webpack:///./.cache/api-runner-browser-plugins.js","webpack:///./node_modules/@mikaelkristiansson/domready/ready.js","webpack:///./.cache/register-service-worker.js","webpack:///./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./.cache/route-announcer-props.js","webpack:///./.cache/navigation.js","webpack:///./node_modules/shallow-compare/es/index.js","webpack:///./.cache/ensure-resources.js","webpack:///./.cache/production-app.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./node_modules/@reach/router/es/index.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./.cache/strip-prefix.js","webpack:///./node_modules/gatsby-link/parse-path.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/gatsby-plugin-offline/gatsby-browser.js","webpack:///./.cache/prefetch.js","webpack:///./.cache/loader.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-container.js","webpack:///./node_modules/gatsby-plugin-catch-links/catch-links.js","webpack:///./.cache/public-page-renderer.js","webpack:///./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack:///./.cache/create-react-context.js","webpack:///./node_modules/escape-string-regexp/index.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/gatsby-plugin-google-analytics/gatsby-browser.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./.cache/api-runner-browser.js"],"names":["_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","getGlobalPathPrefix","navigateTo","replace","push","navigate","default","_objectWithoutPropertiesLoose2","_extends2","_assertThisInitialized2","_inheritsLoose2","_propTypes","_react","_router","_utils","_parsePath","parsePath","isAbsolutePath","startsWith","prefix","_ref","_prefix","getGlobalBasePrefix","isLocalLink","base","endsWith","slice","rewriteLinkPath","relativeTo","current","resolve","absolutify","NavLinkPropTypes","activeClassName","string","activeStyle","object","partiallyActive","bool","GatsbyLink","_React$Component","props","_this","call","this","defaultGetProps","_ref2","isPartiallyCurrent","isCurrent","className","filter","Boolean","join","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","componentDidUpdate","prevProps","prevState","to","___loader","enqueue","location","pathname","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","hasOwnProperty","entries","forEach","entry","target","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","createElement","Location","_ref3","prefixedTo","Link","e","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","encodeURI","___navigate","href","Component","propTypes","func","isRequired","showDeprecationWarning","functionName","altFunctionName","version","console","warn","_default","forwardRef","options","___push","___replace","SessionStorage","read","key","stateKey","getStateKey","value","sessionStorage","getItem","JSON","parse","save","storedValue","stringify","setItem","stateKeyBase","_typeof","_getRequireWildcardCache","WeakMap","cache","module","obj","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","desc","set","undefined","charAt","length","pathCache","Map","matchPaths","trimPathname","rawPathname","decodeURIComponent","stripPrefix","__BASE_PATH__","split","URL","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","map","matchPath","originalPath","pick","normalizePagePath","route","grabMatchParams","params","findPath","foundPath","useScrollRestoration","identifier","useLocation","useContext","_scrollHandler","ScrollContext","useRef","useLayoutEffect","position","scrollTo","onScroll","scrollTop","emitter","all","create","on","type","handler","off","splice","indexOf","emit","evt","mitt","assign","ScrollContainer","ScrollHandler","_scrollContainer","_useScrollRestoration","source","excluded","i","sourceKeys","keys","polyfill","_extends","arguments","getLocation","_source$location","search","hash","origin","protocol","host","hostname","port","canUseDOM","decodeURI","history","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","listener","popstateListener","action","addEventListener","removeEventListener","fn","_ref$replace","go","Date","now","replaceState","pushState","transition","Promise","res","createMemorySource","initialPath","searchIndex","initialLocation","substr","index","stack","states","name","_","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","document","globalHistory","localizedManifests","Array","isArray","localizedManifest","find","app","start_url","lang","require","_gatsby","_catchLinks","onClientEntry","pluginOptions","_interopRequireWildcard","React","_sessionStorage","createContext","displayName","_len","args","_key","apply","concat","_stateStorage","scrollListener","scrollY","windowScroll","shouldUpdateScroll","scrollToHash","node","getElementById","substring","scrollIntoView","prevRouterProps","routerProps","scrollPosition","_this$props$location","_this$props$location2","Provider","children","element","PageRenderer","pageResources","json","pageContext","__params","pathContext","pageElement","apiRunner","loader","publicLoader","component","page","result","pop","_arrayLikeToArray","arr","len","arr2","_toConsumableArray","iter","Symbol","iterator","from","o","minLen","n","toString","constructor","test","TypeError","routes","match","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","routeSegments","max","Math","routeSegment","uriSegment","isSplat","dynamicMatch","paramRe","exec","reservedNames","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","segment","insertParams","_path$split","pathBase","_path$split$","query","constructedPath","_params$location","_params$location$sear","searchSplit","validateRedirect","isDynamic","sort","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","a","b","q","shallowCompare","obj1","obj2","obj1Keys","every","plugin","ie10","navigator","appVersion","fns","doc","hack","documentElement","doScroll","loaded","readyState","shift","setTimeout","definition","error","serviceWorker","register","then","reg","installingWorker","installing","log","controller","___swUpdated","___failedResources","reload","catch","components","self","ReferenceError","condition","format","c","d","f","Error","argIndex","framesToPop","RouteAnnouncerProps","id","top","width","height","padding","overflow","clip","whiteSpace","border","redirectMap","redirects","redirect","fromPath","maybeRedirect","toPath","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","loadPage","status","PageResourceStatus","clearTimeout","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","results","getSavedScrollPosition","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","title","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","RouteUpdates","shouldFireRouteUpdate","getSnapshotBeforeUpdate","Fragment","shallowDiffers","_i","EnsureResources","loadPageSync","getDerivedStateFromProps","loadResources","rawPath","setState","shouldComponentUpdate","nextState","ProdLoader","asyncRequires","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","baseuri","basepath","DataContext","GatsbyRoot","staticQueryResults","getStaticQueryResults","LocationHandler","Consumer","pagePath","browserLoc","SiteRoot","App","renderer","ReactDOM","hydrate","domReady","subClass","superClass","__proto__","prefetchPathname","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","data","finalData","StaticQuery","useStaticQuery","context","isNaN","Number","graphql","unstable_collectionGraphql","_objectWithoutProperties","_classCallCheck","Constructor","_possibleConstructorReturn","_inherits","enumerable","writable","configurable","setPrototypeOf","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","url","BaseContext","Router","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","Children","toArray","array","child","createRoute","clone","cloneElement","FocusWrapper","FocusHandler","wrapperProps","PureComponent","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","k","C","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","event","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","str","elementPath","hashIndex","_inheritsLoose","registerServiceWorker","prefetchedPathnames","onServiceWorkerActive","getResourceURLsForPathname","active","nodes","headerResources","src","getAttribute","prefetchedResources","resources","resource","link","rel","onload","remove","onerror","head","appendChild","onPostPrefetchPathname","supportedPrefetchStrategy","feature","fakeLink","relList","supports","err","support","reject","setAttribute","getElementsByTagName","getElementsByName","parentNode","req","XMLHttpRequest","open","send","preFetched","prefetch","Success","preferDefault","m","createPageDataUrl","s","doFetch","method","onreadystatechange","toPageResources","pageData","componentChunkName","staticQueryHashes","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","Set","prefetchCompleted","memoizedGet","inFlightPromise","response","delete","prefetchDisabled","some","fetchPageDataJson","loadObj","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","loadAppData","allData","finalResult","componentChunkPromise","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResultsMap","shouldPrefetch","connection","effectiveType","includes","saveData","doesConnectionSupportPrefetch","add","realPath","doPrefetch","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","chunkName","pageDataUrl","prefetchHelper","crossOrigin","as","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","_reactDom","scrollKey","ScrollContainerImplementation","findDOMNode","root","clickHandler","routeThroughBrowserOrApp","hashShouldBeFollowed","pathIsNotHandledByApp","urlsAreOnSameOrigin","authorIsForcingNavigation","anchorsTargetIsEquivalentToSelf","findClosestAnchor","navigationWasHandledElsewhere","slashedPathname","userIsForcingNavigation","_escapeStringRegexp","nodeName","toLowerCase","anchor","hasAttribute","ownerDocument","defaultView","parent","destination","pathStartRegEx","hrefHandler","clickedAnchor","SVGAnimatedString","animVal","RegExp","excludePattern","destinationPathname","matchOperatorsRe","ga","excludeGAPaths","rx","delay","pageTransitionDelay","ProdPageRenderer","InternalPageRenderer","plugins","api","defaultReturn","argTransform","previous","next"],"mappings":"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","file":"app-c10812a55a62a7ee38ef.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _utils = require(\"@reach/router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + ((base === null || base === void 0 ? void 0 : base.endsWith(\"/\")) ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref2) {\n var isPartiallyCurrent = _ref2.isPartiallyCurrent,\n isCurrent = _ref2.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n ___loader.enqueue((0, _parsePath.parsePath)(rewriteLinkPath(this.props.to, window.location.pathname)).pathname);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n ___loader.enqueue((0, _parsePath.parsePath)(rewriteLinkPath(this.props.to, window.location.pathname)).pathname);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n ___loader.enqueue((0, _parsePath.parsePath)(rewriteLinkPath(_this2.props.to, window.location.pathname)).pathname);\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\"]);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref3) {\n var location = _ref3.location;\n var prefixedTo = rewriteLinkPath(to, location.pathname);\n return isLocalLink(prefixedTo) ? /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: _this3.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n var isCurrent = encodeURI(prefixedTo) === window.location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest)) : /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n });\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar showDeprecationWarning = function showDeprecationWarning(functionName, altFunctionName, version) {\n return console.warn(\"The \\\"\" + functionName + \"\\\" method is now deprecated and will be removed in Gatsby v\" + version + \". Please use \\\"\" + altFunctionName + \"\\\" instead.\");\n};\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n showDeprecationWarning(\"push\", \"navigate\", 3);\n\n window.___push(rewriteLinkPath(to, window.location.pathname));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n showDeprecationWarning(\"replace\", \"navigate\", 3);\n\n window.___replace(rewriteLinkPath(to, window.location.pathname));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n showDeprecationWarning(\"navigateTo\", \"navigate\", 3);\n return push(to);\n};\n\nexports.navigateTo = navigateTo;","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","var _typeof = require(\"../helpers/typeof\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@reach/router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(pathname, __BASE_PATH__)\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _router = require(\"@reach/router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _router.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)();\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, []);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","module.exports = Object.assign\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContainer = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _scrollContainer = require(\"./scroll-container\");\n\nexports.ScrollContainer = _scrollContainer.ScrollContainer;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","exports.polyfill = Component => Component\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _catchLinks = _interopRequireDefault(require(\"./catch-links\"));\n\nexports.onClientEntry = function (_, pluginOptions) {\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n\n (0, _catchLinks.default)(window, pluginOptions, function (href) {\n (0, _gatsby.navigate)(href);\n });\n};","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nvar ScrollContext = React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n\n _this.scrollListener = function () {\n var key = _this.props.location.key;\n\n if (key) {\n _this._stateStorage.save(_this.props.location, key, window.scrollY);\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (hash && scrollPosition === 0) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","// custom typefaces\nimport 'typeface-montserrat'\nimport 'typeface-merriweather'\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { publicLoader } from \"./loader\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n pathContext: this.props.pageContext,\n }\n\n const [replacementElement] = apiRunner(`replaceComponentRenderer`, {\n props: this.props,\n loader: publicLoader,\n })\n\n const pageElement =\n replacementElement ||\n createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-google-analytics/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Cube Blog\",\"short_name\":\"Cube\",\"start_url\":\"/\",\"background_color\":\"#ffffff\",\"theme_color\":\"#663399\",\"display\":\"minimal-ui\",\"icon\":\"content/assets/icon.png\",\"cache_busting_mode\":\"query\",\"include_favicon\":true,\"legacy\":true,\"theme_color_in_head\":true,\"cacheDigest\":\"8c19a894ebc3f54d282a8f2418cf5398\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-typography/gatsby-browser.js'),\n options: {\"plugins\":[],\"pathToConfigModule\":\"src/utils/typography\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-catch-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!(function(name, definition) {\n if (typeof module != \"undefined\") module.exports = definition();\n else if (typeof define == \"function\" && typeof define.amd == \"object\")\n define(definition);\n else this[name] = definition();\n})(\"domready\", function() {\n var ie10 = false;\n if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n ie10 = true;\n }\n\n var fns = [],\n listener,\n doc = typeof document === \"object\" && document,\n hack = ie10\n ? doc.documentElement.doScroll(\"left\")\n : doc.documentElement.doScroll,\n domContentLoaded = \"DOMContentLoaded\",\n loaded =\n doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded && doc)\n doc.addEventListener(\n domContentLoaded,\n (listener = function() {\n doc.removeEventListener(domContentLoaded, listener);\n loaded = 1;\n while ((listener = fns.shift())) listener();\n })\n );\n\n return function(fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---node-modules-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../../node_modules/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---node-modules-gatsby-plugin-offline-app-shell-js\" */),\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-templates-blog-post-js\": () => import(\"./../../../src/templates/blog-post.js\" /* webpackChunkName: \"component---src-templates-blog-post-js\" */)\n}\n\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport redirects from \"./redirects.json\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@reach/router\"\nimport { globalHistory } from \"@reach/router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\n// Convert to a map for faster lookup in maybeRedirect()\nconst redirectMap = redirects.reduce((map, redirect) => {\n map[redirect.fromPath] = redirect\n return map\n}, {})\n\nfunction maybeRedirect(pathname) {\n const redirect = redirectMap[pathname]\n\n if (redirect != null) {\n if (process.env.NODE_ENV !== `production`) {\n if (!loader.isPageNotFound(pathname)) {\n console.error(\n `The route \"${pathname}\" matches both a page and a redirect; this is probably not intentional.`\n )\n }\n }\n\n window.___replace(redirect.toPath)\n return true\n } else {\n return false\n }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n let { pathname } = parsePath(to)\n const redirect = redirectMap[pathname]\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath\n pathname = parsePath(to).pathname\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n console.log(`Site has changed on server. Reloading browser`)\n window.location = pathname\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => this._stateStorage.read(args),\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n componentDidUpdate(prevProps, prevState, shouldFireRouteUpdate) {\n if (shouldFireRouteUpdate) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (this.props.location.pathname !== prevProps.location.pathname) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n\n return false\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources: pageResources || loader.loadPageSync(location.pathname),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname)\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (process.env.NODE_ENV !== `production` && !this.state.pageResources) {\n throw new Error(\n `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n )\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@reach/router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n throw new Error(\n `page resources for ${browserLoc.pathname} not found. Not rendering React`\n )\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = () => {SiteRoot}\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrate\n )[0]\n\n domReady(() => {\n renderer(\n ,\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : void 0,\n () => {\n apiRunner(`onInitialClientRender`)\n }\n )\n })\n })\n})\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context?.[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nfunction unstable_collectionGraphql() {\n // TODO: Strip this out of the component and throw error if it gets called\n return null\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n push, // TODO replace for v3\n replace, // TODO remove replace for v3\n navigateTo, // TODO: remove navigateTo for v3\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n // Experimental API\n unstable_collectionGraphql,\n}\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", { baseuri: \"/\", basepath: \"/\" });\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n { value: { baseuri: uri, basepath: basepath } },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch , BaseContext };","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return true;\n};\n\nvar prefetchedPathnames = [];\n\nexports.onServiceWorkerActive = function (_ref) {\n var getResourceURLsForPathname = _ref.getResourceURLsForPathname,\n serviceWorker = _ref.serviceWorker;\n\n // if the SW has just updated then clear the path dependencies and don't cache\n // stuff, since we're on the old revision until we navigate to another page\n if (window.___swUpdated) {\n serviceWorker.active.postMessage({\n gatsbyApi: \"clearPathResources\"\n });\n return;\n } // grab nodes from head of document\n\n\n var nodes = document.querySelectorAll(\"\\n head > script[src],\\n head > link[href],\\n head > style[data-href]\\n \"); // get all resource URLs\n\n var headerResources = [].slice.call(nodes).map(function (node) {\n return node.src || node.href || node.getAttribute(\"data-href\");\n }); // Loop over prefetched pages and add their resources to an array,\n // plus specify which resources are required for those paths.\n\n var prefetchedResources = [];\n prefetchedPathnames.forEach(function (path) {\n var resources = getResourceURLsForPathname(path);\n prefetchedResources.push.apply(prefetchedResources, resources);\n serviceWorker.active.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }); // Loop over all resources and fetch the page component + JSON data\n // to add it to the SW cache.\n\n var resources = [].concat(headerResources, prefetchedResources);\n resources.forEach(function (resource) {\n // Create a prefetch link for each resource, so Workbox runtime-caches them\n var link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = resource;\n link.onload = link.remove;\n link.onerror = link.remove;\n document.head.appendChild(link);\n });\n};\n\nexports.onPostPrefetchPathname = function (_ref2) {\n var pathname = _ref2.pathname,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n // do nothing if the SW has just updated, since we still have old pages in\n // memory which we don't want to be whitelisted\n if (window.___swUpdated) return;\n\n if (\"serviceWorker\" in navigator) {\n var _navigator = navigator,\n serviceWorker = _navigator.serviceWorker;\n\n if (serviceWorker.controller === null) {\n // if SW is not installed, we need to record any prefetches\n // that happen so we can then add them to SW cache once installed\n prefetchedPathnames.push(pathname);\n } else {\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: pathname,\n resources: getResourceURLsForPathname(pathname)\n });\n }\n }\n};","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n return Promise.resolve(this.pageDataDb.get(pagePath))\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n return Promise.resolve(page.payload)\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component) {\n finalResult.status = PageResourceStatus.Error\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n ).then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return Promise.all([componentChunkPromise, staticQueryBatchPromise]).then(\n ([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n return payload\n }\n )\n })\n\n inFlightPromise\n .then(response => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if loading page ran into errors\n loadPageSync(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath).payload\n return pageData\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n throw new Error(`doPrefetch not implemented`)\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return page && page.notFound === true\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths) {\n const loadComponent = chunkName =>\n asyncRequires.components[chunkName]\n ? asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is null\n .catch(() => null)\n : Promise.resolve()\n\n super(loadComponent, matchPaths)\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n })\n .then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n .then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(\n () => pageData\n )\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n // Deprecated methods. As far as we're aware, these are only used by\n // core gatsby and the offline plugin, however there's a very small\n // chance they're called by others.\n getResourcesForPathname: rawPath => {\n console.warn(\n `Warning: getResourcesForPathname is deprecated. Use loadPage instead`\n )\n return instance.i.loadPage(rawPath)\n },\n getResourcesForPathnameSync: rawPath => {\n console.warn(\n `Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead`\n )\n return instance.i.loadPageSync(rawPath)\n },\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n loadPageSync: rawPath => instance.loadPageSync(rawPath),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n return instance.staticQueryDb\n}\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollContainer = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _router = require(\"@reach/router\");\n\n// TODO: In Gatsby v3, this file should be removed.\n// We are deprecating this in V2 in favor of useScrollRestoration\nvar propTypes = {\n scrollKey: _propTypes.default.string.isRequired,\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired\n};\nvar hasNotWarnedDeprecation = true;\n\nvar ScrollContainerImplementation = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollContainerImplementation, _React$Component);\n\n function ScrollContainerImplementation(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n\n if (process.env.NODE_ENV !== \"production\" && hasNotWarnedDeprecation) {\n hasNotWarnedDeprecation = false;\n console.log(\"Deprecation Warning:\\n\\n Gatsby is deprecated in Gatsby v2 and will be removed in Gatsby v3.\\n Update to the React hook alternative useScrollRestoration, like this:.\\n \\n ```\\n import React from 'react';\\n import { useScrollRestoration } from 'gatsby-react-router-scroll';\\n\\n function Component() {\\n const scrollRestoration = useScrollRestoration('\" + _this.props.scrollKey + \"');\\n\\n return
    ;\\n }\\n ```\\n \");\n }\n\n return _this;\n }\n\n var _proto = ScrollContainerImplementation.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n // eslint-disable-next-line react/no-find-dom-node\n var node = _reactDom.default.findDOMNode(this);\n\n var _this$props = this.props,\n location = _this$props.location,\n scrollKey = _this$props.scrollKey;\n if (!node) return;\n node.addEventListener(\"scroll\", function () {\n _this2.props.context.save(location, scrollKey, node.scrollTop);\n });\n var position = this.props.context.read(location, scrollKey);\n node.scrollTo(0, position || 0);\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return ScrollContainerImplementation;\n}(React.Component);\n\nvar ScrollContainer = function ScrollContainer(props) {\n return /*#__PURE__*/React.createElement(_router.Location, null, function (_ref) {\n var location = _ref.location;\n return /*#__PURE__*/React.createElement(_scrollHandler.ScrollContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(ScrollContainerImplementation, (0, _extends2.default)({}, props, {\n context: context,\n location: location\n }));\n });\n });\n};\n\nexports.ScrollContainer = ScrollContainer;\nScrollContainer.propTypes = propTypes;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _default;\nexports.routeThroughBrowserOrApp = exports.hashShouldBeFollowed = exports.pathIsNotHandledByApp = exports.urlsAreOnSameOrigin = exports.authorIsForcingNavigation = exports.anchorsTargetIsEquivalentToSelf = exports.findClosestAnchor = exports.navigationWasHandledElsewhere = exports.slashedPathname = exports.userIsForcingNavigation = void 0;\n\nvar _escapeStringRegexp = _interopRequireDefault(require(\"escape-string-regexp\"));\n\nvar _gatsby = require(\"gatsby\");\n\nvar userIsForcingNavigation = function userIsForcingNavigation(event) {\n return event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n}; // IE does not include leading slash in anchor.pathname\n\n\nexports.userIsForcingNavigation = userIsForcingNavigation;\n\nvar slashedPathname = function slashedPathname(pathname) {\n return pathname[0] === \"/\" ? pathname : \"/\" + pathname;\n};\n\nexports.slashedPathname = slashedPathname;\n\nvar navigationWasHandledElsewhere = function navigationWasHandledElsewhere(event) {\n return event.defaultPrevented;\n};\n\nexports.navigationWasHandledElsewhere = navigationWasHandledElsewhere;\n\nvar findClosestAnchor = function findClosestAnchor(node) {\n for (; node.parentNode; node = node.parentNode) {\n if (node.nodeName.toLowerCase() === \"a\") {\n return node;\n }\n }\n\n return null;\n};\n\nexports.findClosestAnchor = findClosestAnchor;\n\nvar anchorsTargetIsEquivalentToSelf = function anchorsTargetIsEquivalentToSelf(anchor) {\n return (\n /* If target attribute is not present it's treated as _self */\n anchor.hasAttribute(\"target\") === false ||\n /**\n * The browser defaults to _self, but, not all browsers set\n * a.target to the string value `_self` by default\n */\n\n /**\n * Assumption: some browsers use null/undefined for default\n * attribute values\n */\n anchor.target == null ||\n /**\n * Some browsers use the empty string to mean _self, check\n * for actual `_self`\n */\n [\"_self\", \"\"].includes(anchor.target) ||\n /**\n * As per https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\n anchor.target === \"_parent\" && (!anchor.ownerDocument.defaultView.parent || // Assumption: This can be falsey\n anchor.ownerDocument.defaultView.parent === anchor.ownerDocument.defaultView) || anchor.target === \"_top\" && (!anchor.ownerDocument.defaultView.top || // Assumption: This can be falsey\n anchor.ownerDocument.defaultView.top === anchor.ownerDocument.defaultView)\n );\n};\n\nexports.anchorsTargetIsEquivalentToSelf = anchorsTargetIsEquivalentToSelf;\n\nvar authorIsForcingNavigation = function authorIsForcingNavigation(anchor) {\n return (\n /**\n * HTML5 attribute that informs the browser to handle the\n * href as a downloadable file; let the browser handle it\n */\n anchor.hasAttribute(\"download\") === true ||\n /**\n * Let the browser handle anything that doesn't look like a\n * target=\"_self\" anchor\n */\n anchorsTargetIsEquivalentToSelf(anchor) === false\n );\n}; // https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\n\n\nexports.authorIsForcingNavigation = authorIsForcingNavigation;\n\nvar urlsAreOnSameOrigin = function urlsAreOnSameOrigin(origin, destination) {\n return origin.protocol === destination.protocol &&\n /* a.host includes both hostname and port in the expected format host:port */\n origin.host === destination.host;\n};\n\nexports.urlsAreOnSameOrigin = urlsAreOnSameOrigin;\n\nvar pathIsNotHandledByApp = function pathIsNotHandledByApp(destination, pathStartRegEx) {\n var pathFileExtensionRegEx = /^.*\\.((?!htm)[a-z0-9]{1,5})$/i;\n return (\n /**\n * For when pathPrefix is used in an app and there happens to be a link\n * pointing to the same domain but outside of the app's pathPrefix. For\n * example, a Gatsby app lives at https://example.com/myapp/, with the\n * pathPrefix set to `/myapp`. When adding an absolute link to the same\n * domain but outside of the /myapp path, for example, `` the plugin won't catch it and\n * will navigate to an external link instead of doing a pushState resulting\n * in `https://example.com/myapp/https://example.com/not-my-app`\n */\n pathStartRegEx.test(slashedPathname(destination.pathname)) === false ||\n /**\n * Don't catch links pointed at what look like file extensions (other than\n * .htm/html extensions).\n */\n destination.pathname.search(pathFileExtensionRegEx) !== -1\n );\n};\n\nexports.pathIsNotHandledByApp = pathIsNotHandledByApp;\n\nvar hashShouldBeFollowed = function hashShouldBeFollowed(origin, destination) {\n return destination.hash !== \"\" && (\n /**\n * Dynamically created anchor links (href=\"#my-anchor\") do not always\n * have pathname on IE\n */\n destination.pathname === \"\" ||\n /* Don't catch links pointed to the same page but with a hash. */\n destination.pathname === origin.pathname);\n};\n\nexports.hashShouldBeFollowed = hashShouldBeFollowed;\n\nvar routeThroughBrowserOrApp = function routeThroughBrowserOrApp(hrefHandler, pluginOptions) {\n return function (event) {\n if (window.___failedResources) return true;\n if (userIsForcingNavigation(event)) return true;\n if (navigationWasHandledElsewhere(event)) return true;\n var clickedAnchor = findClosestAnchor(event.target);\n if (clickedAnchor == null) return true;\n if (authorIsForcingNavigation(clickedAnchor)) return true; // IE clears the host value if the anchor href changed after creation, e.g.\n // in React. Creating a new anchor element to ensure host value is present\n\n var destination = document.createElement(\"a\"); // https://html.spec.whatwg.org/multipage/links.html#concept-hyperlink-url-set\n // If clickedAnchor has no href attribute like `example`, the href getter returns empty string.\n\n if (clickedAnchor.href !== \"\") {\n destination.href = clickedAnchor.href;\n }\n\n if (clickedAnchor.href instanceof SVGAnimatedString) {\n destination.href = clickedAnchor.href.animVal;\n } // In IE, the default port is included in the anchor host but excluded from\n // the location host. This affects the ability to directly compare\n // location host to anchor host. For example: http://example.com would\n // have a location.host of 'example.com' and an destination.host of\n // 'example.com:80' Creating anchor from the location.href to normalize the\n // host value.\n\n\n var origin = document.createElement(\"a\");\n origin.href = window.location.href;\n if (urlsAreOnSameOrigin(origin, destination) === false) return true; // Regex to test pathname against pathPrefix\n\n var pathStartRegEx = new RegExp(\"^\" + (0, _escapeStringRegexp.default)((0, _gatsby.withPrefix)(\"/\")));\n if (pathIsNotHandledByApp(destination, pathStartRegEx)) return true;\n if (hashShouldBeFollowed(origin, destination)) return true;\n\n if (pluginOptions.excludePattern) {\n var excludeRegex = new RegExp(pluginOptions.excludePattern);\n\n if (excludeRegex.test(destination.pathname)) {\n return true;\n }\n }\n\n event.preventDefault(); // See issue #8907: destination.pathname already includes pathPrefix added\n // by gatsby-transformer-remark but gatsby-link.navigate needs href without\n\n var destinationPathname = slashedPathname(destination.pathname).replace(pathStartRegEx, \"/\");\n hrefHandler(\"\" + destinationPathname + destination.search + destination.hash);\n return false;\n };\n};\n\nexports.routeThroughBrowserOrApp = routeThroughBrowserOrApp;\n\nfunction _default(root, pluginOptions, cb) {\n var clickHandler = routeThroughBrowserOrApp(cb, pluginOptions);\n root.addEventListener(\"click\", clickHandler);\n return function () {\n return root.removeEventListener(\"click\", clickHandler);\n };\n}","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n var withPrefix = _gatsby.withAssetPrefix || _gatsby.withPrefix;\n\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", withPrefix(manifestFilename));\n }\n };\n}","/*\n Why commonjs and not ES imports/exports?\n\n This module is used to alias `create-react-context` package, but drop the the actual implementation part\n because Gatsby requires version of react that has implementatoin baked in.\n \n Package source is using ES modules:\n - https://github.com/jamiebuilds/create-react-context/blob/v0.3.0/src/index.js\n \n But to build this package `babel-plugin-add-module-exports` is used ( https://www.npmjs.com/package/babel-plugin-add-module-exports).\n Which result in both `module.exports` and `exports.default` being set to same thing.\n\n We don't use that babel plugin so we only have `exports.default`.\n\n This cause problems in various 3rd party react components that rely on `module.exports` being set.\n See https://github.com/gatsbyjs/gatsby/issues/23645 for example of it.\n \n Instead of adding same babel plugin we mimic output here. Adding babel plugin just for this would:\n a) unnecesairly slow down compilation for all other files (if we just apply it everywhere)\n b) or complicate babel-loader configuration with overwrite specifically for this file\n*/\n\nconst { createContext } = require(`react`)\n\nmodule.exports = createContext\nmodule.exports.default = createContext\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n if (typeof str !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n return str.replace(matchOperatorsRe, '\\\\$&');\n};","function _extends() {\n module.exports = _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\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","\"use strict\";\n\nexports.__esModule = true;\nexports.onRouteUpdate = void 0;\n\nvar onRouteUpdate = function onRouteUpdate(_ref, pluginOptions) {\n var location = _ref.location;\n\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n\n if (process.env.NODE_ENV !== \"production\" || typeof ga !== \"function\") {\n return null;\n }\n\n var pathIsExcluded = location && typeof window.excludeGAPaths !== \"undefined\" && window.excludeGAPaths.some(function (rx) {\n return rx.test(location.pathname);\n });\n if (pathIsExcluded) return null; // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n // reactHelmet is using requestAnimationFrame: https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299\n\n var sendPageView = function sendPageView() {\n var pagePath = location ? location.pathname + location.search + location.hash : undefined;\n window.ga(\"set\", \"page\", pagePath);\n window.ga(\"send\", \"pageview\");\n }; // Minimum delay for reactHelmet's requestAnimationFrame\n\n\n var delay = Math.max(32, pluginOptions.pageTransitionDelay || 0);\n setTimeout(sendPageView, delay);\n return null;\n};\n\nexports.onRouteUpdate = onRouteUpdate;","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n getResourcesForPathname,\n getResourcesForPathnameSync,\n getResourceURLsForPathname,\n loadPage,\n loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n // Deprecated April 2019. Use `loadPageSync` instead\n args.getResourcesForPathnameSync = getResourcesForPathnameSync\n // Deprecated April 2019. Use `loadPage` instead\n args.getResourcesForPathname = getResourcesForPathname\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n"],"sourceRoot":""} \ No newline at end of file diff --git a/cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js b/cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js new file mode 100644 index 0000000..4531d27 --- /dev/null +++ b/cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"6Gk8":function(e,t,a){"use strict";var r=a("q1tI"),i=a.n(r),n=a("Wbzz"),s=a("9eSz"),d=a.n(s),o=a("p3AD");var l="4211413508";t.a=function(){return i.a.createElement(n.StaticQuery,{query:l,render:function(e){var t=e.site.siteMetadata.author;return i.a.createElement("div",{style:{display:"flex",marginBottom:Object(o.a)(2)}},i.a.createElement(d.a,{fixed:e.avatar.childImageSharp.fixed,alt:t,style:{marginRight:Object(o.a)(.5),marginBottom:0,minWidth:50,borderRadius:"100%"},imgStyle:{borderRadius:"50%"}}),i.a.createElement("p",null,"这个博客用于记录我个人所读所思所想,前端开发相关。"))}})}},"9eSz":function(e,t,a){"use strict";var r=a("TqRt");t.__esModule=!0,t.default=void 0;var i,n=r(a("PJYZ")),s=r(a("VbXa")),d=r(a("8OQS")),o=r(a("pVnL")),l=r(a("q1tI")),u=r(a("17x9")),c=function(e){var t=(0,o.default)({},e),a=t.resolutions,r=t.sizes,i=t.critical;return a&&(t.fixed=a,delete t.resolutions),r&&(t.fluid=r,delete t.sizes),i&&(t.loading="eager"),t.fluid&&(t.fluid=E([].concat(t.fluid))),t.fixed&&(t.fixed=E([].concat(t.fixed))),t},f=function(e){var t=e.media;return!!t&&(y&&!!window.matchMedia(t).matches)},g=function(e){var t=e.fluid,a=e.fixed,r=p(t||a||[]);return r&&r.src},p=function(e){if(y&&function(e){return!!e&&Array.isArray(e)&&e.some((function(e){return void 0!==e.media}))}(e)){var t=e.findIndex(f);if(-1!==t)return e[t];var a=e.findIndex((function(e){return void 0===e.media}));if(-1!==a)return e[a]}return e[0]},h=Object.create({}),m=function(e){var t=c(e),a=g(t);return h[a]||!1},b="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype,y="undefined"!=typeof window,S=y&&window.IntersectionObserver,v=new WeakMap;function w(e){return e.map((function(e){var t=e.src,a=e.srcSet,r=e.srcSetWebp,i=e.media,n=e.sizes;return l.default.createElement(l.default.Fragment,{key:t},r&&l.default.createElement("source",{type:"image/webp",media:i,srcSet:r,sizes:n}),a&&l.default.createElement("source",{media:i,srcSet:a,sizes:n}))}))}function E(e){var t=[],a=[];return e.forEach((function(e){return(e.media?t:a).push(e)})),[].concat(t,a)}function R(e){return e.map((function(e){var t=e.src,a=e.media,r=e.tracedSVG;return l.default.createElement("source",{key:t,media:a,srcSet:r})}))}function L(e){return e.map((function(e){var t=e.src,a=e.media,r=e.base64;return l.default.createElement("source",{key:t,media:a,srcSet:r})}))}function I(e,t){var a=e.srcSet,r=e.srcSetWebp,i=e.media,n=e.sizes;return""}var x=function(e,t){var a=(void 0===i&&"undefined"!=typeof window&&window.IntersectionObserver&&(i=new window.IntersectionObserver((function(e){e.forEach((function(e){if(v.has(e.target)){var t=v.get(e.target);(e.isIntersecting||e.intersectionRatio>0)&&(i.unobserve(e.target),v.delete(e.target),t())}}))}),{rootMargin:"200px"})),i);return a&&(a.observe(e),v.set(e,t)),function(){a.unobserve(e),v.delete(e)}},O=function(e){var t=e.src?'src="'+e.src+'" ':'src="" ',a=e.sizes?'sizes="'+e.sizes+'" ':"",r=e.srcSet?'srcset="'+e.srcSet+'" ':"",i=e.title?'title="'+e.title+'" ':"",n=e.alt?'alt="'+e.alt+'" ':'alt="" ',s=e.width?'width="'+e.width+'" ':"",d=e.height?'height="'+e.height+'" ':"",o=e.crossOrigin?'crossorigin="'+e.crossOrigin+'" ':"",l=e.loading?'loading="'+e.loading+'" ':"",u=e.draggable?'draggable="'+e.draggable+'" ':"";return""+e.imageVariants.map((function(e){return(e.srcSetWebp?I(e,!0):"")+I(e)})).join("")+"'},z=l.default.forwardRef((function(e,t){var a=e.src,r=e.imageVariants,i=e.generateSources,n=e.spreadProps,s=e.ariaHidden,d=l.default.createElement(V,(0,o.default)({ref:t,src:a},n,{ariaHidden:s}));return r.length>1?l.default.createElement("picture",null,i(r),d):d})),V=l.default.forwardRef((function(e,t){var a=e.sizes,r=e.srcSet,i=e.src,n=e.style,s=e.onLoad,u=e.onError,c=e.loading,f=e.draggable,g=e.ariaHidden,p=(0,d.default)(e,["sizes","srcSet","src","style","onLoad","onError","loading","draggable","ariaHidden"]);return l.default.createElement("img",(0,o.default)({"aria-hidden":g,sizes:a,srcSet:r,src:i},p,{onLoad:s,onError:u,ref:t,loading:c,draggable:f,style:(0,o.default)({position:"absolute",top:0,left:0,width:"100%",height:"100%",objectFit:"cover",objectPosition:"center"},n)}))}));V.propTypes={style:u.default.object,onError:u.default.func,onLoad:u.default.func};var C=function(e){function t(t){var a;(a=e.call(this,t)||this).seenBefore=y&&m(t),a.isCritical="eager"===t.loading||t.critical,a.addNoScript=!(a.isCritical&&!t.fadeIn),a.useIOSupport=!b&&S&&!a.isCritical&&!a.seenBefore;var r=a.isCritical||y&&(b||!a.useIOSupport);return a.state={isVisible:r,imgLoaded:!1,imgCached:!1,fadeIn:!a.seenBefore&&t.fadeIn},a.imageRef=l.default.createRef(),a.placeholderRef=t.placeholderRef||l.default.createRef(),a.handleImageLoaded=a.handleImageLoaded.bind((0,n.default)(a)),a.handleRef=a.handleRef.bind((0,n.default)(a)),a}(0,s.default)(t,e);var a=t.prototype;return a.componentDidMount=function(){if(this.state.isVisible&&"function"==typeof this.props.onStartLoad&&this.props.onStartLoad({wasCached:m(this.props)}),this.isCritical){var e=this.imageRef.current;e&&e.complete&&this.handleImageLoaded()}},a.componentWillUnmount=function(){this.cleanUpListeners&&this.cleanUpListeners()},a.handleRef=function(e){var t=this;this.useIOSupport&&e&&(this.cleanUpListeners=x(e,(function(){var e=m(t.props);t.state.isVisible||"function"!=typeof t.props.onStartLoad||t.props.onStartLoad({wasCached:e}),t.setState({isVisible:!0},(function(){t.setState({imgLoaded:e,imgCached:!(!t.imageRef.current||!t.imageRef.current.currentSrc)})}))})))},a.handleImageLoaded=function(){var e,t,a;e=this.props,t=c(e),(a=g(t))&&(h[a]=!0),this.setState({imgLoaded:!0}),this.props.onLoad&&this.props.onLoad()},a.render=function(){var e=c(this.props),t=e.title,a=e.alt,r=e.className,i=e.style,n=void 0===i?{}:i,s=e.imgStyle,d=void 0===s?{}:s,u=e.placeholderStyle,f=void 0===u?{}:u,g=e.placeholderClassName,h=e.fluid,m=e.fixed,b=e.backgroundColor,y=e.durationFadeIn,S=e.Tag,v=e.itemProp,E=e.loading,I=e.draggable,x=!1===this.state.fadeIn||this.state.imgLoaded,C=!0===this.state.fadeIn&&!this.state.imgCached,T=(0,o.default)({opacity:x?1:0,transition:C?"opacity "+y+"ms":"none"},d),k="boolean"==typeof b?"lightgray":b,H={transitionDelay:y+"ms"},W=(0,o.default)({opacity:this.state.imgLoaded?0:1},C&&H,d,f),j={title:t,alt:this.state.isVisible?"":a,style:W,className:g,itemProp:v};if(h){var P=h,q=p(h);return l.default.createElement(S,{className:(r||"")+" gatsby-image-wrapper",style:(0,o.default)({position:"relative",overflow:"hidden",maxWidth:q.maxWidth?q.maxWidth+"px":null,maxHeight:q.maxHeight?q.maxHeight+"px":null},n),ref:this.handleRef,key:"fluid-"+JSON.stringify(q.srcSet)},l.default.createElement(S,{"aria-hidden":!0,style:{width:"100%",paddingBottom:100/q.aspectRatio+"%"}}),k&&l.default.createElement(S,{"aria-hidden":!0,title:t,style:(0,o.default)({backgroundColor:k,position:"absolute",top:0,bottom:0,opacity:this.state.imgLoaded?0:1,right:0,left:0},C&&H)}),q.base64&&l.default.createElement(z,{ariaHidden:!0,ref:this.placeholderRef,src:q.base64,spreadProps:j,imageVariants:P,generateSources:L}),q.tracedSVG&&l.default.createElement(z,{ariaHidden:!0,ref:this.placeholderRef,src:q.tracedSVG,spreadProps:j,imageVariants:P,generateSources:R}),this.state.isVisible&&l.default.createElement("picture",null,w(P),l.default.createElement(V,{alt:a,title:t,sizes:q.sizes,src:q.src,crossOrigin:this.props.crossOrigin,srcSet:q.srcSet,style:T,ref:this.imageRef,onLoad:this.handleImageLoaded,onError:this.props.onError,itemProp:v,loading:E,draggable:I})),this.addNoScript&&l.default.createElement("noscript",{dangerouslySetInnerHTML:{__html:O((0,o.default)({alt:a,title:t,loading:E},q,{imageVariants:P}))}}))}if(m){var M=m,N=p(m),G=(0,o.default)({position:"relative",overflow:"hidden",display:"inline-block",width:N.width,height:N.height},n);return"inherit"===n.display&&delete G.display,l.default.createElement(S,{className:(r||"")+" gatsby-image-wrapper",style:G,ref:this.handleRef,key:"fixed-"+JSON.stringify(N.srcSet)},k&&l.default.createElement(S,{"aria-hidden":!0,title:t,style:(0,o.default)({backgroundColor:k,width:N.width,opacity:this.state.imgLoaded?0:1,height:N.height},C&&H)}),N.base64&&l.default.createElement(z,{ariaHidden:!0,ref:this.placeholderRef,src:N.base64,spreadProps:j,imageVariants:M,generateSources:L}),N.tracedSVG&&l.default.createElement(z,{ariaHidden:!0,ref:this.placeholderRef,src:N.tracedSVG,spreadProps:j,imageVariants:M,generateSources:R}),this.state.isVisible&&l.default.createElement("picture",null,w(M),l.default.createElement(V,{alt:a,title:t,width:N.width,height:N.height,sizes:N.sizes,src:N.src,crossOrigin:this.props.crossOrigin,srcSet:N.srcSet,style:T,ref:this.imageRef,onLoad:this.handleImageLoaded,onError:this.props.onError,itemProp:v,loading:E,draggable:I})),this.addNoScript&&l.default.createElement("noscript",{dangerouslySetInnerHTML:{__html:O((0,o.default)({alt:a,title:t,loading:E},N,{imageVariants:M}))}}))}return null},t}(l.default.Component);C.defaultProps={fadeIn:!0,durationFadeIn:500,alt:"",Tag:"div",loading:"lazy"};var T=u.default.shape({width:u.default.number.isRequired,height:u.default.number.isRequired,src:u.default.string.isRequired,srcSet:u.default.string.isRequired,base64:u.default.string,tracedSVG:u.default.string,srcWebp:u.default.string,srcSetWebp:u.default.string,media:u.default.string}),k=u.default.shape({aspectRatio:u.default.number.isRequired,src:u.default.string.isRequired,srcSet:u.default.string.isRequired,sizes:u.default.string.isRequired,base64:u.default.string,tracedSVG:u.default.string,srcWebp:u.default.string,srcSetWebp:u.default.string,media:u.default.string,maxWidth:u.default.number,maxHeight:u.default.number});function H(e){return function(t,a,r){var i;if(!t.fixed&&!t.fluid)throw new Error("The prop `fluid` or `fixed` is marked as required in `"+r+"`, but their values are both `undefined`.");u.default.checkPropTypes(((i={})[a]=e,i),t,"prop",r)}}C.propTypes={resolutions:T,sizes:k,fixed:H(u.default.oneOfType([T,u.default.arrayOf(T)])),fluid:H(u.default.oneOfType([k,u.default.arrayOf(k)])),fadeIn:u.default.bool,durationFadeIn:u.default.number,title:u.default.string,alt:u.default.string,className:u.default.oneOfType([u.default.string,u.default.object]),critical:u.default.bool,crossOrigin:u.default.oneOfType([u.default.string,u.default.bool]),style:u.default.object,imgStyle:u.default.object,placeholderStyle:u.default.object,placeholderClassName:u.default.string,backgroundColor:u.default.oneOfType([u.default.string,u.default.bool]),onLoad:u.default.func,onError:u.default.func,onStartLoad:u.default.func,Tag:u.default.string,itemProp:u.default.string,loading:u.default.oneOf(["auto","lazy","eager"]),draggable:u.default.bool};var W=C;t.default=W},yWgo:function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));a("KQm4");function r(e){var t=Math.round(e/5);return t>5?new Array(Math.round(t/Math.E)).fill("🍱").join("")+" "+e+" min read":new Array(t||1).fill("☕️").join("")+" "+e+" min read"}}}]); +//# sourceMappingURL=cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js.map \ No newline at end of file diff --git a/cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js.map b/cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js.map new file mode 100644 index 0000000..0bf182a --- /dev/null +++ b/cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/bio.js","webpack:///./node_modules/gatsby-image/index.js","webpack:///./src/utils/helper.js"],"names":["bioQuery","Bio","query","render","data","author","site","siteMetadata","style","display","marginBottom","rhythm","fixed","avatar","childImageSharp","alt","marginRight","minWidth","borderRadius","imgStyle","_interopRequireDefault","require","exports","__esModule","default","io","_assertThisInitialized2","_inheritsLoose2","_objectWithoutPropertiesLoose2","_extends2","_react","_propTypes","convertProps","props","convertedProps","resolutions","sizes","critical","fluid","loading","groupByMedia","concat","matchesMedia","_ref","media","isBrowser","window","matchMedia","matches","getImageCacheKey","_ref2","srcData","getCurrentSrcData","src","currentData","Array","isArray","some","image","hasArtDirectionSupport","foundMedia","findIndex","noMedia","imageCache","Object","create","inImageCache","cacheKey","hasNativeLazyLoadSupport","HTMLImageElement","prototype","hasIOSupport","IntersectionObserver","listeners","WeakMap","generateImageSources","imageVariants","map","_ref3","srcSet","srcSetWebp","createElement","Fragment","key","type","withMedia","without","forEach","variant","push","generateTracedSVGSources","_ref4","tracedSVG","generateBase64Sources","_ref5","base64","generateNoscriptSource","_ref6","isWebp","listenToIntersections","el","cb","observer","entries","entry","has","target","get","isIntersecting","intersectionRatio","unobserve","delete","rootMargin","observe","set","noscriptImg","title","width","height","crossOrigin","draggable","join","Placeholder","forwardRef","ref","generateSources","spreadProps","ariaHidden","baseImage","Img","length","onLoad","onError","otherProps","position","top","left","objectFit","objectPosition","propTypes","object","func","Image","_React$Component","_this","call","this","seenBefore","isCritical","addNoScript","fadeIn","useIOSupport","isVisible","state","imgLoaded","imgCached","imageRef","createRef","placeholderRef","handleImageLoaded","bind","handleRef","_proto","componentDidMount","onStartLoad","wasCached","img","current","complete","componentWillUnmount","cleanUpListeners","_this2","imageInCache","setState","currentSrc","_convertProps","className","_convertProps$style","_convertProps$imgStyl","_convertProps$placeho","placeholderStyle","placeholderClassName","backgroundColor","durationFadeIn","Tag","itemProp","shouldReveal","shouldFadeIn","imageStyle","opacity","transition","bgColor","delayHideStyle","transitionDelay","imagePlaceholderStyle","placeholderImageProps","overflow","maxWidth","maxHeight","JSON","stringify","paddingBottom","aspectRatio","bottom","right","dangerouslySetInnerHTML","__html","_imageVariants","_image","divStyle","Component","defaultProps","fixedObject","shape","number","isRequired","string","srcWebp","fluidObject","requireFixedOrFluid","originalPropTypes","propName","componentName","_PropTypes$checkPropT","Error","checkPropTypes","oneOfType","arrayOf","bool","oneOf","_default","formatReadingTime","minutes","cups","Math","round","E","fill"],"mappings":"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","file":"cd7d5f864fc9e15ed8adef086269b0aeff617554-d4a2ee6ab7a1817af84e.js","sourcesContent":["/**\n * Bio component that queries for data\n * with Gatsby's StaticQuery component\n *\n * See: https://www.gatsbyjs.org/docs/static-query/\n */\n\nimport React from 'react'\nimport { StaticQuery, graphql } from 'gatsby'\nimport Image from 'gatsby-image'\n\nimport { rhythm } from '../utils/typography'\n\nfunction Bio() {\n return (\n {\n const { author } = data.site.siteMetadata\n return (\n \n \n

    这个博客用于记录我个人所读所思所想,前端开发相关。

    \n \n )\n }}\n />\n )\n}\n\nconst bioQuery = graphql`\n query BioQuery {\n avatar: file(absolutePath: { regex: \"/profile-pic.jpg/\" }) {\n childImageSharp {\n fixed(width: 50, height: 50) {\n ...GatsbyImageSharpFixed\n }\n }\n }\n site {\n siteMetadata {\n author\n }\n }\n }\n`\n\nexport default Bio\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar logDeprecationNotice = function logDeprecationNotice(prop, replacement) {\n if (process.env.NODE_ENV === \"production\") {\n return;\n }\n\n console.log(\"\\n The \\\"\" + prop + \"\\\" prop is now deprecated and will be removed in the next major version\\n of \\\"gatsby-image\\\".\\n \");\n\n if (replacement) {\n console.log(\"Please use \" + replacement + \" instead of \\\"\" + prop + \"\\\".\");\n }\n}; // Handle legacy props during their deprecation phase\n\n\nvar convertProps = function convertProps(props) {\n var convertedProps = (0, _extends2.default)({}, props);\n var resolutions = convertedProps.resolutions,\n sizes = convertedProps.sizes,\n critical = convertedProps.critical;\n\n if (resolutions) {\n convertedProps.fixed = resolutions;\n logDeprecationNotice(\"resolutions\", \"the gatsby-image v2 prop \\\"fixed\\\"\");\n delete convertedProps.resolutions;\n }\n\n if (sizes) {\n convertedProps.fluid = sizes;\n logDeprecationNotice(\"sizes\", \"the gatsby-image v2 prop \\\"fluid\\\"\");\n delete convertedProps.sizes;\n }\n\n if (critical) {\n logDeprecationNotice(\"critical\", \"the native \\\"loading\\\" attribute\");\n convertedProps.loading = \"eager\";\n } // convert fluid & fixed to arrays so we only have to work with arrays\n\n\n if (convertedProps.fluid) {\n convertedProps.fluid = groupByMedia([].concat(convertedProps.fluid));\n }\n\n if (convertedProps.fixed) {\n convertedProps.fixed = groupByMedia([].concat(convertedProps.fixed));\n }\n\n return convertedProps;\n};\n/**\n * Checks if fluid or fixed are art-direction arrays.\n *\n * @param currentData {{media?: string}[]} The props to check for images.\n * @return {boolean}\n */\n\n\nvar hasArtDirectionSupport = function hasArtDirectionSupport(currentData) {\n return !!currentData && Array.isArray(currentData) && currentData.some(function (image) {\n return typeof image.media !== \"undefined\";\n });\n};\n/**\n * Tries to detect if a media query matches the current viewport.\n * @property media {{media?: string}} A media query string.\n * @return {boolean}\n */\n\n\nvar matchesMedia = function matchesMedia(_ref) {\n var media = _ref.media;\n return media ? isBrowser && !!window.matchMedia(media).matches : false;\n};\n/**\n * Find the source of an image to use as a key in the image cache.\n * Use `the first image in either `fixed` or `fluid`\n * @param {{fluid: {src: string, media?: string}[], fixed: {src: string, media?: string}[]}} args\n * @return {string?} Returns image src or undefined it not given.\n */\n\n\nvar getImageCacheKey = function getImageCacheKey(_ref2) {\n var fluid = _ref2.fluid,\n fixed = _ref2.fixed;\n var srcData = getCurrentSrcData(fluid || fixed || []);\n return srcData && srcData.src;\n};\n/**\n * Returns the current src - Preferably with art-direction support.\n * @param currentData {{media?: string}[], maxWidth?: Number, maxHeight?: Number} The fluid or fixed image array.\n * @return {{src: string, media?: string, maxWidth?: Number, maxHeight?: Number}}\n */\n\n\nvar getCurrentSrcData = function getCurrentSrcData(currentData) {\n if (isBrowser && hasArtDirectionSupport(currentData)) {\n // Do we have an image for the current Viewport?\n var foundMedia = currentData.findIndex(matchesMedia);\n\n if (foundMedia !== -1) {\n return currentData[foundMedia];\n } // No media matches, select first element without a media condition\n\n\n var noMedia = currentData.findIndex(function (image) {\n return typeof image.media === \"undefined\";\n });\n\n if (noMedia !== -1) {\n return currentData[noMedia];\n }\n } // Else return the first image.\n\n\n return currentData[0];\n}; // Cache if we've seen an image before so we don't bother with\n// lazy-loading & fading in on subsequent mounts.\n\n\nvar imageCache = Object.create({});\n\nvar inImageCache = function inImageCache(props) {\n var convertedProps = convertProps(props);\n var cacheKey = getImageCacheKey(convertedProps);\n return imageCache[cacheKey] || false;\n};\n\nvar activateCacheForImage = function activateCacheForImage(props) {\n var convertedProps = convertProps(props);\n var cacheKey = getImageCacheKey(convertedProps);\n\n if (cacheKey) {\n imageCache[cacheKey] = true;\n }\n}; // Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\n\n\nvar hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nvar isBrowser = typeof window !== \"undefined\";\nvar hasIOSupport = isBrowser && window.IntersectionObserver;\nvar io;\nvar listeners = new WeakMap();\n\nfunction getIO() {\n if (typeof io === \"undefined\" && typeof window !== \"undefined\" && window.IntersectionObserver) {\n io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (listeners.has(entry.target)) {\n var cb = listeners.get(entry.target); // Edge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(entry.target);\n listeners.delete(entry.target);\n cb();\n }\n }\n });\n }, {\n rootMargin: \"200px\"\n });\n }\n\n return io;\n}\n\nfunction generateImageSources(imageVariants) {\n return imageVariants.map(function (_ref3) {\n var src = _ref3.src,\n srcSet = _ref3.srcSet,\n srcSetWebp = _ref3.srcSetWebp,\n media = _ref3.media,\n sizes = _ref3.sizes;\n return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {\n key: src\n }, srcSetWebp && /*#__PURE__*/_react.default.createElement(\"source\", {\n type: \"image/webp\",\n media: media,\n srcSet: srcSetWebp,\n sizes: sizes\n }), srcSet && /*#__PURE__*/_react.default.createElement(\"source\", {\n media: media,\n srcSet: srcSet,\n sizes: sizes\n }));\n });\n} // Return an array ordered by elements having a media prop, does not use\n// native sort, as a stable sort is not guaranteed by all browsers/versions\n\n\nfunction groupByMedia(imageVariants) {\n var withMedia = [];\n var without = [];\n imageVariants.forEach(function (variant) {\n return (variant.media ? withMedia : without).push(variant);\n });\n\n if (without.length > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"We've found \" + without.length + \" sources without a media property. They might be ignored by the browser, see: https://www.gatsbyjs.org/packages/gatsby-image/#art-directing-multiple-images\");\n }\n\n return [].concat(withMedia, without);\n}\n\nfunction generateTracedSVGSources(imageVariants) {\n return imageVariants.map(function (_ref4) {\n var src = _ref4.src,\n media = _ref4.media,\n tracedSVG = _ref4.tracedSVG;\n return /*#__PURE__*/_react.default.createElement(\"source\", {\n key: src,\n media: media,\n srcSet: tracedSVG\n });\n });\n}\n\nfunction generateBase64Sources(imageVariants) {\n return imageVariants.map(function (_ref5) {\n var src = _ref5.src,\n media = _ref5.media,\n base64 = _ref5.base64;\n return /*#__PURE__*/_react.default.createElement(\"source\", {\n key: src,\n media: media,\n srcSet: base64\n });\n });\n}\n\nfunction generateNoscriptSource(_ref6, isWebp) {\n var srcSet = _ref6.srcSet,\n srcSetWebp = _ref6.srcSetWebp,\n media = _ref6.media,\n sizes = _ref6.sizes;\n var src = isWebp ? srcSetWebp : srcSet;\n var mediaAttr = media ? \"media=\\\"\" + media + \"\\\" \" : \"\";\n var typeAttr = isWebp ? \"type='image/webp' \" : \"\";\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\" \" : \"\";\n return \"\";\n}\n\nfunction generateNoscriptSources(imageVariants) {\n return imageVariants.map(function (variant) {\n return (variant.srcSetWebp ? generateNoscriptSource(variant, true) : \"\") + generateNoscriptSource(variant);\n }).join(\"\");\n}\n\nvar listenToIntersections = function listenToIntersections(el, cb) {\n var observer = getIO();\n\n if (observer) {\n observer.observe(el);\n listeners.set(el, cb);\n }\n\n return function () {\n observer.unobserve(el);\n listeners.delete(el);\n };\n};\n\nvar noscriptImg = function noscriptImg(props) {\n // Check if prop exists before adding each attribute to the string output below to prevent\n // HTML validation issues caused by empty values like width=\"\" and height=\"\"\n var src = props.src ? \"src=\\\"\" + props.src + \"\\\" \" : \"src=\\\"\\\" \"; // required attribute\n\n var sizes = props.sizes ? \"sizes=\\\"\" + props.sizes + \"\\\" \" : \"\";\n var srcSet = props.srcSet ? \"srcset=\\\"\" + props.srcSet + \"\\\" \" : \"\";\n var title = props.title ? \"title=\\\"\" + props.title + \"\\\" \" : \"\";\n var alt = props.alt ? \"alt=\\\"\" + props.alt + \"\\\" \" : \"alt=\\\"\\\" \"; // required attribute\n\n var width = props.width ? \"width=\\\"\" + props.width + \"\\\" \" : \"\";\n var height = props.height ? \"height=\\\"\" + props.height + \"\\\" \" : \"\";\n var crossOrigin = props.crossOrigin ? \"crossorigin=\\\"\" + props.crossOrigin + \"\\\" \" : \"\";\n var loading = props.loading ? \"loading=\\\"\" + props.loading + \"\\\" \" : \"\";\n var draggable = props.draggable ? \"draggable=\\\"\" + props.draggable + \"\\\" \" : \"\";\n var sources = generateNoscriptSources(props.imageVariants);\n return \"\" + sources + \"\";\n}; // Earlier versions of gatsby-image during the 2.x cycle did not wrap\n// the `Img` component in a `picture` element. This maintains compatibility\n// until a breaking change can be introduced in the next major release\n\n\nvar Placeholder = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var src = props.src,\n imageVariants = props.imageVariants,\n generateSources = props.generateSources,\n spreadProps = props.spreadProps,\n ariaHidden = props.ariaHidden;\n\n var baseImage = /*#__PURE__*/_react.default.createElement(Img, (0, _extends2.default)({\n ref: ref,\n src: src\n }, spreadProps, {\n ariaHidden: ariaHidden\n }));\n\n return imageVariants.length > 1 ? /*#__PURE__*/_react.default.createElement(\"picture\", null, generateSources(imageVariants), baseImage) : baseImage;\n});\n\nvar Img = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var sizes = props.sizes,\n srcSet = props.srcSet,\n src = props.src,\n style = props.style,\n onLoad = props.onLoad,\n onError = props.onError,\n loading = props.loading,\n draggable = props.draggable,\n ariaHidden = props.ariaHidden,\n otherProps = (0, _objectWithoutPropertiesLoose2.default)(props, [\"sizes\", \"srcSet\", \"src\", \"style\", \"onLoad\", \"onError\", \"loading\", \"draggable\", \"ariaHidden\"]);\n return /*#__PURE__*/_react.default.createElement(\"img\", (0, _extends2.default)({\n \"aria-hidden\": ariaHidden,\n sizes: sizes,\n srcSet: srcSet,\n src: src\n }, otherProps, {\n onLoad: onLoad,\n onError: onError,\n ref: ref,\n loading: loading,\n draggable: draggable,\n style: (0, _extends2.default)({\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n objectPosition: \"center\"\n }, style)\n }));\n});\n\nImg.propTypes = {\n style: _propTypes.default.object,\n onError: _propTypes.default.func,\n onLoad: _propTypes.default.func\n};\n\nvar Image = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(Image, _React$Component);\n\n function Image(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // If this image has already been loaded before then we can assume it's\n // already in the browser cache so it's cheap to just show directly.\n\n _this.seenBefore = isBrowser && inImageCache(props);\n _this.isCritical = props.loading === \"eager\" || props.critical;\n _this.addNoScript = !(_this.isCritical && !props.fadeIn);\n _this.useIOSupport = !hasNativeLazyLoadSupport && hasIOSupport && !_this.isCritical && !_this.seenBefore;\n var isVisible = _this.isCritical || isBrowser && (hasNativeLazyLoadSupport || !_this.useIOSupport);\n _this.state = {\n isVisible: isVisible,\n imgLoaded: false,\n imgCached: false,\n fadeIn: !_this.seenBefore && props.fadeIn\n };\n _this.imageRef = /*#__PURE__*/_react.default.createRef();\n _this.placeholderRef = props.placeholderRef || /*#__PURE__*/_react.default.createRef();\n _this.handleImageLoaded = _this.handleImageLoaded.bind((0, _assertThisInitialized2.default)(_this));\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = Image.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.state.isVisible && typeof this.props.onStartLoad === \"function\") {\n this.props.onStartLoad({\n wasCached: inImageCache(this.props)\n });\n }\n\n if (this.isCritical) {\n var img = this.imageRef.current;\n\n if (img && img.complete) {\n this.handleImageLoaded();\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.cleanUpListeners) {\n this.cleanUpListeners();\n }\n } // Specific to IntersectionObserver based lazy-load support\n ;\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.useIOSupport && ref) {\n this.cleanUpListeners = listenToIntersections(ref, function () {\n var imageInCache = inImageCache(_this2.props);\n\n if (!_this2.state.isVisible && typeof _this2.props.onStartLoad === \"function\") {\n _this2.props.onStartLoad({\n wasCached: imageInCache\n });\n } // imgCached and imgLoaded must update after isVisible,\n // Once isVisible is true, imageRef becomes accessible, which imgCached needs access to.\n // imgLoaded and imgCached are in a 2nd setState call to be changed together,\n // avoiding initiating unnecessary animation frames from style changes.\n\n\n _this2.setState({\n isVisible: true\n }, function () {\n _this2.setState({\n imgLoaded: imageInCache,\n // `currentSrc` should be a string, but can be `undefined` in IE,\n // !! operator validates the value is not undefined/null/\"\"\n // for lazyloaded components this might be null\n // TODO fix imgCached behaviour as it's now false when it's lazyloaded\n imgCached: !!(_this2.imageRef.current && _this2.imageRef.current.currentSrc)\n });\n });\n });\n }\n };\n\n _proto.handleImageLoaded = function handleImageLoaded() {\n activateCacheForImage(this.props);\n this.setState({\n imgLoaded: true\n });\n\n if (this.props.onLoad) {\n this.props.onLoad();\n }\n };\n\n _proto.render = function render() {\n var _convertProps = convertProps(this.props),\n title = _convertProps.title,\n alt = _convertProps.alt,\n className = _convertProps.className,\n _convertProps$style = _convertProps.style,\n style = _convertProps$style === void 0 ? {} : _convertProps$style,\n _convertProps$imgStyl = _convertProps.imgStyle,\n imgStyle = _convertProps$imgStyl === void 0 ? {} : _convertProps$imgStyl,\n _convertProps$placeho = _convertProps.placeholderStyle,\n placeholderStyle = _convertProps$placeho === void 0 ? {} : _convertProps$placeho,\n placeholderClassName = _convertProps.placeholderClassName,\n fluid = _convertProps.fluid,\n fixed = _convertProps.fixed,\n backgroundColor = _convertProps.backgroundColor,\n durationFadeIn = _convertProps.durationFadeIn,\n Tag = _convertProps.Tag,\n itemProp = _convertProps.itemProp,\n loading = _convertProps.loading,\n draggable = _convertProps.draggable;\n\n var shouldReveal = this.state.fadeIn === false || this.state.imgLoaded;\n var shouldFadeIn = this.state.fadeIn === true && !this.state.imgCached;\n var imageStyle = (0, _extends2.default)({\n opacity: shouldReveal ? 1 : 0,\n transition: shouldFadeIn ? \"opacity \" + durationFadeIn + \"ms\" : \"none\"\n }, imgStyle);\n var bgColor = typeof backgroundColor === \"boolean\" ? \"lightgray\" : backgroundColor;\n var delayHideStyle = {\n transitionDelay: durationFadeIn + \"ms\"\n };\n var imagePlaceholderStyle = (0, _extends2.default)({\n opacity: this.state.imgLoaded ? 0 : 1\n }, shouldFadeIn && delayHideStyle, imgStyle, placeholderStyle);\n var placeholderImageProps = {\n title: title,\n alt: !this.state.isVisible ? alt : \"\",\n style: imagePlaceholderStyle,\n className: placeholderClassName,\n itemProp: itemProp\n };\n\n if (fluid) {\n var imageVariants = fluid;\n var image = getCurrentSrcData(fluid);\n return /*#__PURE__*/_react.default.createElement(Tag, {\n className: (className ? className : \"\") + \" gatsby-image-wrapper\",\n style: (0, _extends2.default)({\n position: \"relative\",\n overflow: \"hidden\",\n maxWidth: image.maxWidth ? image.maxWidth + \"px\" : null,\n maxHeight: image.maxHeight ? image.maxHeight + \"px\" : null\n }, style),\n ref: this.handleRef,\n key: \"fluid-\" + JSON.stringify(image.srcSet)\n }, /*#__PURE__*/_react.default.createElement(Tag, {\n \"aria-hidden\": true,\n style: {\n width: \"100%\",\n paddingBottom: 100 / image.aspectRatio + \"%\"\n }\n }), bgColor && /*#__PURE__*/_react.default.createElement(Tag, {\n \"aria-hidden\": true,\n title: title,\n style: (0, _extends2.default)({\n backgroundColor: bgColor,\n position: \"absolute\",\n top: 0,\n bottom: 0,\n opacity: !this.state.imgLoaded ? 1 : 0,\n right: 0,\n left: 0\n }, shouldFadeIn && delayHideStyle)\n }), image.base64 && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: image.base64,\n spreadProps: placeholderImageProps,\n imageVariants: imageVariants,\n generateSources: generateBase64Sources\n }), image.tracedSVG && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: image.tracedSVG,\n spreadProps: placeholderImageProps,\n imageVariants: imageVariants,\n generateSources: generateTracedSVGSources\n }), this.state.isVisible && /*#__PURE__*/_react.default.createElement(\"picture\", null, generateImageSources(imageVariants), /*#__PURE__*/_react.default.createElement(Img, {\n alt: alt,\n title: title,\n sizes: image.sizes,\n src: image.src,\n crossOrigin: this.props.crossOrigin,\n srcSet: image.srcSet,\n style: imageStyle,\n ref: this.imageRef,\n onLoad: this.handleImageLoaded,\n onError: this.props.onError,\n itemProp: itemProp,\n loading: loading,\n draggable: draggable\n })), this.addNoScript && /*#__PURE__*/_react.default.createElement(\"noscript\", {\n dangerouslySetInnerHTML: {\n __html: noscriptImg((0, _extends2.default)({\n alt: alt,\n title: title,\n loading: loading\n }, image, {\n imageVariants: imageVariants\n }))\n }\n }));\n }\n\n if (fixed) {\n var _imageVariants = fixed;\n\n var _image = getCurrentSrcData(fixed);\n\n var divStyle = (0, _extends2.default)({\n position: \"relative\",\n overflow: \"hidden\",\n display: \"inline-block\",\n width: _image.width,\n height: _image.height\n }, style);\n\n if (style.display === \"inherit\") {\n delete divStyle.display;\n }\n\n return /*#__PURE__*/_react.default.createElement(Tag, {\n className: (className ? className : \"\") + \" gatsby-image-wrapper\",\n style: divStyle,\n ref: this.handleRef,\n key: \"fixed-\" + JSON.stringify(_image.srcSet)\n }, bgColor && /*#__PURE__*/_react.default.createElement(Tag, {\n \"aria-hidden\": true,\n title: title,\n style: (0, _extends2.default)({\n backgroundColor: bgColor,\n width: _image.width,\n opacity: !this.state.imgLoaded ? 1 : 0,\n height: _image.height\n }, shouldFadeIn && delayHideStyle)\n }), _image.base64 && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: _image.base64,\n spreadProps: placeholderImageProps,\n imageVariants: _imageVariants,\n generateSources: generateBase64Sources\n }), _image.tracedSVG && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: _image.tracedSVG,\n spreadProps: placeholderImageProps,\n imageVariants: _imageVariants,\n generateSources: generateTracedSVGSources\n }), this.state.isVisible && /*#__PURE__*/_react.default.createElement(\"picture\", null, generateImageSources(_imageVariants), /*#__PURE__*/_react.default.createElement(Img, {\n alt: alt,\n title: title,\n width: _image.width,\n height: _image.height,\n sizes: _image.sizes,\n src: _image.src,\n crossOrigin: this.props.crossOrigin,\n srcSet: _image.srcSet,\n style: imageStyle,\n ref: this.imageRef,\n onLoad: this.handleImageLoaded,\n onError: this.props.onError,\n itemProp: itemProp,\n loading: loading,\n draggable: draggable\n })), this.addNoScript && /*#__PURE__*/_react.default.createElement(\"noscript\", {\n dangerouslySetInnerHTML: {\n __html: noscriptImg((0, _extends2.default)({\n alt: alt,\n title: title,\n loading: loading\n }, _image, {\n imageVariants: _imageVariants\n }))\n }\n }));\n }\n\n return null;\n };\n\n return Image;\n}(_react.default.Component);\n\nImage.defaultProps = {\n fadeIn: true,\n durationFadeIn: 500,\n alt: \"\",\n Tag: \"div\",\n // We set it to `lazy` by default because it's best to default to a performant\n // setting and let the user \"opt out\" to `eager`\n loading: \"lazy\"\n};\n\nvar fixedObject = _propTypes.default.shape({\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n src: _propTypes.default.string.isRequired,\n srcSet: _propTypes.default.string.isRequired,\n base64: _propTypes.default.string,\n tracedSVG: _propTypes.default.string,\n srcWebp: _propTypes.default.string,\n srcSetWebp: _propTypes.default.string,\n media: _propTypes.default.string\n});\n\nvar fluidObject = _propTypes.default.shape({\n aspectRatio: _propTypes.default.number.isRequired,\n src: _propTypes.default.string.isRequired,\n srcSet: _propTypes.default.string.isRequired,\n sizes: _propTypes.default.string.isRequired,\n base64: _propTypes.default.string,\n tracedSVG: _propTypes.default.string,\n srcWebp: _propTypes.default.string,\n srcSetWebp: _propTypes.default.string,\n media: _propTypes.default.string,\n maxWidth: _propTypes.default.number,\n maxHeight: _propTypes.default.number\n});\n\nfunction requireFixedOrFluid(originalPropTypes) {\n return function (props, propName, componentName) {\n var _PropTypes$checkPropT;\n\n if (!props.fixed && !props.fluid) {\n throw new Error(\"The prop `fluid` or `fixed` is marked as required in `\" + componentName + \"`, but their values are both `undefined`.\");\n }\n\n _propTypes.default.checkPropTypes((_PropTypes$checkPropT = {}, _PropTypes$checkPropT[propName] = originalPropTypes, _PropTypes$checkPropT), props, \"prop\", componentName);\n };\n} // If you modify these propTypes, please don't forget to update following files as well:\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-image/index.d.ts\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-image/README.md#gatsby-image-props\n// https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/gatsby-image.md#gatsby-image-props\n\n\nImage.propTypes = {\n resolutions: fixedObject,\n sizes: fluidObject,\n fixed: requireFixedOrFluid(_propTypes.default.oneOfType([fixedObject, _propTypes.default.arrayOf(fixedObject)])),\n fluid: requireFixedOrFluid(_propTypes.default.oneOfType([fluidObject, _propTypes.default.arrayOf(fluidObject)])),\n fadeIn: _propTypes.default.bool,\n durationFadeIn: _propTypes.default.number,\n title: _propTypes.default.string,\n alt: _propTypes.default.string,\n className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n // Support Glamor's css prop.\n critical: _propTypes.default.bool,\n crossOrigin: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),\n style: _propTypes.default.object,\n imgStyle: _propTypes.default.object,\n placeholderStyle: _propTypes.default.object,\n placeholderClassName: _propTypes.default.string,\n backgroundColor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),\n onLoad: _propTypes.default.func,\n onError: _propTypes.default.func,\n onStartLoad: _propTypes.default.func,\n Tag: _propTypes.default.string,\n itemProp: _propTypes.default.string,\n loading: _propTypes.default.oneOf([\"auto\", \"lazy\", \"eager\"]),\n draggable: _propTypes.default.bool\n};\nvar _default = Image;\nexports.default = _default;","export function formatReadingTime(minutes) {\n let cups = Math.round(minutes / 5)\n let bowls = 0\n if (cups > 5) {\n return `${new Array(Math.round(cups / Math.E))\n .fill('🍱')\n .join('')} ${minutes} min read`\n } else {\n return `${new Array(cups || 1).fill('☕️').join('')} ${minutes} min read`\n }\n}\n\n// `lang` is optional and will default to the current user agent locale\nexport function formatPostDate(date, lang) {\n if (typeof Date.prototype.toLocaleDateString !== 'function') {\n return date\n }\n\n date = new Date(date)\n const args = [\n lang,\n { day: 'numeric', month: 'long', year: 'numeric' },\n ].filter(Boolean)\n return date.toLocaleDateString(...args)\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json new file mode 100644 index 0000000..69b2250 --- /dev/null +++ b/chunk-map.json @@ -0,0 +1 @@ +{"polyfill":["/polyfill-905013744daa67b74738.js"],"app":["/app-c10812a55a62a7ee38ef.js"],"component---node-modules-gatsby-plugin-offline-app-shell-js":["/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js"],"component---src-pages-404-js":["/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js"],"component---src-pages-index-js":["/component---src-pages-index-js-7646eb4c62543c42a964.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js"]} \ No newline at end of file diff --git a/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js b/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js new file mode 100644 index 0000000..570468b --- /dev/null +++ b/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{MqWW:function(t,e,n){"use strict";var u=n("TqRt");e.__esModule=!0,e.default=void 0;var a=u(n("VbXa")),o=u(n("q1tI")),r=function(t){function e(){return t.apply(this,arguments)||this}return(0,a.default)(e,t),e.prototype.render=function(){return o.default.createElement(o.default.Fragment,null)},e}(o.default.Component);e.default=r}}]); +//# sourceMappingURL=component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js.map \ No newline at end of file diff --git a/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js.map b/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js.map new file mode 100644 index 0000000..17c7567 --- /dev/null +++ b/component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/gatsby-plugin-offline/app-shell.js"],"names":["_interopRequireDefault","require","exports","__esModule","_inheritsLoose2","_react","_default","_React$Component","AppShell","apply","this","arguments","prototype","render","createElement","Fragment","Component"],"mappings":"2FAEA,IAAIA,EAAyBC,EAAQ,QAErCC,EAAQC,YAAa,EACrBD,EAAO,aAAc,EAErB,IAAIE,EAAkBJ,EAAuBC,EAAQ,SAEjDI,EAASL,EAAuBC,EAAQ,SAoBxCK,EAhBJ,SAAUC,GAGR,SAASC,IACP,OAAOD,EAAiBE,MAAMC,KAAMC,YAAcD,KASpD,OAZA,EAAIN,EAAe,SAAaI,EAAUD,GAM7BC,EAASI,UAEfC,OAAS,WACd,OAAOR,EAAM,QAAYS,cAAcT,EAAM,QAAYU,SAAU,OAG9DP,EAbT,CAcEH,EAAM,QAAYW,WAGpBd,EAAO,QAAcI","file":"component---node-modules-gatsby-plugin-offline-app-shell-js-f3d0a21fe8149f33caf4.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar AppShell =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inheritsLoose2[\"default\"])(AppShell, _React$Component);\n\n function AppShell() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = AppShell.prototype;\n\n _proto.render = function render() {\n return _react[\"default\"].createElement(_react[\"default\"].Fragment, null);\n };\n\n return AppShell;\n}(_react[\"default\"].Component);\n\nvar _default = AppShell;\nexports[\"default\"] = _default;"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js b/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js new file mode 100644 index 0000000..6ac9ef6 --- /dev/null +++ b/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{w2l6:function(t,e,n){"use strict";n.r(e),n.d(e,"pageQuery",(function(){return l}));var a=n("dI71"),o=n("q1tI"),r=n.n(o),i=n("Bl7J"),u=n("vrFN"),s=function(t){function e(){return t.apply(this,arguments)||this}return Object(a.a)(e,t),e.prototype.render=function(){var t=this.props.data.site.siteMetadata.title;return r.a.createElement(i.a,{location:this.props.location,title:t},r.a.createElement(u.a,{title:"404: Not Found"}),r.a.createElement("h1",null,"Not Found"),r.a.createElement("p",null,"You just hit a route that doesn't exist... the sadness."))},e}(r.a.Component);e.default=s;var l="3159585216"}}]); +//# sourceMappingURL=component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js.map \ No newline at end of file diff --git a/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js.map b/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js.map new file mode 100644 index 0000000..dddfa3f --- /dev/null +++ b/component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/pages/404.js"],"names":["NotFoundPage","render","siteTitle","this","props","data","site","siteMetadata","title","location","React","Component","pageQuery"],"mappings":"yMAMMA,E,kGACJC,OAAA,WAAU,IAEFC,EADWC,KAAKC,MAAdC,KACeC,KAAKC,aAAaC,MAEzC,OACE,kBAAC,IAAD,CAAQC,SAAUN,KAAKC,MAAMK,SAAUD,MAAON,GAC5C,kBAAC,IAAD,CAAKM,MAAM,mBACX,yCACA,wF,GATmBE,IAAMC,WAelBX,YAER,IAAMY,EAAS","file":"component---src-pages-404-js-6bc0a7a4e4c670baf5f8.js","sourcesContent":["import React from 'react'\nimport { graphql } from 'gatsby'\n\nimport Layout from '../components/layout'\nimport SEO from '../components/seo'\n\nclass NotFoundPage extends React.Component {\n render() {\n const { data } = this.props\n const siteTitle = data.site.siteMetadata.title\n\n return (\n \n \n

    Not Found

    \n

    You just hit a route that doesn't exist... the sadness.

    \n
    \n )\n }\n}\n\nexport default NotFoundPage\n\nexport const pageQuery = graphql`\n query {\n site {\n siteMetadata {\n title\n }\n }\n }\n`\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-index-js-7646eb4c62543c42a964.js b/component---src-pages-index-js-7646eb4c62543c42a964.js new file mode 100644 index 0000000..43b9dc8 --- /dev/null +++ b/component---src-pages-index-js-7646eb4c62543c42a964.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{RXBc:function(e,t,a){"use strict";a.r(t),a.d(t,"pageQuery",(function(){return f}));var r=a("dI71"),n=a("q1tI"),l=a.n(n),o=a("Wbzz"),i=a("6Gk8"),c=a("Bl7J"),m=a("p3AD"),s=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){return l.a.createElement("footer",{style:{marginTop:Object(m.a)(2.5),paddingTop:Object(m.a)(1)}},l.a.createElement("a",{href:"https://github.com/memory9",rel:"noopener noreferrer"},"github")," ","•"," ",l.a.createElement("a",{href:"mailto:mamingrui9@gmail.com",rel:"noopener noreferrer"},"email")," ","© ",(new Date).getFullYear(),", Built with"," ",l.a.createElement("a",{href:"https://www.gatsbyjs.org"},"Gatsby"))},t}(l.a.Component),u=a("vrFN"),p=a("yWgo"),d=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this.props.data,t=e.site.siteMetadata.title,a=e.allMarkdownRemark.edges;return l.a.createElement(c.a,{location:this.props.location,title:t},l.a.createElement(u.a,{title:"All posts",keywords:["blog","gatsby","javascript","react"]}),l.a.createElement("aside",null,l.a.createElement(i.a,null)),l.a.createElement("main",null,a.map((function(e){var t=e.node,a=t.frontmatter.title||t.fields.slug;return l.a.createElement("article",{key:t.fields.slug},l.a.createElement("header",null,l.a.createElement("h3",{style:{fontSize:Object(m.a)(1),marginBottom:Object(m.a)(1/4)}},l.a.createElement(o.Link,{style:{boxShadow:"none"},to:t.fields.slug,rel:"bookmark"},a)),l.a.createElement("small",null,t.frontmatter.date," • "+Object(p.a)(t.timeToRead))),l.a.createElement("p",{dangerouslySetInnerHTML:{__html:t.frontmatter.description||t.excerpt}}))}))),l.a.createElement(s,null))},t}(l.a.Component),f=(t.default=d,"2851275527")}}]); +//# sourceMappingURL=component---src-pages-index-js-7646eb4c62543c42a964.js.map \ No newline at end of file diff --git a/component---src-pages-index-js-7646eb4c62543c42a964.js.map b/component---src-pages-index-js-7646eb4c62543c42a964.js.map new file mode 100644 index 0000000..36a7bdb --- /dev/null +++ b/component---src-pages-index-js-7646eb4c62543c42a964.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/footer.js","webpack:///./src/pages/index.js"],"names":["Footer","render","style","marginTop","rhythm","paddingTop","href","rel","Date","getFullYear","React","Component","BlogIndex","data","this","props","siteTitle","site","siteMetadata","title","posts","allMarkdownRemark","edges","location","keywords","map","node","frontmatter","fields","slug","key","fontSize","marginBottom","boxShadow","to","date","formatReadingTime","timeToRead","dangerouslySetInnerHTML","__html","description","excerpt","pageQuery"],"mappings":"iOA2BeA,E,kGAvBbC,OAAA,WACE,OACE,4BACEC,MAAO,CACLC,UAAWC,YAAO,KAClBC,WAAYD,YAAO,KAGrB,uBAAGE,KAAK,6BAA6BC,IAAI,uBAAzC,UAEK,IARP,IASS,IACP,uBAAGD,KAAK,8BAA8BC,IAAI,uBAA1C,SAEK,IAZP,MAaK,IAAIC,MAAOC,cAbhB,mBAeE,uBAAGH,KAAK,4BAAR,Y,GAlBaI,IAAMC,W,wBCOrBC,E,kGACJX,OAAA,WAAU,IACAY,EAASC,KAAKC,MAAdF,KACFG,EAAYH,EAAKI,KAAKC,aAAaC,MACnCC,EAAQP,EAAKQ,kBAAkBC,MAErC,OACE,kBAAC,IAAD,CAAQC,SAAUT,KAAKC,MAAMQ,SAAUJ,MAAOH,GAC5C,kBAAC,IAAD,CACEG,MAAM,YACNK,SAAU,CAAC,OAAD,iCAEZ,+BACE,kBAAC,IAAD,OAEF,8BACGJ,EAAMK,KAAI,YAAe,IAAZC,EAAW,EAAXA,KACNP,EAAQO,EAAKC,YAAYR,OAASO,EAAKE,OAAOC,KACpD,OACE,6BAASC,IAAKJ,EAAKE,OAAOC,MACxB,gCACE,wBACE3B,MAAO,CACL6B,SAAU3B,YAAO,GACjB4B,aAAc5B,YAAO,EAAI,KAG3B,kBAAC,OAAD,CACEF,MAAO,CAAE+B,UAAU,QACnBC,GAAIR,EAAKE,OAAOC,KAChBtB,IAAI,YAEHY,IAGL,+BACGO,EAAKC,YAAYQ,KADpB,MAESC,YAAkBV,EAAKW,cAGlC,uBACEC,wBAAyB,CACvBC,OAAQb,EAAKC,YAAYa,aAAed,EAAKe,gBAOzD,kBAAC,EAAD,Q,GAjDgB/B,IAAMC,WAyDjB+B,GAFE9B,YAEO","file":"component---src-pages-index-js-7646eb4c62543c42a964.js","sourcesContent":["import React from 'react'\nimport { rhythm } from '../utils/typography'\n\nclass Footer extends React.Component {\n render() {\n return (\n \n \n github\n {' '}\n •{' '}\n \n email\n {' '}\n © {new Date().getFullYear()}, Built with\n {` `}\n Gatsby\n \n )\n }\n}\n\nexport default Footer\n","import React from 'react'\nimport { Link, graphql } from 'gatsby'\n\nimport Bio from '../components/bio'\nimport Layout from '../components/layout'\nimport Footer from '../components/footer'\nimport SEO from '../components/seo'\nimport { rhythm } from '../utils/typography'\nimport { formatReadingTime } from '../utils/helper'\n\nclass BlogIndex extends React.Component {\n render() {\n const { data } = this.props\n const siteTitle = data.site.siteMetadata.title\n const posts = data.allMarkdownRemark.edges\n\n return (\n \n \n \n
    \n {posts.map(({ node }) => {\n const title = node.frontmatter.title || node.fields.slug\n return (\n
    \n
    \n \n \n {title}\n \n \n \n {node.frontmatter.date}\n {` • ${formatReadingTime(node.timeToRead)}`}\n \n
    \n \n
    \n )\n })}\n
    \n
    \n \n )\n }\n}\n\nexport default BlogIndex\n\nexport const pageQuery = graphql`\n query {\n site {\n siteMetadata {\n title\n }\n }\n allMarkdownRemark(sort: { fields: [frontmatter___date], order: DESC }) {\n edges {\n node {\n excerpt\n fields {\n slug\n }\n timeToRead\n frontmatter {\n date(formatString: \"MMMM DD, YYYY\")\n title\n description\n }\n }\n }\n }\n }\n`\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js b/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js new file mode 100644 index 0000000..7c1b700 --- /dev/null +++ b/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{yZlL:function(e,t,a){"use strict";a.r(t),a.d(t,"pageQuery",(function(){return d}));var n=a("dI71"),r=a("q1tI"),l=a.n(r),i=a("Wbzz"),o=a("6Gk8"),c=a("Bl7J"),s=a("vrFN"),m=a("p3AD"),p=a("yWgo"),u=function(e){function t(){return e.apply(this,arguments)||this}return Object(n.a)(t,e),t.prototype.render=function(){var e=this.props.data.markdownRemark,t=this.props.data.site.siteMetadata.title,a=this.props.pageContext,n=a.previous,r=a.next;return l.a.createElement(c.a,{location:this.props.location,title:t},l.a.createElement(s.a,{title:e.frontmatter.title,description:e.frontmatter.description||e.excerpt}),l.a.createElement("main",null,l.a.createElement("article",null,l.a.createElement("header",null,l.a.createElement("h1",null,e.frontmatter.title),l.a.createElement("p",{style:Object.assign({},Object(m.b)(-.2),{display:"block",marginBottom:Object(m.a)(1),marginTop:Object(m.a)(-.8)})},e.frontmatter.date," • "+Object(p.a)(e.timeToRead))),l.a.createElement("div",{dangerouslySetInnerHTML:{__html:e.html}}))),l.a.createElement("hr",{style:{marginBottom:Object(m.a)(1)}}),l.a.createElement(o.a,null),l.a.createElement("nav",null,l.a.createElement("ul",{style:{display:"flex",flexWrap:"wrap",justifyContent:"space-between",listStyle:"none",padding:0}},l.a.createElement("li",null,n&&l.a.createElement(i.Link,{to:n.fields.slug,rel:"prev"},"← ",n.frontmatter.title)),l.a.createElement("li",null,r&&l.a.createElement(i.Link,{to:r.fields.slug,rel:"next"},r.frontmatter.title," →")))))},t}(l.a.Component);t.default=u;var d="68881521"}}]); +//# sourceMappingURL=component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js.map \ No newline at end of file diff --git a/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js.map b/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js.map new file mode 100644 index 0000000..5696ced --- /dev/null +++ b/component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/templates/blog-post.js"],"names":["BlogPostTemplate","render","post","this","props","data","markdownRemark","siteTitle","site","siteMetadata","title","pageContext","previous","next","location","frontmatter","description","excerpt","style","scale","display","marginBottom","rhythm","marginTop","date","formatReadingTime","timeToRead","dangerouslySetInnerHTML","__html","html","flexWrap","justifyContent","listStyle","padding","to","fields","slug","rel","React","Component","pageQuery"],"mappings":"yPASMA,E,kGACJC,OAAA,WACE,IAAMC,EAAOC,KAAKC,MAAMC,KAAKC,eACvBC,EAAYJ,KAAKC,MAAMC,KAAKG,KAAKC,aAAaC,MAF7C,EAGoBP,KAAKC,MAAMO,YAA9BC,EAHD,EAGCA,SAAUC,EAHX,EAGWA,KAElB,OACE,kBAAC,IAAD,CAAQC,SAAUX,KAAKC,MAAMU,SAAUJ,MAAOH,GAC5C,kBAAC,IAAD,CACEG,MAAOR,EAAKa,YAAYL,MACxBM,YAAad,EAAKa,YAAYC,aAAed,EAAKe,UAEpD,8BACE,iCACE,gCACE,4BAAKf,EAAKa,YAAYL,OACtB,uBACEQ,MAAK,iBACAC,aAAM,IADN,CAEHC,QAAQ,QACRC,aAAcC,YAAO,GACrBC,UAAWD,aAAO,OAGnBpB,EAAKa,YAAYS,KARpB,MASSC,YAAkBvB,EAAKwB,cAGlC,yBAAKC,wBAAyB,CAAEC,OAAQ1B,EAAK2B,UAGjD,wBACEX,MAAO,CACLG,aAAcC,YAAO,MAGzB,kBAAC,IAAD,MACA,6BACE,wBACEJ,MAAO,CACLE,QAAQ,OACRU,SAAS,OACTC,eAAe,gBACfC,UAAU,OACVC,QAAS,IAGX,4BACGrB,GACC,kBAAC,OAAD,CAAMsB,GAAItB,EAASuB,OAAOC,KAAMC,IAAI,QAApC,KACKzB,EAASG,YAAYL,QAI9B,4BACGG,GACC,kBAAC,OAAD,CAAMqB,GAAIrB,EAAKsB,OAAOC,KAAMC,IAAI,QAC7BxB,EAAKE,YAAYL,MADpB,W,GAxDe4B,IAAMC,WAoEtBvC,YAER,IAAMwC,EAAS","file":"component---src-templates-blog-post-js-ee7909cb3cb4615f84af.js","sourcesContent":["import React from 'react'\nimport { Link, graphql } from 'gatsby'\n\nimport Bio from '../components/bio'\nimport Layout from '../components/layout'\nimport SEO from '../components/seo'\nimport { rhythm, scale } from '../utils/typography'\nimport { formatReadingTime } from '../utils/helper'\n\nclass BlogPostTemplate extends React.Component {\n render() {\n const post = this.props.data.markdownRemark\n const siteTitle = this.props.data.site.siteMetadata.title\n const { previous, next } = this.props.pageContext\n\n return (\n \n \n
    \n
    \n
    \n

    {post.frontmatter.title}

    \n \n {post.frontmatter.date}\n {` • ${formatReadingTime(post.timeToRead)}`}\n

    \n
    \n
    \n
    \n
    \n \n \n
\n \n \n )\n }\n}\n\nexport default BlogPostTemplate\n\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n site {\n siteMetadata {\n title\n author\n }\n }\n markdownRemark(fields: { slug: { eq: $slug } }) {\n id\n html\n timeToRead\n excerpt(pruneLength: 160)\n frontmatter {\n title\n date(formatString: \"MMMM DD, YYYY\")\n description\n }\n fields {\n slug\n }\n }\n }\n`\n"],"sourceRoot":""} \ No newline at end of file diff --git a/conditional-rendering-in-react/index.html b/conditional-rendering-in-react/index.html new file mode 100644 index 0000000..b778fd6 --- /dev/null +++ b/conditional-rendering-in-react/index.html @@ -0,0 +1,115 @@ +React 中的条件渲染 | Cube Blog

Cube Blog

React 中的条件渲染

November 06, 2019 • ☕️ 2 min read

什么是 React 中的条件渲染?

+

一个组件根据一个或多个条件决定其要返回(渲染)的元素。

+

if Else

+
function List({ list }) {
+  if (!list) {
+    return null
+  }
+
+  if (!list.length) {
+    return <p>Sorry, the list is empty.</p>
+  } else {
+    return (
+      <div>
+        {list.map(item => <ListItem item={item} />)}
+      </div>
+    )
+  }
+}
+

可以使用 if 表达式在渲染中提前 return。

+

三目运算符(Ternary Operation)

+

condition ? expr1 : expr2

+
function Item({ item, mode }) {
+  const isEditable = mode === 'EDIT'
+
+  return (
+    <div>
+      {isEditable ? (
+        <ItemEdit item={item} />
+      ) : (
+        <ItemView item={item} />
+      )}
+    </div>
+  )
+}
+

使用三目运算符比 if-else 表达式更加简洁明了。

+

逻辑与(&&)运算符

+

当我们想要根据条件决定是否渲染一个元素时,逻辑与运算符使得那些返回 null 的逻辑书写更加简洁。

+

在 JavaScript 中,true && 'Hello World' 相当于 'Hello World'false && 'Hello World' 相当于 false。也即,当条件表达式为真,逻辑与&& 后面的操作符会成为输出;当条件表达式为假,React 则会忽略并跳过该表达式。

+
function LoadingIndicator({ isLoading }) {
+  return (
+    <div>
+      { isLoading && <p>Loading...</p> }
+    </div>
+  )
+}
+

Switch Case 操作符

+

适用于有多个条件渲染时。

+
function Notification({ text, state }) {
+  switch(state) {
+    case 'info':
+      return <Info text={text} />
+    case 'warning':
+      return ...
+    case 'error':
+      return ...
+    default:
+      return null
+

不推荐这种方式,用下面的枚举的方式替代。

+

枚举(enums)

+
const getSpecificNotification = (text) => ({
+  info: <Info text={text} />,
+  warning: <Warning text={text} />,
+  error: <Error text={text} />,
+});
+function Notification({ state, text }) {
+  return (
+    <div>
+      {getSpecificNotification(text)[state]}
+    </div>
+  );
+}
+
+function FooBarOrFooOrBar({ isFoo, isBar }) {
+  const key = `${isFoo}-${isBar}`;
+  return (
+    <div>
+      {{
+        ['true-true']: <FooBar />,
+        ['true-false']: <Foo />,
+        ['false-true']: <Bar />,
+        ['false-false']: null,
+      }[key]}
+    </div>
+  );
+}
+
+FooBarOrFooOrBar.propTypes = {
+  isFoo: React.PropTypes.boolean.isRequired,
+  isBar: React.PropTypes.boolean.isRequired,
+}
+

嵌套条件渲染

+

尽量避免

+

可以使用之前的几种方式,但最好是将其拆分成几个更小的自己根据条件渲染的组件。

+

高阶组件(HOC)

+
// HOC declaration
+function withLoadingIndicator(Component) {
+  return function EnhancedComponent({ isLoading, ...props }) {
+    if (!isLoading) {
+      return <Component { ...props } />;
+    }
+    return <div><p>Loading...</p></div>;
+  };
+}
+// Usage
+const ListWithLoadingIndicator = withLoadingIndicator(List);
+<ListWithLoadingIndicator
+  isLoading={props.isLoading}
+  list={props.list}
+/>
+

参考

+

All React Conditional Rendering Techniques - RWieruch


这个博客用于记录我个人所读所思所想,前端开发相关。

\ No newline at end of file diff --git a/content/assets/gatsby-icon.png b/content/assets/gatsby-icon.png deleted file mode 100644 index 908bc78..0000000 Binary files a/content/assets/gatsby-icon.png and /dev/null differ diff --git a/content/assets/profile-pic.jpg b/content/assets/profile-pic.jpg deleted file mode 100644 index ac18e71..0000000 Binary files a/content/assets/profile-pic.jpg and /dev/null differ diff --git a/content/blog/hello-world/index.md b/content/blog/hello-world/index.md deleted file mode 100644 index 2d488dd..0000000 --- a/content/blog/hello-world/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Hello World -date: "2015-05-01T22:12:03.284Z" ---- - -This is my first post on my new fake blog! How exciting! - -I'm sure I'll write a lot more interesting things in the future. - -Oh, and here's a great quote from this Wikipedia on -[salted duck eggs](http://en.wikipedia.org/wiki/Salted_duck_egg). - -> A salted duck egg is a Chinese preserved food product made by soaking duck -> eggs in brine, or packing each egg in damp, salted charcoal. In Asian -> supermarkets, these eggs are sometimes sold covered in a thick layer of salted -> charcoal paste. The eggs may also be sold with the salted paste removed, -> wrapped in plastic, and vacuum packed. From the salt curing process, the -> salted duck eggs have a briny aroma, a gelatin-like egg white and a -> firm-textured, round yolk that is bright orange-red in color. - -![Chinese Salty Egg](./salty_egg.jpg) diff --git a/content/blog/hello-world/salty_egg.jpg b/content/blog/hello-world/salty_egg.jpg deleted file mode 100644 index 653fe7e..0000000 Binary files a/content/blog/hello-world/salty_egg.jpg and /dev/null differ diff --git a/content/blog/hi-folks/index.md b/content/blog/hi-folks/index.md deleted file mode 100644 index 39125ab..0000000 --- a/content/blog/hi-folks/index.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: New Beginnings -date: "2015-05-28T22:40:32.169Z" -description: This is a custom description for SEO and Open Graph purposes, rather than the default generated excerpt. Simply add a description field to the frontmatter. ---- - -Far far away, behind the word mountains, far from the countries Vokalia and -Consonantia, there live the blind texts. Separated they live in Bookmarksgrove -right at the coast of the Semantics, a large language ocean. A small river named -Duden flows by their place and supplies it with the necessary regelialia. - -## On deer horse aboard tritely yikes and much - -The Big Oxmox advised her not to do so, because there were thousands of bad -Commas, wild Question Marks and devious Semikoli, but the Little Blind Text -didn’t listen. She packed her seven versalia, put her initial into the belt and -made herself on the way. - -- This however showed weasel -- Well uncritical so misled - - this is very interesting -- Goodness much until that fluid owl - -When she reached the first hills of the **Italic Mountains**, she had a last -view back on the skyline of her hometown _Bookmarksgrove_, the headline of -[Alphabet Village](http://google.com) and the subline of her own road, the Line -Lane. Pityful a rethoric question ran over her cheek, then she continued her -way. On her way she met a copy. - -### Overlaid the jeepers uselessly much excluding - -But nothing the copy said could convince her and so it didn’t take long until a -few insidious Copy Writers ambushed her, made her drunk with -[Longe and Parole](http://google.com) and dragged her into their agency, where -they abused her for their projects again and again. And if she hasn’t been -rewritten, then they are still using her. - -> Far far away, behind the word mountains, far from the countries Vokalia and -> Consonantia, there live the blind texts. Separated they live in Bookmarksgrove -> right at the coast of the Semantics, a large language ocean. - -It is a paradisematic country, in which roasted parts of sentences fly into your -mouth. Even the all-powerful Pointing has no control about the blind texts it is -an almost unorthographic life One day however a small line of blind text by the -name of Lorem Ipsum decided to leave for the far World of Grammar. - -### According a funnily until pre-set or arrogant well cheerful - -The Big Oxmox advised her not to do so, because there were thousands of bad -Commas, wild Question Marks and devious Semikoli, but the Little Blind Text -didn’t listen. She packed her seven versalia, put her initial into the belt and -made herself on the way. - -1. So baboon this -2. Mounted militant weasel gregariously admonishingly straightly hey -3. Dear foresaw hungry and much some overhung -4. Rash opossum less because less some amid besides yikes jeepers frenetic - impassive fruitlessly shut - -When she reached the first hills of the Italic Mountains, she had a last view -back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet -Village and the subline of her own road, the Line Lane. Pityful a rethoric -question ran over her cheek, then she continued her way. On her way she met a -copy. - -> The copy warned the Little Blind Text, that where it came from it would have -> been rewritten a thousand times and everything that was left from its origin -> would be the word "and" and the Little Blind Text should turn around and -> return to its own, safe country. - -But nothing the copy said could convince her and so it didn’t take long until a -few insidious Copy Writers ambushed her, made her drunk with Longe and Parole -and dragged her into their agency, where they abused her for their projects -again and again. And if she hasn’t been rewritten, then they are still using -her. Far far away, behind the word mountains, far from the countries Vokalia and -Consonantia, there live the blind texts. - -#### Silent delightfully including because before one up barring chameleon - -Separated they live in Bookmarksgrove right at the coast of the Semantics, a -large language ocean. A small river named Duden flows by their place and -supplies it with the necessary regelialia. It is a paradisematic country, in -which roasted parts of sentences fly into your mouth. - -Even the all-powerful Pointing has no control about the blind texts it is an -almost unorthographic life One day however a small line of blind text by the -name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox -advised her not to do so, because there were thousands of bad Commas, wild -Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. - -##### Wherever far wow thus a squirrel raccoon jeez jaguar this from along - -She packed her seven versalia, put her initial into the belt and made herself on -the way. When she reached the first hills of the Italic Mountains, she had a -last view back on the skyline of her hometown Bookmarksgrove, the headline of -Alphabet Village and the subline of her own road, the Line Lane. Pityful a -rethoric question ran over her cheek, then she continued her way. On her way she -met a copy. - -###### Slapped cozy a that lightheartedly and far - -The copy warned the Little Blind Text, that where it came from it would have -been rewritten a thousand times and everything that was left from its origin -would be the word "and" and the Little Blind Text should turn around and return -to its own, safe country. But nothing the copy said could convince her and so it -didn’t take long until a few insidious Copy Writers ambushed her, made her drunk -with Longe and Parole and dragged her into their agency, where they abused her -for their projects again and again. diff --git a/content/blog/my-second-post/index.md b/content/blog/my-second-post/index.md deleted file mode 100644 index d19e92d..0000000 --- a/content/blog/my-second-post/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: My Second Post! -date: "2015-05-06T23:46:37.121Z" ---- - -Wow! I love blogging so much already. - -Did you know that "despite its name, salted duck eggs can also be made from -chicken eggs, though the taste and texture will be somewhat different, and the -egg yolk will be less rich."? -([Wikipedia Link](http://en.wikipedia.org/wiki/Salted_duck_egg)) - -Yeah, I didn't either. diff --git a/d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js b/d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js new file mode 100644 index 0000000..fef2d5d --- /dev/null +++ b/d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"8+s/":function(t,e,n){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var o=n("q1tI"),i=r(o),a=r(n("Gytx"));function u(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var c=!("undefined"==typeof window||!window.document||!window.document.createElement);t.exports=function(t,e,n){if("function"!=typeof t)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof e)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 l,s=[];function f(){l=t(s.map((function(t){return t.props}))),p.canUseDOM?e(l):n&&(l=n(l))}var p=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o.peek=function(){return l},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 t=l;return l=void 0,s=[],t};var u=o.prototype;return u.shouldComponentUpdate=function(t){return!a(t,this.props)},u.componentWillMount=function(){s.push(this),f()},u.componentDidUpdate=function(){f()},u.componentWillUnmount=function(){var t=s.indexOf(this);s.splice(t,1),f()},u.render=function(){return i.createElement(r,this.props)},o}(o.Component);return u(p,"displayName","SideEffect("+function(t){return t.displayName||t.name||"Component"}(r)+")"),u(p,"canUseDOM",c),p}}},"9o1B":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=Object.assign||function(t){for(var e=1;e :last-child":{marginBottom:0},"blockquote cite":o({},r(e.baseFontSize),{color:e.bodyColor,fontWeight:e.bodyWeight}),"blockquote cite:before":{content:'"— "'},ul:{listStyle:"disc"},"ul,ol":{marginLeft:0}},u.MOBILE_MEDIA_QUERY,{"ul,ol":{marginLeft:l(1)},blockquote:{marginLeft:l(-3/4),marginRight:0,paddingLeft:l(9/16)}}),c(n,"h1,h2,h3,h4,h5,h6",{marginTop:l(2)}),c(n,"h4",{letterSpacing:"0.140625em",textTransform:"uppercase"}),c(n,"h6",{fontStyle:"italic"}),c(n,"a",{boxShadow:"0 1px 0 0 currentColor",color:"#007acc",textDecoration:"none"}),c(n,"a:hover,a:active",{boxShadow:"none"}),c(n,"mark,ins",{background:"#007acc",color:"white",padding:l(1/16)+" "+l(1/8),textDecoration:"none"}),n}};e.default=l},Bl7J:function(t,e,n){"use strict";var r=n("dI71"),o=n("q1tI"),i=n.n(o),a=n("Wbzz"),u=n("p3AD"),c=function(t){function e(){return t.apply(this,arguments)||this}return Object(r.a)(e,t),e.prototype.render=function(){var t,e=this.props,n=e.location,r=e.title,o=e.children;return t="/"===n.pathname?i.a.createElement("h1",{style:Object.assign({},Object(u.b)(1),{marginBottom:Object(u.a)(1.5),marginTop:0})},i.a.createElement(a.Link,{style:{boxShadow:"none",textDecoration:"none",color:"var(--textitle)"},to:"/"},r)):i.a.createElement("h3",{style:{fontFamily:"Montserrat, sans-serif",marginTop:0,marginBottom:0,height:42,lineHeight:"2.625rem"}},i.a.createElement(a.Link,{style:{boxShadow:"none",textDecoration:"none",color:"rgb(255, 167, 196)"},to:"/"},r)),i.a.createElement("div",{style:{marginLeft:"auto",marginRight:"auto",maxWidth:Object(u.a)(24),padding:Object(u.a)(1.5)+" "+Object(u.a)(3/4)}},i.a.createElement("header",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},t),i.a.createElement("main",null,o))},e}(i.a.Component);e.a=c},"Eb/5":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.LARGER_DISPLAY_WIDTH="1600px",e.LARGE_DISPLAY_WIDTH="1280px",e.DEFAULT_WIDTH="980px",e.TABLET_WIDTH="768px",e.MOBILE_WIDTH="480px",e.LARGER_DISPLAY_MEDIA_QUERY="@media only screen and (max-width:1600px)",e.LARGE_DISPLAY_MEDIA_QUERY="@media only screen and (max-width:1280px)",e.DEFAULT_MEDIA_QUERY="@media only screen and (max-width:980px)",e.TABLET_MEDIA_QUERY="@media only screen and (max-width:768px)",e.MOBILE_MEDIA_QUERY="@media only screen and (max-width:480px)",e.MIN_LARGER_DISPLAY_MEDIA_QUERY="@media (min-width:1600px)",e.MIN_LARGE_DISPLAY_MEDIA_QUERY="@media (min-width:1280px)",e.MIN_DEFAULT_MEDIA_QUERY="@media (min-width:980px)",e.MIN_TABLET_MEDIA_QUERY="@media (min-width:768px)",e.MIN_MOBILE_MEDIA_QUERY="@media (min-width:480px)"},Gytx:function(t,e){t.exports=function(t,e,n,r){var o=n?n.call(r,t,e):void 0;if(void 0!==o)return!!o;if(t===e)return!0;if("object"!=typeof t||!t||"object"!=typeof e||!e)return!1;var i=Object.keys(t),a=Object.keys(e);if(i.length!==a.length)return!1;for(var u=Object.prototype.hasOwnProperty.bind(e),c=0;c=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function d(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function h(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var b,y,g,m=(0,u.default)(l.reducePropsToState,l.handleClientStateChange,l.mapStateOnServer)((function(){return null})),T=(b=m,g=y=function(t){function e(){return d(this,e),h(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.shouldComponentUpdate=function(t){return!(0,c.default)(this.props,t)},e.prototype.mapNestedChildrenToProps=function(t,e){if(!e)return null;switch(t.type){case s.TAG_NAMES.SCRIPT:case s.TAG_NAMES.NOSCRIPT:return{innerHTML:e};case s.TAG_NAMES.STYLE:return{cssText:e}}throw new Error("<"+t.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},e.prototype.flattenArrayTypeChildren=function(t){var e,n=t.child,o=t.arrayTypeChildren,i=t.newChildProps,a=t.nestedChildren;return r({},o,((e={})[n.type]=[].concat(o[n.type]||[],[r({},i,this.mapNestedChildrenToProps(n,a))]),e))},e.prototype.mapObjectTypeChildren=function(t){var e,n,o=t.child,i=t.newProps,a=t.newChildProps,u=t.nestedChildren;switch(o.type){case s.TAG_NAMES.TITLE:return r({},i,((e={})[o.type]=u,e.titleAttributes=r({},a),e));case s.TAG_NAMES.BODY:return r({},i,{bodyAttributes:r({},a)});case s.TAG_NAMES.HTML:return r({},i,{htmlAttributes:r({},a)})}return r({},i,((n={})[o.type]=r({},a),n))},e.prototype.mapArrayTypeChildrenToProps=function(t,e){var n=r({},e);return Object.keys(t).forEach((function(e){var o;n=r({},n,((o={})[e]=t[e],o))})),n},e.prototype.warnOnInvalidChildren=function(t,e){return!0},e.prototype.mapChildrenToProps=function(t,e){var n=this,r={};return i.default.Children.forEach(t,(function(t){if(t&&t.props){var o=t.props,i=o.children,a=p(o,["children"]),u=(0,l.convertReactPropstoHtmlAttributes)(a);switch(n.warnOnInvalidChildren(t,i),t.type){case s.TAG_NAMES.LINK:case s.TAG_NAMES.META:case s.TAG_NAMES.NOSCRIPT:case s.TAG_NAMES.SCRIPT:case s.TAG_NAMES.STYLE:r=n.flattenArrayTypeChildren({child:t,arrayTypeChildren:r,newChildProps:u,nestedChildren:i});break;default:e=n.mapObjectTypeChildren({child:t,newProps:e,newChildProps:u,nestedChildren:i})}}})),e=this.mapArrayTypeChildrenToProps(r,e)},e.prototype.render=function(){var t=this.props,e=t.children,n=p(t,["children"]),o=r({},n);return e&&(o=this.mapChildrenToProps(e,o)),i.default.createElement(b,o)},o(e,null,[{key:"canUseDOM",set:function(t){b.canUseDOM=t}}]),e}(i.default.Component),y.propTypes={base:a.default.object,bodyAttributes:a.default.object,children:a.default.oneOfType([a.default.arrayOf(a.default.node),a.default.node]),defaultTitle:a.default.string,defer:a.default.bool,encodeSpecialCharacters:a.default.bool,htmlAttributes:a.default.object,link:a.default.arrayOf(a.default.object),meta:a.default.arrayOf(a.default.object),noscript:a.default.arrayOf(a.default.object),onChangeClientState:a.default.func,script:a.default.arrayOf(a.default.object),style:a.default.arrayOf(a.default.object),title:a.default.string,titleAttributes:a.default.object,titleTemplate:a.default.string},y.defaultProps={defer:!0,encodeSpecialCharacters:!0},y.peek=b.peek,y.rewind=function(){var t=b.rewind();return t||(t=(0,l.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),t},g);T.renderStatic=T.rewind,e.Helmet=T,e.default=T},aZJH:function(t,e){function n(t){return!isNaN(parseFloat(t))&&isFinite(t)}t.exports=function(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=!1),"cool"===e?e=237:"slate"===e?e=122:"warm"===e&&(e=69),!n(e))throw new Error("Hue is not a number");if(!n(t))throw new Error("Lightness is not a number");t>100&&(t=100),t<0&&(t=0);var o=0;if(0!==e){o=19.92978+-.3651759*t+.001737214*Math.pow(t,2)}var i=0;return r?(i=t/100,t="100%,"):(i=(100-t)/100,t="0%,"),"hsla("+e+","+o+"%,"+t+i+")"}},bmMU:function(t,e,n){"use strict";var r=Array.isArray,o=Object.keys,i=Object.prototype.hasOwnProperty,a="undefined"!=typeof Element;t.exports=function(t,e){try{return function t(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){var u,c,l,s=r(e),f=r(n);if(s&&f){if((c=e.length)!=n.length)return!1;for(u=c;0!=u--;)if(!t(e[u],n[u]))return!1;return!0}if(s!=f)return!1;var p=e instanceof Date,d=n instanceof Date;if(p!=d)return!1;if(p&&d)return e.getTime()==n.getTime();var h=e instanceof RegExp,b=n instanceof RegExp;if(h!=b)return!1;if(h&&b)return e.toString()==n.toString();var y=o(e);if((c=y.length)!==o(n).length)return!1;for(u=c;0!=u--;)if(!i.call(n,y[u]))return!1;if(a&&e instanceof Element&&n instanceof Element)return e===n;for(u=c;0!=u--;)if(!("_owner"===(l=y[u])&&e.$$typeof||t(e[l],n[l])))return!1;return!0}return e!=e&&n!=n}(t,e)}catch(n){if(n.message&&n.message.match(/stack|recursion/i)||-2146828260===n.number)return console.warn("Warning: react-fast-compare does not handle circular references.",n.name,n.message),!1;throw n}}},"hFT/":function(t,e){e.__esModule=!0;e.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var n=e.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},r=(e.VALID_TAG_NAMES=Object.keys(n).map((function(t){return n[t]})),e.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},e.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});e.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},e.HTML_TAG_MAP=Object.keys(r).reduce((function(t,e){return t[r[e]]=e,t}),{}),e.SELF_CLOSING_TAGS=[n.NOSCRIPT,n.SCRIPT,n.STYLE],e.HELMET_ATTRIBUTE="data-react-helmet"},mBog:function(t,e,n){(function(e){var n,r,o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,u=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,r,u=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),c=1;c100&&(t=100),t<0&&(t=0);var r=0;0!==e&&(r=19.92978+-.3651759*t+.001737214*Math.pow(t,2));var o=0;return n?(o=t/100,t="100%,"):(o=(100-t)/100,t="0%,"),"hsla("+e+","+r+"%,"+t+o+")"},v="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{};function E(t,e){return t(e={exports:{}},e.exports),e.exports}var _,A="object"==typeof v&&v&&v.Object===Object&&v,S="object"==typeof self&&self&&self.Object===Object&&self,w=A||S||Function("return this")(),O=w.Symbol,j=Object.prototype,M=j.hasOwnProperty,P=j.toString,R=O?O.toStringTag:void 0,L=Object.prototype.toString,x=O?O.toStringTag:void 0,I=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":x&&x in Object(t)?function(t){var e=M.call(t,R),n=t[R];try{t[R]=void 0;var r=!0}catch(t){}var o=P.call(t);return r&&(e?t[R]=n:delete t[R]),o}(t):function(t){return L.call(t)}(t)},C=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},N=function(t){if(!C(t))return!1;var e=I(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},k=w["__core-js_shared__"],F=(_=/[^.]+$/.exec(k&&k.keys&&k.keys.IE_PROTO||""))?"Symbol(src)_1."+_:"",H=Function.prototype.toString,z=function(t){if(null!=t){try{return H.call(t)}catch(t){}try{return t+""}catch(t){}}return""},G=/^\[object .+?Constructor\]$/,B=Function.prototype,D=Object.prototype,U=RegExp("^"+B.toString.call(D.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),W=function(t){return!(!C(t)||function(t){return!!F&&F in t}(t))&&(N(t)?U:G).test(z(t))},Y=function(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return W(n)?n:void 0},q=function(){try{var t=Y(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),$=function(t,e,n){"__proto__"==e&&q?q(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n},Q=function(t,e){return t===e||t!=t&&e!=e},J=Object.prototype.hasOwnProperty,V=function(t,e,n){var r=t[e];J.call(t,e)&&Q(r,n)&&(void 0!==n||e in t)||$(t,e,n)},K=Array.isArray,X=function(t){return null!=t&&"object"==typeof t},Z=function(t){return"symbol"==typeof t||X(t)&&"[object Symbol]"==I(t)},tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=function(t,e){if(K(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Z(t))||et.test(t)||!tt.test(t)||null!=e&&t in Object(e)},rt=Y(Object,"create"),ot=Object.prototype.hasOwnProperty,it=Object.prototype.hasOwnProperty;function at(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1},st.prototype.set=function(t,e){var n=this.__data__,r=ct(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};var ft=st,pt=Y(w,"Map"),dt=function(t,e){var n=t.__data__;return function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}(e)?n["string"==typeof e?"string":"hash"]:n.map};function ht(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991},zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Gt=E((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,o=r&&r.exports===n&&A.process,i=function(){try{return r&&r.require&&r.require("util").types||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=i})),Bt=Gt&&Gt.isTypedArray,Dt=Bt?function(t){return function(e){return t(e)}}(Bt):function(t){return X(t)&&Ht(t.length)&&!!zt[I(t)]},Ut=Object.prototype.hasOwnProperty,Wt=function(t,e){var n=K(t),r=!n&&Nt(t),o=!n&&!r&&Ft(t),i=!n&&!r&&!o&&Dt(t),a=n||r||o||i,u=a?function(t,e){for(var n=-1,r=Array(t);++n0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(q?function(t,e){return q(t,"toString",{configurable:!0,enumerable:!1,value:Ae(e),writable:!0})}:Zt),Oe=function(t,e){return we(function(t,e,n){return e=_e(void 0===e?t.length-1:e,0),function(){for(var r=arguments,o=-1,i=_e(r.length-e,0),a=Array(i);++o1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(o--,i):void 0,a&&function(t,e,n){if(!C(n))return!1;var r=typeof e;return!!("number"==r?Vt(n)&&Ot(e,n.length):"string"==r&&e in n)&&Q(n[e],t)}(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),e=Object(e);++ru))return!1;var l=i.get(t);if(l&&i.get(e))return l==e;var s=-1,f=!0,p=2&n?new Re:void 0;for(i.set(t,e),i.set(e,t);++s ol","li > ul"],{marginLeft:t.rhythm(1),marginBottom:"calc("+o+" / 2)",marginTop:"calc("+o+" / 2)"}),n=Tn(n,["blockquote *:last-child","li *:last-child","p *:last-child"],{marginBottom:0}),n=Tn(n,["li > p"],{marginBottom:"calc("+o+" / 2)"}),n=Tn(n,["code","kbd","pre","samp"],Object.assign({},t.adjustFontSizeTo("85%"))),(n=Tn(n,["abbr","acronym"],{borderBottom:"1px dotted "+T(50),cursor:"help"}))["abbr[title]"]={borderBottom:"1px dotted "+T(50),cursor:"help",textDecoration:"none"},n=Tn(n,["table"],Object.assign({},t.adjustFontSizeTo(e.baseFontSize),{borderCollapse:"collapse",width:"100%"})),n=Tn(n,["thead"],{textAlign:"left"}),n=Tn(n,["td,th"],{textAlign:"left",borderBottom:"1px solid "+T(88),fontFeatureSettings:'"tnum"',MozFontFeatureSettings:'"tnum"',msFontFeatureSettings:'"tnum"',WebkitFontFeatureSettings:'"tnum"',paddingLeft:t.rhythm(2/3),paddingRight:t.rhythm(2/3),paddingTop:t.rhythm(.5),paddingBottom:"calc("+t.rhythm(.5)+" - 1px)"}),n=Tn(n,"th:first-child,td:first-child",{paddingLeft:0}),n=Tn(n,"th:last-child,td:last-child",{paddingRight:0}),n=Tn(n,["h1","h2","h3","h4","h5","h6"],{color:e.headerColor,fontFamily:e.headerFontFamily.map(En).join(","),fontWeight:e.headerWeight,textRendering:"optimizeLegibility"});var i=t.scale(1),a=t.scale(.6),u=t.scale(.4),c=t.scale(0),l=t.scale(-.2),s=t.scale(-.3);return te([i,a,u,c,l,s],(function(t,r){n=Mt(n,"h"+(r+1)+".fontSize",t.fontSize),n=Mt(n,"h"+(r+1)+".lineHeight",e.headerLineHeight)})),K(e.plugins)&&(n=mn(e.plugins,(function(n,r){return je(n,r(t,e,n))}),n)),e.overrideStyles&&N(e.overrideStyles)&&(n=je(n,e.overrideStyles(t,e,n))),e.overrideThemeStyles&&N(e.overrideThemeStyles)&&(n=je(n,e.overrideThemeStyles(t,e,n))),n}(l,c)},toString:function(){return function(t,e,n){var r=function t(e){return mn(e,(function(e,n,r){return e+=r+"{",te(n,(function(n,r){if(C(n)){var o={};o[r]=n,e+=t(o)}else{var i=function(t,e){if("string"!=typeof t)throw new TypeError("Expected a string");return t.replace(/([a-z\d])([A-Z])/g,"$1"+(e=void 0===e?"_":e)+"$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1"+e+"$2").toLowerCase()}(r,"-")+":"+n+";";["Webkit","ms","Moz","O"].forEach((function(t){r.slice(0,t.length)===t&&(i="-"+i)})),e+=i}})),e+="}"}),"")}(n);return e.includeNormalize&&(r=""+_n+r),r}(0,c,this.toJSON())},injectStyles:function(){if("undefined"!=typeof document)if(document.getElementById("typography.js"))document.getElementById("typography.js").innerHTML=this.toString();else{var t=document.createElement("style");t.id="typography.js",t.innerHTML=this.toString();var e=document.head;e.firstChild?e.insertBefore(t,e.firstChild):e.appendChild(t)}}})}}).call(this,n("yLpj"))},p3AD:function(t,e,n){"use strict";n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return l}));var r=n("mBog"),o=n.n(r),i=n("9o1B"),a=n.n(i);n("N7+E");a.a.overrideThemeStyles=function(){return{"a.gatsby-resp-image-link":{boxShadow:"none"},a:{color:"var(--textLink)"},hr:{background:"var(--hr)"},"p code":{fontSize:"1.1rem"},"h1 code, h2 code, h3 code, h4 code, h5 code, h6 code":{fontSize:"inherit"},"li code":{fontSize:"1.1rem"},blockquote:{color:"inherit",borderLeftColor:"inherit",opacity:"0.8",fontSize:"1.1rem"}}},delete a.a.googleFonts;var u=new o.a(a.a);var c=u.rhythm,l=u.scale},v1p5:function(t,e,n){(function(t){e.__esModule=!0,e.warn=e.requestAnimationFrame=e.reducePropsToState=e.mapStateOnServer=e.handleClientStateChange=e.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=Object.assign||function(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1];return!1===e?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},f=function(t){var e=y(t,u.TAG_NAMES.TITLE),n=y(t,u.HELMET_PROPS.TITLE_TEMPLATE);if(n&&e)return n.replace(/%s/g,(function(){return e}));var r=y(t,u.HELMET_PROPS.DEFAULT_TITLE);return e||r||void 0},p=function(t){return y(t,u.HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},d=function(t,e){return e.filter((function(e){return void 0!==e[t]})).map((function(e){return e[t]})).reduce((function(t,e){return o({},t,e)}),{})},h=function(t,e){return e.filter((function(t){return void 0!==t[u.TAG_NAMES.BASE]})).map((function(t){return t[u.TAG_NAMES.BASE]})).reverse().reduce((function(e,n){if(!e.length)for(var r=Object.keys(n),o=0;o=0;n--){var r=t[n];if(r.hasOwnProperty(e))return r[e]}return null},g=(l=Date.now(),function(t){var e=Date.now();e-l>16?(l=e,t(e)):setTimeout((function(){g(t)}),0)}),m=function(t){return clearTimeout(t)},T="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||g:t.requestAnimationFrame||g,v="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||m:t.cancelAnimationFrame||m,E=function(t){return console&&"function"==typeof console.warn&&console.warn(t)},_=null,A=function(t,e){var n=t.baseTag,r=t.bodyAttributes,o=t.htmlAttributes,i=t.linkTags,a=t.metaTags,c=t.noscriptTags,l=t.onChangeClientState,s=t.scriptTags,f=t.styleTags,p=t.title,d=t.titleAttributes;O(u.TAG_NAMES.BODY,r),O(u.TAG_NAMES.HTML,o),w(p,d);var h={baseTag:j(u.TAG_NAMES.BASE,n),linkTags:j(u.TAG_NAMES.LINK,i),metaTags:j(u.TAG_NAMES.META,a),noscriptTags:j(u.TAG_NAMES.NOSCRIPT,c),scriptTags:j(u.TAG_NAMES.SCRIPT,s),styleTags:j(u.TAG_NAMES.STYLE,f)},b={},y={};Object.keys(h).forEach((function(t){var e=h[t],n=e.newTags,r=e.oldTags;n.length&&(b[t]=n),r.length&&(y[t]=h[t].oldTags)})),e&&e(),l(t,b,y)},S=function(t){return Array.isArray(t)?t.join(""):t},w=function(t,e){void 0!==t&&document.title!==t&&(document.title=S(t)),O(u.TAG_NAMES.TITLE,e)},O=function(t,e){var n=document.getElementsByTagName(t)[0];if(n){for(var r=n.getAttribute(u.HELMET_ATTRIBUTE),o=r?r.split(","):[],i=[].concat(o),a=Object.keys(e),c=0;c=0;p--)n.removeAttribute(i[p]);o.length===i.length?n.removeAttribute(u.HELMET_ATTRIBUTE):n.getAttribute(u.HELMET_ATTRIBUTE)!==a.join(",")&&n.setAttribute(u.HELMET_ATTRIBUTE,a.join(","))}},j=function(t,e){var n=document.head||document.querySelector(u.TAG_NAMES.HEAD),r=n.querySelectorAll(t+"["+u.HELMET_ATTRIBUTE+"]"),o=Array.prototype.slice.call(r),i=[],a=void 0;return e&&e.length&&e.forEach((function(e){var n=document.createElement(t);for(var r in e)if(e.hasOwnProperty(r))if(r===u.TAG_PROPERTIES.INNER_HTML)n.innerHTML=e.innerHTML;else if(r===u.TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=e.cssText:n.appendChild(document.createTextNode(e.cssText));else{var c=void 0===e[r]?"":e[r];n.setAttribute(r,c)}n.setAttribute(u.HELMET_ATTRIBUTE,"true"),o.some((function(t,e){return a=e,n.isEqualNode(t)}))?o.splice(a,1):i.push(n)})),o.forEach((function(t){return t.parentNode.removeChild(t)})),i.forEach((function(t){return n.appendChild(t)})),{oldTags:o,newTags:i}},M=function(t){return Object.keys(t).reduce((function(e,n){var r=void 0!==t[n]?n+'="'+t[n]+'"':""+n;return e?e+" "+r:r}),"")},P=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(e,n){return e[u.REACT_TAG_MAP[n]||n]=t[n],e}),e)},R=function(t,e,n){switch(t){case u.TAG_NAMES.TITLE:return{toComponent:function(){return t=e.title,n=e.titleAttributes,(r={key:t})[u.HELMET_ATTRIBUTE]=!0,o=P(n,r),[i.default.createElement(u.TAG_NAMES.TITLE,o,t)];var t,n,r,o},toString:function(){return function(t,e,n,r){var o=M(n),i=S(e);return o?"<"+t+" "+u.HELMET_ATTRIBUTE+'="true" '+o+">"+s(i,r)+"":"<"+t+" "+u.HELMET_ATTRIBUTE+'="true">'+s(i,r)+""}(t,e.title,e.titleAttributes,n)}};case u.ATTRIBUTE_NAMES.BODY:case u.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return P(e)},toString:function(){return M(e)}};default:return{toComponent:function(){return function(t,e){return e.map((function(e,n){var r,o=((r={key:n})[u.HELMET_ATTRIBUTE]=!0,r);return Object.keys(e).forEach((function(t){var n=u.REACT_TAG_MAP[t]||t;if(n===u.TAG_PROPERTIES.INNER_HTML||n===u.TAG_PROPERTIES.CSS_TEXT){var r=e.innerHTML||e.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=e[t]})),i.default.createElement(t,o)}))}(t,e)},toString:function(){return function(t,e,n){return e.reduce((function(e,r){var o=Object.keys(r).filter((function(t){return!(t===u.TAG_PROPERTIES.INNER_HTML||t===u.TAG_PROPERTIES.CSS_TEXT)})).reduce((function(t,e){var o=void 0===r[e]?e:e+'="'+s(r[e],n)+'"';return t?t+" "+o:o}),""),i=r.innerHTML||r.cssText||"",a=-1===u.SELF_CLOSING_TAGS.indexOf(t);return e+"<"+t+" "+u.HELMET_ATTRIBUTE+'="true" '+o+(a?"/>":">"+i+"")}),"")}(t,e,n)}}}};e.convertReactPropstoHtmlAttributes=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(e,n){return e[u.HTML_TAG_MAP[n]||n]=t[n],e}),e)},e.handleClientStateChange=function(t){_&&v(_),t.defer?_=T((function(){A(t,(function(){_=null}))})):(A(t),_=null)},e.mapStateOnServer=function(t){var e=t.baseTag,n=t.bodyAttributes,r=t.encode,o=t.htmlAttributes,i=t.linkTags,a=t.metaTags,c=t.noscriptTags,l=t.scriptTags,s=t.styleTags,f=t.title,p=void 0===f?"":f,d=t.titleAttributes;return{base:R(u.TAG_NAMES.BASE,e,r),bodyAttributes:R(u.ATTRIBUTE_NAMES.BODY,n,r),htmlAttributes:R(u.ATTRIBUTE_NAMES.HTML,o,r),link:R(u.TAG_NAMES.LINK,i,r),meta:R(u.TAG_NAMES.META,a,r),noscript:R(u.TAG_NAMES.NOSCRIPT,c,r),script:R(u.TAG_NAMES.SCRIPT,l,r),style:R(u.TAG_NAMES.STYLE,s,r),title:R(u.TAG_NAMES.TITLE,{title:p,titleAttributes:d},r)}},e.reducePropsToState=function(t){return{baseTag:h([u.TAG_PROPERTIES.HREF],t),bodyAttributes:d(u.ATTRIBUTE_NAMES.BODY,t),defer:y(t,u.HELMET_PROPS.DEFER),encode:y(t,u.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:d(u.ATTRIBUTE_NAMES.HTML,t),linkTags:b(u.TAG_NAMES.LINK,[u.TAG_PROPERTIES.REL,u.TAG_PROPERTIES.HREF],t),metaTags:b(u.TAG_NAMES.META,[u.TAG_PROPERTIES.NAME,u.TAG_PROPERTIES.CHARSET,u.TAG_PROPERTIES.HTTPEQUIV,u.TAG_PROPERTIES.PROPERTY,u.TAG_PROPERTIES.ITEM_PROP],t),noscriptTags:b(u.TAG_NAMES.NOSCRIPT,[u.TAG_PROPERTIES.INNER_HTML],t),onChangeClientState:p(t),scriptTags:b(u.TAG_NAMES.SCRIPT,[u.TAG_PROPERTIES.SRC,u.TAG_PROPERTIES.INNER_HTML],t),styleTags:b(u.TAG_NAMES.STYLE,[u.TAG_PROPERTIES.CSS_TEXT],t),title:f(t),titleAttributes:d(u.ATTRIBUTE_NAMES.TITLE,t)}},e.requestAnimationFrame=T,e.warn=E}).call(this,n("yLpj"))},vrFN:function(t,e,n){"use strict";var r=n("q1tI"),o=n.n(r),i=n("TJpk"),a=n.n(i),u=n("Wbzz");function c(t){var e=t.image,n=t.slug,r=t.description,i=t.lang,c=void 0===i?"zh-Hans":i,l=t.meta,s=t.keywords,f=t.title,p=Object(u.useStaticQuery)("3627597636").site.siteMetadata,d=r||p.description,h=e?p.siteUrl+"/"+e:null,b=""+p.siteUrl+n;return o.a.createElement(a.a,{htmlAttributes:{lang:c},title:f,titleTemplate:"%s | "+p.title,meta:[{name:"description",content:d},{property:"og:url",content:b},{property:"og:title",content:f||p.title},{property:"og:description",content:d},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary"},{name:"twitter:creator",content:p.author.twitter},{name:"twitter:title",content:f||p.title},{name:"twitter:description",content:d}].concat(h?[{property:"og:image",content:h},{name:"twitter:image",content:h}]:[]).concat(s.length>0?{name:"keywords",content:s.join(", ")}:[]).concat(l)})}c.defaultProps={meta:[],keywords:[],description:""},e.a=c},yLpj:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}t.exports=n}}]); +//# sourceMappingURL=d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js.map \ No newline at end of file diff --git a/d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js.map b/d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js.map new file mode 100644 index 0000000..253b373 --- /dev/null +++ b/d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/typography-theme-wordpress-2016/dist/index.js","webpack:///./src/components/layout.js","webpack:///./node_modules/typography-breakpoint-constants/dist/index.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./node_modules/gray-percentage/index.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/typography/dist/index.js","webpack:///./src/utils/typography.js","webpack:///./node_modules/react-helmet/lib/HelmetUtils.js","webpack:///./src/components/seo.js","webpack:///(webpack)/buildin/global.js"],"names":["_interopDefault","ex","React","React__default","shallowEqual","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","canUseDOM","window","document","createElement","module","exports","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","map","instance","props","SideEffect","_Component","subClass","superClass","apply","this","arguments","prototype","create","constructor","__proto__","peek","rewind","recordedState","undefined","_proto","shouldComponentUpdate","nextProps","componentWillMount","push","componentDidUpdate","componentWillUnmount","index","indexOf","splice","render","Component","displayName","name","getDisplayName","_extends","assign","target","i","length","source","hasOwnProperty","call","_grayPercentage","_grayPercentage2","__esModule","default","_typographyBreakpointConstants","theme","title","baseFontSize","baseLineHeight","scaleRatio","googleFonts","styles","headerFontFamily","bodyFontFamily","bodyColor","headerWeight","bodyWeight","boldWeight","overrideStyles","_ref","options","_ref2","adjustFontSizeTo","scale","rhythm","h1","fontFamily","join","blockquote","color","fontStyle","paddingLeft","marginLeft","borderLeft","marginBottom","fontWeight","content","ul","listStyle","MOBILE_MEDIA_QUERY","marginRight","marginTop","letterSpacing","textTransform","boxShadow","textDecoration","background","padding","Layout","header","location","children","pathname","style","to","height","lineHeight","maxWidth","display","justifyContent","alignItems","LARGER_DISPLAY_WIDTH","LARGE_DISPLAY_WIDTH","DEFAULT_WIDTH","TABLET_WIDTH","MOBILE_WIDTH","LARGER_DISPLAY_MEDIA_QUERY","LARGE_DISPLAY_MEDIA_QUERY","DEFAULT_MEDIA_QUERY","TABLET_MEDIA_QUERY","MIN_LARGER_DISPLAY_MEDIA_QUERY","MIN_LARGE_DISPLAY_MEDIA_QUERY","MIN_DEFAULT_MEDIA_QUERY","MIN_TABLET_MEDIA_QUERY","MIN_MOBILE_MEDIA_QUERY","objA","objB","compare","compareContext","ret","keysA","keys","keysB","bHasOwnProperty","bind","idx","valueA","valueB","Helmet","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","_objectWithoutProperties","_classCallCheck","TypeError","_possibleConstructorReturn","self","ReferenceError","_class","_temp","HelmetSideEffects","handleClientStateChange","HelmetExport","_React$Component","HelmetWrapper","setPrototypeOf","_inherits","mapNestedChildrenToProps","child","nestedChildren","type","TAG_NAMES","SCRIPT","NOSCRIPT","innerHTML","STYLE","cssText","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","concat","mapObjectTypeChildren","_extends3","_extends4","newProps","TITLE","titleAttributes","BODY","bodyAttributes","HTML","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","forEach","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_this2","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","_props","set","propTypes","base","object","oneOfType","arrayOf","node","defaultTitle","string","defer","bool","encodeSpecialCharacters","link","meta","noscript","onChangeClientState","func","script","titleTemplate","defaultProps","mappedState","baseTag","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","isNumeric","n","isNaN","parseFloat","isFinite","lightness","hue","darkBackground","saturation","Math","pow","opacity","isArray","Array","keyList","hasProp","hasElementType","Element","a","b","equal","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","$$typeof","error","message","match","number","console","warn","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","NAME","PROPERTY","REL","SRC","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","reduce","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","o","e","r","propertyIsEnumerable","t","String","getOwnPropertyNames","fromCharCode","split","u","c","l","f","toFixed","s","p","rhythmUnit","defaultRhythmBorderWidth","defaultRhythmBorderStyle","roundToNearestHalfLine","minLinePadding","v","baseLineHeightInPx","ceil","h","floor","g","sqrt","golden","phi","octave","y","m","global","j","R","_","w","O","Function","S","Symbol","x","z","F","k","toStringTag","L","M","E","A","B","H","$","U","D","exec","IE_PROTO","V","J","Z","G","K","Y","replace","Q","q","test","tt","X","et","rt","nt","ot","it","at","ut","lt","ft","st","pt","vt","bt","yt","wt","clear","__data__","size","delete","has","get","Ot","St","xt","Lt","pop","Bt","Pt","Mt","Tt","Ct","hash","It","$t","cache","Cache","Ut","qt","Vt","Jt","charCodeAt","Kt","Yt","Qt","Zt","te","Xt","re","ne","ie","ue","ae","ce","le","pe","ve","he","de","be","ge","ye","nodeType","Buffer","isBuffer","je","_e","Se","process","require","types","binding","xe","isTypedArray","ze","Oe","Fe","ke","fe","Ae","Le","Be","Pe","Te","Ee","He","Me","Ne","We","Ie","Ce","Ke","Ze","Ye","Qe","Xe","allocUnsafe","slice","copy","tr","Uint8Array","rr","byteLength","er","buffer","byteOffset","or","ir","ar","getPrototypeOf","fr","sr","pr","vr","hr","br","mr","jr","yr","_r","wr","gr","Or","cr","nr","dr","ur","xr","zr","max","kr","Br","now","Pr","Tr","Fr","Er","Mr","Sr","Hr","Cr","add","Ir","Rr","$r","qr","d","Vr","Jr","cn","ln","valueOf","hn","dn","getOwnPropertySymbols","bn","vn","gn","sn","pn","mn","_n","wn","On","Sn","xn","zn","Fn","kn","An","Ln","ArrayBuffer","resolve","lo","Bn","Tn","Mn","En","Hn","Nn","fn","jn","Wn","$n","Dn","qn","Un","Cn","Rn","Vn","Zn","Kn","Gn","Xn","Jn","Yn","ro","eo","no","oo","io","ao","uo","co","so","headerLineHeight","headerColor","includeNormalize","blockMarginBottom","JSON","parse","stringify","establishBaseline","fontSize","linesForFontSize","parseInt","createStyles","toJSON","font","boxSizing","overflowY","wordWrap","fontKerning","MozFontFeatureSettings","msFontFeatureSettings","WebkitFontFeatureSettings","fontFeatureSettings","$e","De","paddingBottom","paddingRight","paddingTop","border","listStylePosition","listStyleImage","borderBottom","cursor","borderCollapse","width","textAlign","textRendering","plugins","overrideThemeStyles","po","toLowerCase","injectStyles","getElementById","id","head","firstChild","insertBefore","appendChild","Wordpress2016","borderLeftColor","typography","Typography","requestAnimationFrame","_typeof","iterator","_objectAssign2","clock","str","encode","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","property","rafPolyfill","callback","currentTime","setTimeout","cafPolyfill","clearTimeout","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","_i","removeAttribute","tags","headElement","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","SEO","image","slug","description","lang","keywords","siteMetadata","useStaticQuery","site","metaDescription","metaImage","siteUrl","url","author","twitter"],"mappings":"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","file":"d5d7a013bc6c1e2b6d7db819052c16d7efea5559-9770fc2d1999a3bce1e3.js","sourcesContent":["'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\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);\n\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 = /*#__PURE__*/function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\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.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n _proto.componentWillMount = function 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.Component);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _grayPercentage = require(\"gray-percentage\");\n\nvar _grayPercentage2 = _interopRequireDefault(_grayPercentage);\n\nvar _typographyBreakpointConstants = require(\"typography-breakpoint-constants\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\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\nvar theme = {\n title: \"Wordpress Theme 2016\",\n baseFontSize: \"16px\",\n baseLineHeight: 1.75,\n scaleRatio: 5 / 2,\n googleFonts: [{\n name: \"Montserrat\",\n styles: [\"700\"]\n }, {\n name: \"Merriweather\",\n styles: [\"400\", \"400i\", \"700\", \"700i\", \"900\", \"900i\"]\n }],\n headerFontFamily: [\"Merriweather\", \"Georgia\", \"serif\"],\n bodyFontFamily: [\"Merriweather\", \"Georgia\", \"serif\"],\n bodyColor: \"hsla(0,0%,0%,0.9)\",\n headerWeight: 900,\n bodyWeight: 400,\n boldWeight: 700,\n overrideStyles: function overrideStyles(_ref, options) {\n var _ref2;\n\n var adjustFontSizeTo = _ref.adjustFontSizeTo,\n scale = _ref.scale,\n rhythm = _ref.rhythm;\n return _ref2 = {\n h1: {\n fontFamily: [\"Montserrat\", \"sans-serif\"].join(\",\")\n },\n blockquote: _extends({}, scale(1 / 5), {\n color: (0, _grayPercentage2.default)(41),\n fontStyle: \"italic\",\n paddingLeft: rhythm(13 / 16),\n marginLeft: rhythm(-1),\n borderLeft: rhythm(3 / 16) + \" solid \" + (0, _grayPercentage2.default)(10)\n }),\n \"blockquote > :last-child\": {\n marginBottom: 0\n },\n \"blockquote cite\": _extends({}, adjustFontSizeTo(options.baseFontSize), {\n color: options.bodyColor,\n fontWeight: options.bodyWeight\n }),\n \"blockquote cite:before\": {\n content: '\"— \"'\n },\n ul: {\n listStyle: \"disc\"\n },\n \"ul,ol\": {\n marginLeft: 0\n }\n }, _defineProperty(_ref2, _typographyBreakpointConstants.MOBILE_MEDIA_QUERY, {\n \"ul,ol\": {\n marginLeft: rhythm(1)\n },\n blockquote: {\n marginLeft: rhythm(-3 / 4),\n marginRight: 0,\n paddingLeft: rhythm(9 / 16)\n }\n }), _defineProperty(_ref2, \"h1,h2,h3,h4,h5,h6\", {\n marginTop: rhythm(2)\n }), _defineProperty(_ref2, \"h4\", {\n letterSpacing: \"0.140625em\",\n textTransform: \"uppercase\"\n }), _defineProperty(_ref2, \"h6\", {\n fontStyle: \"italic\"\n }), _defineProperty(_ref2, \"a\", {\n boxShadow: \"0 1px 0 0 currentColor\",\n color: \"#007acc\",\n textDecoration: \"none\"\n }), _defineProperty(_ref2, \"a:hover,a:active\", {\n boxShadow: \"none\"\n }), _defineProperty(_ref2, \"mark,ins\", {\n background: \"#007acc\",\n color: \"white\",\n padding: rhythm(1 / 16) + \" \" + rhythm(1 / 8),\n textDecoration: \"none\"\n }), _ref2;\n }\n};\nexports.default = theme;","import React from 'react'\nimport { Link } from 'gatsby'\nimport { rhythm, scale } from '../utils/typography'\n\nclass Layout extends React.Component {\n render() {\n const { location, title, children } = this.props\n const rootPath = `${__PATH_PREFIX__}/`\n let header\n\n if (location.pathname === rootPath) {\n header = (\n \n \n {title}\n \n \n )\n } else {\n header = (\n \n \n {title}\n \n \n )\n }\n return (\n \n \n {header}\n \n
{children}
\n \n )\n }\n}\n\nexport default Layout\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar LARGER_DISPLAY_WIDTH = exports.LARGER_DISPLAY_WIDTH = \"1600px\";\nvar LARGE_DISPLAY_WIDTH = exports.LARGE_DISPLAY_WIDTH = \"1280px\";\nvar DEFAULT_WIDTH = exports.DEFAULT_WIDTH = \"980px\";\nvar TABLET_WIDTH = exports.TABLET_WIDTH = \"768px\";\nvar MOBILE_WIDTH = exports.MOBILE_WIDTH = \"480px\";\nvar LARGER_DISPLAY_MEDIA_QUERY = exports.LARGER_DISPLAY_MEDIA_QUERY = \"@media only screen and (max-width:1600px)\";\nvar LARGE_DISPLAY_MEDIA_QUERY = exports.LARGE_DISPLAY_MEDIA_QUERY = \"@media only screen and (max-width:1280px)\";\nvar DEFAULT_MEDIA_QUERY = exports.DEFAULT_MEDIA_QUERY = \"@media only screen and (max-width:980px)\";\nvar TABLET_MEDIA_QUERY = exports.TABLET_MEDIA_QUERY = \"@media only screen and (max-width:768px)\";\nvar MOBILE_MEDIA_QUERY = exports.MOBILE_MEDIA_QUERY = \"@media only screen and (max-width:480px)\";\nvar MIN_LARGER_DISPLAY_MEDIA_QUERY = exports.MIN_LARGER_DISPLAY_MEDIA_QUERY = \"@media (min-width:1600px)\";\nvar MIN_LARGE_DISPLAY_MEDIA_QUERY = exports.MIN_LARGE_DISPLAY_MEDIA_QUERY = \"@media (min-width:1280px)\";\nvar MIN_DEFAULT_MEDIA_QUERY = exports.MIN_DEFAULT_MEDIA_QUERY = \"@media (min-width:980px)\";\nvar MIN_TABLET_MEDIA_QUERY = exports.MIN_TABLET_MEDIA_QUERY = \"@media (min-width:768px)\";\nvar MIN_MOBILE_MEDIA_QUERY = exports.MIN_MOBILE_MEDIA_QUERY = \"@media (min-width:480px)\";","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n};","exports.__esModule = true;\nexports.Helmet = undefined;\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 _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 _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(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\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(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\nfunction _inherits(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 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\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _reactFastCompare2.default)(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 _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case _HelmetConstants.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 _extends2;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\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 _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\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 _extends5;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.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 (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.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 _react2.default.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 = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.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 _react2.default.createElement(Component, newProps);\n };\n\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\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(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.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 = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nmodule.exports = function (lightness, hue, darkBackground) {\n if (typeof hue === \"undefined\") {\n hue = 0;\n }\n\n if (typeof darkBackground === \"undefined\") {\n darkBackground = false;\n } // Convert named hues into numeric lightness value.\n\n\n if (hue === \"cool\") {\n hue = 237;\n } else if (hue === \"slate\") {\n hue = 122;\n } else if (hue === \"warm\") {\n hue = 69;\n }\n\n if (!isNumeric(hue)) {\n throw new Error(\"Hue is not a number\");\n }\n\n if (!isNumeric(lightness)) {\n throw new Error(\"Lightness is not a number\");\n }\n\n if (lightness > 100) {\n lightness = 100;\n }\n\n if (lightness < 0) {\n lightness = 0;\n }\n\n var saturation = 0;\n\n if (hue !== 0) {\n var a = 19.92978;\n var b = -0.3651759;\n var c = 0.001737214;\n saturation = a + b * lightness + c * Math.pow(lightness, 2);\n }\n\n var opacity = 0;\n\n if (darkBackground) {\n opacity = lightness / 100;\n lightness = '100%,';\n } else {\n opacity = (100 - lightness) / 100;\n lightness = '0%,';\n }\n\n return \"hsla(\" + hue + \",\" + saturation + \"%,\" + lightness + opacity + \")\";\n};","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // start react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // end react-fast-compare\n // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\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('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = exports.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};\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = exports.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};\nvar REACT_TAG_MAP = exports.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};\nvar HELMET_PROPS = exports.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};\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","var t = Object.getOwnPropertySymbols,\n e = Object.prototype.hasOwnProperty,\n r = Object.prototype.propertyIsEnumerable;\n\nvar n,\n o,\n i = function () {\n try {\n if (!Object.assign) return !1;\n var t = new String(\"abc\");\n if (t[5] = \"de\", \"5\" === Object.getOwnPropertyNames(t)[0]) return !1;\n\n for (var e = {}, r = 0; r < 10; r++) {\n e[\"_\" + String.fromCharCode(r)] = r;\n }\n\n if (\"0123456789\" !== Object.getOwnPropertyNames(e).map(function (t) {\n return e[t];\n }).join(\"\")) return !1;\n var n = {};\n return \"abcdefghijklmnopqrst\".split(\"\").forEach(function (t) {\n n[t] = t;\n }), \"abcdefghijklmnopqrst\" === Object.keys(Object.assign({}, n)).join(\"\");\n } catch (t) {\n return !1;\n }\n}() ? Object.assign : function (n, o) {\n for (var i, a, u = function (t) {\n if (null === t || void 0 === t) throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n return Object(t);\n }(n), c = 1; c < arguments.length; c++) {\n for (var l in i = Object(arguments[c])) {\n e.call(i, l) && (u[l] = i[l]);\n }\n\n if (t) {\n a = t(i);\n\n for (var f = 0; f < a.length; f++) {\n r.call(i, a[f]) && (u[a[f]] = i[a[f]]);\n }\n }\n }\n\n return u;\n},\n a = function a(t, e) {\n e || (e = [0, \"\"]), t = String(t);\n var r = parseFloat(t, 10);\n return e[0] = r, e[1] = t.match(/[\\d.\\-\\+]*\\s*(.*)/)[1] || \"\", e;\n},\n u = function u(t) {\n return a(t)[0];\n},\n c = function c(t) {\n return null == t && (t = t), function (e, r, n, o) {\n null == n && (n = t), null == o && (o = n);\n var i = a(e)[1];\n if (i === r) return e;\n var c = u(e);\n if (\"px\" !== i) if (\"em\" === i) c = u(e) * u(n);else if (\"rem\" === i) c = u(e) * u(t);else {\n if (\"ex\" !== i) return e;\n c = u(e) * u(n) * 2;\n }\n var l = c;\n if (\"px\" !== r) if (\"em\" === r) l = c / u(o);else if (\"rem\" === r) l = c / u(t);else {\n if (\"ex\" !== r) return e;\n l = c / u(o) / 2;\n }\n return parseFloat(l.toFixed(5)) + r;\n };\n},\n l = a,\n f = function f(t) {\n return l(t)[1];\n},\n s = function s(t) {\n return l(t)[0];\n},\n p = {\n baseFontSize: \"16px\",\n baseLineHeight: 1.5,\n rhythmUnit: \"rem\",\n defaultRhythmBorderWidth: \"1px\",\n defaultRhythmBorderStyle: \"solid\",\n roundToNearestHalfLine: !0,\n minLinePadding: \"2px\"\n},\n v = function v(t, e) {\n var r,\n n = c(e.baseFontSize),\n o = s(n(t, \"px\")),\n i = s(e.baseLineHeightInPx),\n a = s(n(e.minLinePadding, \"px\"));\n return (r = e.roundToNearestHalfLine ? Math.ceil(2 * o / i) / 2 : Math.ceil(o / i)) * i - o < 2 * a && (r += e.roundToNearestHalfLine ? .5 : 1), r;\n},\n h = function h(t) {\n var e = c(t.baseFontSize);\n return function (r, n, o) {\n null == r && (r = 1), null == n && (n = t.baseFontSize), null == o && (o = 0);\n var i = r * s(t.baseLineHeightInPx) - o + \"px\",\n a = e(i, t.rhythmUnit, n);\n return \"px\" === f(a) && (a = Math.floor(s(a)) + f(a)), parseFloat(s(a).toFixed(5)) + f(a);\n };\n},\n d = \"[object Number]\",\n b = Object.prototype.toString;\n\nn = function n(t) {\n return \"number\" == typeof t || function (t) {\n return !!t && \"object\" == typeof t;\n }(t) && b.call(t) == d;\n}, o = {\n \"minor second\": 16 / 15,\n \"major second\": 9 / 8,\n \"minor third\": 1.2,\n \"major third\": 4 / 3,\n \"diminished fourth\": Math.sqrt(2),\n \"perfect fifth\": 1.5,\n \"minor sixth\": 1.6,\n golden: 1.61803398875,\n phi: 1.61803398875,\n \"major sixth\": 5 / 3,\n \"minor seventh\": 16 / 9,\n \"major seventh\": 15 / 8,\n octave: 2,\n \"major tenth\": 2.5,\n \"major eleventh\": 8 / 3,\n \"major twelfth\": 3,\n \"double octave\": 4\n};\n\nfunction g(t) {\n return !isNaN(parseFloat(t)) && isFinite(t);\n}\n\nvar y = function y(t, e, r) {\n if (void 0 === e && (e = 0), void 0 === r && (r = !1), \"cool\" === e ? e = 237 : \"slate\" === e ? e = 122 : \"warm\" === e && (e = 69), !g(e)) throw new Error(\"Hue is not a number\");\n if (!g(t)) throw new Error(\"Lightness is not a number\");\n t > 100 && (t = 100), t < 0 && (t = 0);\n var n = 0;\n\n if (0 !== e) {\n n = 19.92978 + -.3651759 * t + .001737214 * Math.pow(t, 2);\n }\n\n var o = 0;\n return r ? (o = t / 100, t = \"100%,\") : (o = (100 - t) / 100, t = \"0%,\"), \"hsla(\" + e + \",\" + n + \"%,\" + t + o + \")\";\n},\n m = \"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : \"undefined\" != typeof self ? self : {};\n\nfunction j(t, e) {\n return t(e = {\n exports: {}\n }, e.exports), e.exports;\n}\n\nvar _ = \"object\" == typeof m && m && m.Object === Object && m,\n w = \"object\" == typeof self && self && self.Object === Object && self,\n O = _ || w || Function(\"return this\")(),\n S = O.Symbol,\n x = Object.prototype,\n z = x.hasOwnProperty,\n F = x.toString,\n k = S ? S.toStringTag : void 0;\n\nvar A = function A(t) {\n var e = z.call(t, k),\n r = t[k];\n\n try {\n t[k] = void 0;\n var n = !0;\n } catch (t) {}\n\n var o = F.call(t);\n return n && (e ? t[k] = r : delete t[k]), o;\n},\n L = Object.prototype.toString;\n\nvar B = function B(t) {\n return L.call(t);\n},\n P = \"[object Null]\",\n T = \"[object Undefined]\",\n M = S ? S.toStringTag : void 0;\n\nvar E = function E(t) {\n return null == t ? void 0 === t ? T : P : M && M in Object(t) ? A(t) : B(t);\n};\n\nvar H = function H(t) {\n var e = typeof t;\n return null != t && (\"object\" == e || \"function\" == e);\n},\n N = \"[object AsyncFunction]\",\n W = \"[object Function]\",\n C = \"[object GeneratorFunction]\",\n I = \"[object Proxy]\";\n\nvar R,\n $ = function $(t) {\n if (!H(t)) return !1;\n var e = E(t);\n return e == W || e == C || e == N || e == I;\n},\n U = O[\"__core-js_shared__\"],\n D = (R = /[^.]+$/.exec(U && U.keys && U.keys.IE_PROTO || \"\")) ? \"Symbol(src)_1.\" + R : \"\";\n\nvar q = function q(t) {\n return !!D && D in t;\n},\n V = Function.prototype.toString;\n\nvar J = function J(t) {\n if (null != t) {\n try {\n return V.call(t);\n } catch (t) {}\n\n try {\n return t + \"\";\n } catch (t) {}\n }\n\n return \"\";\n},\n Z = /^\\[object .+?Constructor\\]$/,\n G = Function.prototype,\n K = Object.prototype,\n Y = RegExp(\"^\" + G.toString.call(K.hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\n\nvar Q = function Q(t) {\n return !(!H(t) || q(t)) && ($(t) ? Y : Z).test(J(t));\n};\n\nvar X = function X(t, e) {\n return null == t ? void 0 : t[e];\n};\n\nvar tt = function tt(t, e) {\n var r = X(t, e);\n return Q(r) ? r : void 0;\n},\n et = function () {\n try {\n var t = tt(Object, \"defineProperty\");\n return t({}, \"\", {}), t;\n } catch (t) {}\n}();\n\nvar rt = function rt(t, e, r) {\n \"__proto__\" == e && et ? et(t, e, {\n configurable: !0,\n enumerable: !0,\n value: r,\n writable: !0\n }) : t[e] = r;\n};\n\nvar nt = function nt(t, e) {\n return t === e || t != t && e != e;\n},\n ot = Object.prototype.hasOwnProperty;\n\nvar it = function it(t, e, r) {\n var n = t[e];\n ot.call(t, e) && nt(n, r) && (void 0 !== r || e in t) || rt(t, e, r);\n},\n at = Array.isArray;\n\nvar ut = function ut(t) {\n return null != t && \"object\" == typeof t;\n},\n ct = \"[object Symbol]\";\n\nvar lt = function lt(t) {\n return \"symbol\" == typeof t || ut(t) && E(t) == ct;\n},\n ft = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n st = /^\\w*$/;\n\nvar pt = function pt(t, e) {\n if (at(t)) return !1;\n var r = typeof t;\n return !(\"number\" != r && \"symbol\" != r && \"boolean\" != r && null != t && !lt(t)) || st.test(t) || !ft.test(t) || null != e && t in Object(e);\n},\n vt = tt(Object, \"create\");\n\nvar ht = function ht(t) {\n var e = this.has(t) && delete this.__data__[t];\n return this.size -= e ? 1 : 0, e;\n},\n dt = \"__lodash_hash_undefined__\",\n bt = Object.prototype.hasOwnProperty;\n\nvar gt = function gt(t) {\n var e = this.__data__;\n\n if (vt) {\n var r = e[t];\n return r === dt ? void 0 : r;\n }\n\n return bt.call(e, t) ? e[t] : void 0;\n},\n yt = Object.prototype.hasOwnProperty;\n\nvar mt = function mt(t) {\n var e = this.__data__;\n return vt ? void 0 !== e[t] : yt.call(e, t);\n},\n jt = \"__lodash_hash_undefined__\";\n\nvar _t = function _t(t, e) {\n var r = this.__data__;\n return this.size += this.has(t) ? 0 : 1, r[t] = vt && void 0 === e ? jt : e, this;\n};\n\nfunction wt(t) {\n var e = -1,\n r = null == t ? 0 : t.length;\n\n for (this.clear(); ++e < r;) {\n var n = t[e];\n this.set(n[0], n[1]);\n }\n}\n\nwt.prototype.clear = function () {\n this.__data__ = vt ? vt(null) : {}, this.size = 0;\n}, wt.prototype.delete = ht, wt.prototype.get = gt, wt.prototype.has = mt, wt.prototype.set = _t;\nvar Ot = wt;\n\nvar St = function St(t, e) {\n for (var r = t.length; r--;) {\n if (nt(t[r][0], e)) return r;\n }\n\n return -1;\n},\n xt = Array.prototype.splice;\n\nvar zt = function zt(t) {\n var e = this.__data__,\n r = St(e, t);\n return !(r < 0 || (r == e.length - 1 ? e.pop() : xt.call(e, r, 1), --this.size, 0));\n};\n\nvar Ft = function Ft(t) {\n var e = this.__data__,\n r = St(e, t);\n return r < 0 ? void 0 : e[r][1];\n};\n\nvar kt = function kt(t) {\n return St(this.__data__, t) > -1;\n};\n\nvar At = function At(t, e) {\n var r = this.__data__,\n n = St(r, t);\n return n < 0 ? (++this.size, r.push([t, e])) : r[n][1] = e, this;\n};\n\nfunction Lt(t) {\n var e = -1,\n r = null == t ? 0 : t.length;\n\n for (this.clear(); ++e < r;) {\n var n = t[e];\n this.set(n[0], n[1]);\n }\n}\n\nLt.prototype.clear = function () {\n this.__data__ = [], this.size = 0;\n}, Lt.prototype.delete = zt, Lt.prototype.get = Ft, Lt.prototype.has = kt, Lt.prototype.set = At;\nvar Bt = Lt,\n Pt = tt(O, \"Map\");\n\nvar Tt = function Tt(t) {\n var e = typeof t;\n return \"string\" == e || \"number\" == e || \"symbol\" == e || \"boolean\" == e ? \"__proto__\" !== t : null === t;\n};\n\nvar Mt = function Mt(t, e) {\n var r = t.__data__;\n return Tt(e) ? r[\"string\" == typeof e ? \"string\" : \"hash\"] : r.map;\n};\n\nvar Et = function Et(t) {\n var e = Mt(this, t).delete(t);\n return this.size -= e ? 1 : 0, e;\n};\n\nvar Ht = function Ht(t) {\n return Mt(this, t).get(t);\n};\n\nvar Nt = function Nt(t) {\n return Mt(this, t).has(t);\n};\n\nvar Wt = function Wt(t, e) {\n var r = Mt(this, t),\n n = r.size;\n return r.set(t, e), this.size += r.size == n ? 0 : 1, this;\n};\n\nfunction Ct(t) {\n var e = -1,\n r = null == t ? 0 : t.length;\n\n for (this.clear(); ++e < r;) {\n var n = t[e];\n this.set(n[0], n[1]);\n }\n}\n\nCt.prototype.clear = function () {\n this.size = 0, this.__data__ = {\n hash: new Ot(),\n map: new (Pt || Bt)(),\n string: new Ot()\n };\n}, Ct.prototype.delete = Et, Ct.prototype.get = Ht, Ct.prototype.has = Nt, Ct.prototype.set = Wt;\nvar It = Ct,\n Rt = \"Expected a function\";\n\nfunction $t(t, e) {\n if (\"function\" != typeof t || null != e && \"function\" != typeof e) throw new TypeError(Rt);\n\n var r = function r() {\n var n = arguments,\n o = e ? e.apply(this, n) : n[0],\n i = r.cache;\n if (i.has(o)) return i.get(o);\n var a = t.apply(this, n);\n return r.cache = i.set(o, a) || i, a;\n };\n\n return r.cache = new ($t.Cache || It)(), r;\n}\n\n$t.Cache = It;\nvar Ut = $t,\n Dt = 500;\n\nvar qt = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,\n Vt = /\\\\(\\\\)?/g,\n Jt = function (t) {\n var e = Ut(t, function (t) {\n return r.size === Dt && r.clear(), t;\n }),\n r = e.cache;\n return e;\n}(function (t) {\n var e = [];\n return 46 === t.charCodeAt(0) && e.push(\"\"), t.replace(qt, function (t, r, n, o) {\n e.push(n ? o.replace(Vt, \"$1\") : r || t);\n }), e;\n});\n\nvar Zt = function Zt(t, e) {\n for (var r = -1, n = null == t ? 0 : t.length, o = Array(n); ++r < n;) {\n o[r] = e(t[r], r, t);\n }\n\n return o;\n},\n Gt = 1 / 0,\n Kt = S ? S.prototype : void 0,\n Yt = Kt ? Kt.toString : void 0;\n\nvar Qt = function t(e) {\n if (\"string\" == typeof e) return e;\n if (at(e)) return Zt(e, t) + \"\";\n if (lt(e)) return Yt ? Yt.call(e) : \"\";\n var r = e + \"\";\n return \"0\" == r && 1 / e == -Gt ? \"-0\" : r;\n};\n\nvar Xt = function Xt(t) {\n return null == t ? \"\" : Qt(t);\n};\n\nvar te = function te(t, e) {\n return at(t) ? t : pt(t, e) ? [t] : Jt(Xt(t));\n},\n ee = 9007199254740991,\n re = /^(?:0|[1-9]\\d*)$/;\n\nvar ne = function ne(t, e) {\n var r = typeof t;\n return !!(e = null == e ? ee : e) && (\"number\" == r || \"symbol\" != r && re.test(t)) && t > -1 && t % 1 == 0 && t < e;\n},\n oe = 1 / 0;\n\nvar ie = function ie(t) {\n if (\"string\" == typeof t || lt(t)) return t;\n var e = t + \"\";\n return \"0\" == e && 1 / t == -oe ? \"-0\" : e;\n};\n\nvar ae = function ae(t, e, r, n) {\n if (!H(t)) return t;\n\n for (var o = -1, i = (e = te(e, t)).length, a = i - 1, u = t; null != u && ++o < i;) {\n var c = ie(e[o]),\n l = r;\n\n if (o != a) {\n var f = u[c];\n void 0 === (l = n ? n(f, c, u) : void 0) && (l = H(f) ? f : ne(e[o + 1]) ? [] : {});\n }\n\n it(u, c, l), u = u[c];\n }\n\n return t;\n};\n\nvar ue = function ue(t, e, r) {\n return null == t ? t : ae(t, e, r);\n};\n\nvar ce = function ce(t, e) {\n for (var r = -1, n = null == t ? 0 : t.length; ++r < n && !1 !== e(t[r], r, t);) {\n ;\n }\n\n return t;\n};\n\nvar le = function (t) {\n return function (e, r, n) {\n for (var o = -1, i = Object(e), a = n(e), u = a.length; u--;) {\n var c = a[t ? u : ++o];\n if (!1 === r(i[c], c, i)) break;\n }\n\n return e;\n };\n}();\n\nvar fe = function fe(t, e) {\n for (var r = -1, n = Array(t); ++r < t;) {\n n[r] = e(r);\n }\n\n return n;\n},\n se = \"[object Arguments]\";\n\nvar pe = function pe(t) {\n return ut(t) && E(t) == se;\n},\n ve = Object.prototype,\n he = ve.hasOwnProperty,\n de = ve.propertyIsEnumerable,\n be = pe(function () {\n return arguments;\n}()) ? pe : function (t) {\n return ut(t) && he.call(t, \"callee\") && !de.call(t, \"callee\");\n};\n\nvar ge = function ge() {\n return !1;\n},\n ye = j(function (t, e) {\n var r = e && !e.nodeType && e,\n n = r && t && !t.nodeType && t,\n o = n && n.exports === r ? O.Buffer : void 0;\n t.exports = (o ? o.isBuffer : void 0) || ge;\n}),\n me = 9007199254740991;\n\nvar je = function je(t) {\n return \"number\" == typeof t && t > -1 && t % 1 == 0 && t <= me;\n},\n _e = {};\n\n_e[\"[object Float32Array]\"] = _e[\"[object Float64Array]\"] = _e[\"[object Int8Array]\"] = _e[\"[object Int16Array]\"] = _e[\"[object Int32Array]\"] = _e[\"[object Uint8Array]\"] = _e[\"[object Uint8ClampedArray]\"] = _e[\"[object Uint16Array]\"] = _e[\"[object Uint32Array]\"] = !0, _e[\"[object Arguments]\"] = _e[\"[object Array]\"] = _e[\"[object ArrayBuffer]\"] = _e[\"[object Boolean]\"] = _e[\"[object DataView]\"] = _e[\"[object Date]\"] = _e[\"[object Error]\"] = _e[\"[object Function]\"] = _e[\"[object Map]\"] = _e[\"[object Number]\"] = _e[\"[object Object]\"] = _e[\"[object RegExp]\"] = _e[\"[object Set]\"] = _e[\"[object String]\"] = _e[\"[object WeakMap]\"] = !1;\n\nvar we = function we(t) {\n return ut(t) && je(t.length) && !!_e[E(t)];\n};\n\nvar Oe = function Oe(t) {\n return function (e) {\n return t(e);\n };\n},\n Se = j(function (t, e) {\n var r = e && !e.nodeType && e,\n n = r && t && !t.nodeType && t,\n o = n && n.exports === r && _.process,\n i = function () {\n try {\n var t = n && n.require && n.require(\"util\").types;\n\n return t || o && o.binding && o.binding(\"util\");\n } catch (t) {}\n }();\n\n t.exports = i;\n}),\n xe = Se && Se.isTypedArray,\n ze = xe ? Oe(xe) : we,\n Fe = Object.prototype.hasOwnProperty;\n\nvar ke = function ke(t, e) {\n var r = at(t),\n n = !r && be(t),\n o = !r && !n && ye(t),\n i = !r && !n && !o && ze(t),\n a = r || n || o || i,\n u = a ? fe(t.length, String) : [],\n c = u.length;\n\n for (var l in t) {\n !e && !Fe.call(t, l) || a && (\"length\" == l || o && (\"offset\" == l || \"parent\" == l) || i && (\"buffer\" == l || \"byteLength\" == l || \"byteOffset\" == l) || ne(l, c)) || u.push(l);\n }\n\n return u;\n},\n Ae = Object.prototype;\n\nvar Le = function Le(t) {\n var e = t && t.constructor;\n return t === (\"function\" == typeof e && e.prototype || Ae);\n};\n\nvar Be = function Be(t, e) {\n return function (r) {\n return t(e(r));\n };\n},\n Pe = Be(Object.keys, Object),\n Te = Object.prototype.hasOwnProperty;\n\nvar Me = function Me(t) {\n if (!Le(t)) return Pe(t);\n var e = [];\n\n for (var r in Object(t)) {\n Te.call(t, r) && \"constructor\" != r && e.push(r);\n }\n\n return e;\n};\n\nvar Ee = function Ee(t) {\n return null != t && je(t.length) && !$(t);\n};\n\nvar He = function He(t) {\n return Ee(t) ? ke(t) : Me(t);\n};\n\nvar Ne = function (t, e) {\n return function (r, n) {\n if (null == r) return r;\n if (!Ee(r)) return t(r, n);\n\n for (var o = r.length, i = e ? o : -1, a = Object(r); (e ? i-- : ++i < o) && !1 !== n(a[i], i, a);) {\n ;\n }\n\n return r;\n };\n}(function (t, e) {\n return t && le(t, e, He);\n});\n\nvar We = function We(t) {\n return t;\n};\n\nvar Ce = function Ce(t) {\n return \"function\" == typeof t ? t : We;\n};\n\nvar Ie = function Ie(t, e) {\n return (at(t) ? ce : Ne)(t, Ce(e));\n},\n Re = \"[object Number]\";\n\nvar $e = function $e(t) {\n return \"number\" == typeof t || ut(t) && E(t) == Re;\n},\n Ue = \"[object String]\";\n\nvar De = function De(t) {\n return \"string\" == typeof t || !at(t) && ut(t) && E(t) == Ue;\n};\n\nvar qe = function qe(t) {\n var e = this.__data__,\n r = e.delete(t);\n return this.size = e.size, r;\n};\n\nvar Ve = function Ve(t) {\n return this.__data__.get(t);\n};\n\nvar Je = function Je(t) {\n return this.__data__.has(t);\n},\n Ze = 200;\n\nvar Ge = function Ge(t, e) {\n var r = this.__data__;\n\n if (r instanceof Bt) {\n var n = r.__data__;\n if (!Pt || n.length < Ze - 1) return n.push([t, e]), this.size = ++r.size, this;\n r = this.__data__ = new It(n);\n }\n\n return r.set(t, e), this.size = r.size, this;\n};\n\nfunction Ke(t) {\n var e = this.__data__ = new Bt(t);\n this.size = e.size;\n}\n\nKe.prototype.clear = function () {\n this.__data__ = new Bt(), this.size = 0;\n}, Ke.prototype.delete = qe, Ke.prototype.get = Ve, Ke.prototype.has = Je, Ke.prototype.set = Ge;\nvar Ye = Ke;\n\nvar Qe = function Qe(t, e, r) {\n (void 0 === r || nt(t[e], r)) && (void 0 !== r || e in t) || rt(t, e, r);\n},\n Xe = j(function (t, e) {\n var r = e && !e.nodeType && e,\n n = r && t && !t.nodeType && t,\n o = n && n.exports === r ? O.Buffer : void 0,\n i = o ? o.allocUnsafe : void 0;\n\n t.exports = function (t, e) {\n if (e) return t.slice();\n var r = t.length,\n n = i ? i(r) : new t.constructor(r);\n return t.copy(n), n;\n };\n}),\n tr = O.Uint8Array;\n\nvar er = function er(t) {\n var e = new t.constructor(t.byteLength);\n return new tr(e).set(new tr(t)), e;\n};\n\nvar rr = function rr(t, e) {\n var r = e ? er(t.buffer) : t.buffer;\n return new t.constructor(r, t.byteOffset, t.length);\n};\n\nvar nr = function nr(t, e) {\n var r = -1,\n n = t.length;\n\n for (e || (e = Array(n)); ++r < n;) {\n e[r] = t[r];\n }\n\n return e;\n},\n or = Object.create,\n ir = function () {\n function t() {}\n\n return function (e) {\n if (!H(e)) return {};\n if (or) return or(e);\n t.prototype = e;\n var r = new t();\n return t.prototype = void 0, r;\n };\n}(),\n ar = Be(Object.getPrototypeOf, Object);\n\nvar ur = function ur(t) {\n return \"function\" != typeof t.constructor || Le(t) ? {} : ir(ar(t));\n};\n\nvar cr = function cr(t) {\n return ut(t) && Ee(t);\n},\n lr = \"[object Object]\",\n fr = Function.prototype,\n sr = Object.prototype,\n pr = fr.toString,\n vr = sr.hasOwnProperty,\n hr = pr.call(Object);\n\nvar dr = function dr(t) {\n if (!ut(t) || E(t) != lr) return !1;\n var e = ar(t);\n if (null === e) return !0;\n var r = vr.call(e, \"constructor\") && e.constructor;\n return \"function\" == typeof r && r instanceof r && pr.call(r) == hr;\n};\n\nvar br = function br(t, e) {\n return \"__proto__\" == e ? void 0 : t[e];\n};\n\nvar gr = function gr(t, e, r, n) {\n var o = !r;\n r || (r = {});\n\n for (var i = -1, a = e.length; ++i < a;) {\n var u = e[i],\n c = n ? n(r[u], t[u], u, r, t) : void 0;\n void 0 === c && (c = t[u]), o ? rt(r, u, c) : it(r, u, c);\n }\n\n return r;\n};\n\nvar yr = function yr(t) {\n var e = [];\n if (null != t) for (var r in Object(t)) {\n e.push(r);\n }\n return e;\n},\n mr = Object.prototype.hasOwnProperty;\n\nvar jr = function jr(t) {\n if (!H(t)) return yr(t);\n var e = Le(t),\n r = [];\n\n for (var n in t) {\n (\"constructor\" != n || !e && mr.call(t, n)) && r.push(n);\n }\n\n return r;\n};\n\nvar _r = function _r(t) {\n return Ee(t) ? ke(t, !0) : jr(t);\n};\n\nvar wr = function wr(t) {\n return gr(t, _r(t));\n};\n\nvar Or = function Or(t, e, r, n, o, i, a) {\n var u = br(t, r),\n c = br(e, r),\n l = a.get(c);\n if (l) Qe(t, r, l);else {\n var f = i ? i(u, c, r + \"\", t, e, a) : void 0,\n s = void 0 === f;\n\n if (s) {\n var p = at(c),\n v = !p && ye(c),\n h = !p && !v && ze(c);\n f = c, p || v || h ? at(u) ? f = u : cr(u) ? f = nr(u) : v ? (s = !1, f = Xe(c, !0)) : h ? (s = !1, f = rr(c, !0)) : f = [] : dr(c) || be(c) ? (f = u, be(u) ? f = wr(u) : (!H(u) || n && $(u)) && (f = ur(c))) : s = !1;\n }\n\n s && (a.set(c, f), o(f, c, n, i, a), a.delete(c)), Qe(t, r, f);\n }\n};\n\nvar Sr = function t(e, r, n, o, i) {\n e !== r && le(r, function (a, u) {\n if (H(a)) i || (i = new Ye()), Or(e, r, u, n, t, o, i);else {\n var c = o ? o(br(e, u), a, u + \"\", e, r, i) : void 0;\n void 0 === c && (c = a), Qe(e, u, c);\n }\n }, _r);\n};\n\nvar xr = function xr(t, e, r) {\n switch (r.length) {\n case 0:\n return t.call(e);\n\n case 1:\n return t.call(e, r[0]);\n\n case 2:\n return t.call(e, r[0], r[1]);\n\n case 3:\n return t.call(e, r[0], r[1], r[2]);\n }\n\n return t.apply(e, r);\n},\n zr = Math.max;\n\nvar Fr = function Fr(t, e, r) {\n return e = zr(void 0 === e ? t.length - 1 : e, 0), function () {\n for (var n = arguments, o = -1, i = zr(n.length - e, 0), a = Array(i); ++o < i;) {\n a[o] = n[e + o];\n }\n\n o = -1;\n\n for (var u = Array(e + 1); ++o < e;) {\n u[o] = n[o];\n }\n\n return u[e] = r(a), xr(t, this, u);\n };\n};\n\nvar kr = function kr(t) {\n return function () {\n return t;\n };\n},\n Ar = 800,\n Lr = 16,\n Br = Date.now;\n\nvar Pr = function (t) {\n var e = 0,\n r = 0;\n return function () {\n var n = Br(),\n o = Lr - (n - r);\n\n if (r = n, o > 0) {\n if (++e >= Ar) return arguments[0];\n } else e = 0;\n\n return t.apply(void 0, arguments);\n };\n}(et ? function (t, e) {\n return et(t, \"toString\", {\n configurable: !0,\n enumerable: !1,\n value: kr(e),\n writable: !0\n });\n} : We);\n\nvar Tr = function Tr(t, e) {\n return Pr(Fr(t, e, We), t + \"\");\n};\n\nvar Mr = function Mr(t, e, r) {\n if (!H(r)) return !1;\n var n = typeof e;\n return !!(\"number\" == n ? Ee(r) && ne(e, r.length) : \"string\" == n && e in r) && nt(r[e], t);\n};\n\nvar Er = function (t) {\n return Tr(function (e, r) {\n var n = -1,\n o = r.length,\n i = o > 1 ? r[o - 1] : void 0,\n a = o > 2 ? r[2] : void 0;\n\n for (i = t.length > 3 && \"function\" == typeof i ? (o--, i) : void 0, a && Mr(r[0], r[1], a) && (i = o < 3 ? void 0 : i, o = 1), e = Object(e); ++n < o;) {\n var u = r[n];\n u && t(e, u, n, i);\n }\n\n return e;\n });\n}(function (t, e, r) {\n Sr(t, e, r);\n});\n\nvar Hr = function Hr(t, e, r, n) {\n var o = -1,\n i = null == t ? 0 : t.length;\n\n for (n && i && (r = t[++o]); ++o < i;) {\n r = e(r, t[o], o, t);\n }\n\n return r;\n},\n Nr = \"__lodash_hash_undefined__\";\n\nvar Wr = function Wr(t) {\n return this.__data__.has(t);\n};\n\nfunction Cr(t) {\n var e = -1,\n r = null == t ? 0 : t.length;\n\n for (this.__data__ = new It(); ++e < r;) {\n this.add(t[e]);\n }\n}\n\nCr.prototype.add = Cr.prototype.push = function (t) {\n return this.__data__.set(t, Nr), this;\n}, Cr.prototype.has = Wr;\nvar Ir = Cr;\n\nvar Rr = function Rr(t, e) {\n for (var r = -1, n = null == t ? 0 : t.length; ++r < n;) {\n if (e(t[r], r, t)) return !0;\n }\n\n return !1;\n};\n\nvar $r = function $r(t, e) {\n return t.has(e);\n},\n Ur = 1,\n Dr = 2;\n\nvar qr = function qr(t, e, r, n, o, i) {\n var a = r & Ur,\n u = t.length,\n c = e.length;\n if (u != c && !(a && c > u)) return !1;\n var l = i.get(t);\n if (l && i.get(e)) return l == e;\n var f = -1,\n s = !0,\n p = r & Dr ? new Ir() : void 0;\n\n for (i.set(t, e), i.set(e, t); ++f < u;) {\n var v = t[f],\n h = e[f];\n if (n) var d = a ? n(h, v, f, e, t, i) : n(v, h, f, t, e, i);\n\n if (void 0 !== d) {\n if (d) continue;\n s = !1;\n break;\n }\n\n if (p) {\n if (!Rr(e, function (t, e) {\n if (!$r(p, e) && (v === t || o(v, t, r, n, i))) return p.push(e);\n })) {\n s = !1;\n break;\n }\n } else if (v !== h && !o(v, h, r, n, i)) {\n s = !1;\n break;\n }\n }\n\n return i.delete(t), i.delete(e), s;\n};\n\nvar Vr = function Vr(t) {\n var e = -1,\n r = Array(t.size);\n return t.forEach(function (t, n) {\n r[++e] = [n, t];\n }), r;\n};\n\nvar Jr = function Jr(t) {\n var e = -1,\n r = Array(t.size);\n return t.forEach(function (t) {\n r[++e] = t;\n }), r;\n},\n Zr = 1,\n Gr = 2,\n Kr = \"[object Boolean]\",\n Yr = \"[object Date]\",\n Qr = \"[object Error]\",\n Xr = \"[object Map]\",\n tn = \"[object Number]\",\n en = \"[object RegExp]\",\n rn = \"[object Set]\",\n nn = \"[object String]\",\n on = \"[object Symbol]\",\n an = \"[object ArrayBuffer]\",\n un = \"[object DataView]\",\n cn = S ? S.prototype : void 0,\n ln = cn ? cn.valueOf : void 0;\n\nvar fn = function fn(t, e, r, n, o, i, a) {\n switch (r) {\n case un:\n if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1;\n t = t.buffer, e = e.buffer;\n\n case an:\n return !(t.byteLength != e.byteLength || !i(new tr(t), new tr(e)));\n\n case Kr:\n case Yr:\n case tn:\n return nt(+t, +e);\n\n case Qr:\n return t.name == e.name && t.message == e.message;\n\n case en:\n case nn:\n return t == e + \"\";\n\n case Xr:\n var u = Vr;\n\n case rn:\n if (u || (u = Jr), t.size != e.size && !(n & Zr)) return !1;\n var c = a.get(t);\n if (c) return c == e;\n n |= Gr, a.set(t, e);\n var l = qr(u(t), u(e), n, o, i, a);\n return a.delete(t), l;\n\n case on:\n if (ln) return ln.call(t) == ln.call(e);\n }\n\n return !1;\n};\n\nvar sn = function sn(t, e) {\n for (var r = -1, n = e.length, o = t.length; ++r < n;) {\n t[o + r] = e[r];\n }\n\n return t;\n};\n\nvar pn = function pn(t, e, r) {\n var n = e(t);\n return at(t) ? n : sn(n, r(t));\n};\n\nvar vn = function vn(t, e) {\n for (var r = -1, n = null == t ? 0 : t.length, o = 0, i = []; ++r < n;) {\n var a = t[r];\n e(a, r, t) && (i[o++] = a);\n }\n\n return i;\n};\n\nvar hn = Object.prototype.propertyIsEnumerable,\n dn = Object.getOwnPropertySymbols,\n bn = dn ? function (t) {\n return null == t ? [] : (t = Object(t), vn(dn(t), function (e) {\n return hn.call(t, e);\n }));\n} : function () {\n return [];\n};\n\nvar gn = function gn(t) {\n return pn(t, He, bn);\n},\n yn = 1,\n mn = Object.prototype.hasOwnProperty;\n\nvar jn = function jn(t, e, r, n, o, i) {\n var a = r & yn,\n u = gn(t),\n c = u.length;\n if (c != gn(e).length && !a) return !1;\n\n for (var l = c; l--;) {\n var f = u[l];\n if (!(a ? f in e : mn.call(e, f))) return !1;\n }\n\n var s = i.get(t);\n if (s && i.get(e)) return s == e;\n var p = !0;\n i.set(t, e), i.set(e, t);\n\n for (var v = a; ++l < c;) {\n var h = t[f = u[l]],\n d = e[f];\n if (n) var b = a ? n(d, h, f, e, t, i) : n(h, d, f, t, e, i);\n\n if (!(void 0 === b ? h === d || o(h, d, r, n, i) : b)) {\n p = !1;\n break;\n }\n\n v || (v = \"constructor\" == f);\n }\n\n if (p && !v) {\n var g = t.constructor,\n y = e.constructor;\n g != y && \"constructor\" in t && \"constructor\" in e && !(\"function\" == typeof g && g instanceof g && \"function\" == typeof y && y instanceof y) && (p = !1);\n }\n\n return i.delete(t), i.delete(e), p;\n},\n _n = tt(O, \"DataView\"),\n wn = tt(O, \"Promise\"),\n On = tt(O, \"Set\"),\n Sn = tt(O, \"WeakMap\"),\n xn = J(_n),\n zn = J(Pt),\n Fn = J(wn),\n kn = J(On),\n An = J(Sn),\n Ln = E;\n\n(_n && \"[object DataView]\" != Ln(new _n(new ArrayBuffer(1))) || Pt && \"[object Map]\" != Ln(new Pt()) || wn && \"[object Promise]\" != Ln(wn.resolve()) || On && \"[object Set]\" != Ln(new On()) || Sn && \"[object WeakMap]\" != Ln(new Sn())) && (Ln = function Ln(t) {\n var e = E(t),\n r = \"[object Object]\" == e ? t.constructor : void 0,\n n = r ? J(r) : \"\";\n if (n) switch (n) {\n case xn:\n return \"[object DataView]\";\n\n case zn:\n return \"[object Map]\";\n\n case Fn:\n return \"[object Promise]\";\n\n case kn:\n return \"[object Set]\";\n\n case An:\n return \"[object WeakMap]\";\n }\n return e;\n});\nvar Bn = Ln,\n Pn = 1,\n Tn = \"[object Arguments]\",\n Mn = \"[object Array]\",\n En = \"[object Object]\",\n Hn = Object.prototype.hasOwnProperty;\n\nvar Nn = function Nn(t, e, r, n, o, i) {\n var a = at(t),\n u = at(e),\n c = a ? Mn : Bn(t),\n l = u ? Mn : Bn(e),\n f = (c = c == Tn ? En : c) == En,\n s = (l = l == Tn ? En : l) == En,\n p = c == l;\n\n if (p && ye(t)) {\n if (!ye(e)) return !1;\n a = !0, f = !1;\n }\n\n if (p && !f) return i || (i = new Ye()), a || ze(t) ? qr(t, e, r, n, o, i) : fn(t, e, c, r, n, o, i);\n\n if (!(r & Pn)) {\n var v = f && Hn.call(t, \"__wrapped__\"),\n h = s && Hn.call(e, \"__wrapped__\");\n\n if (v || h) {\n var d = v ? t.value() : t,\n b = h ? e.value() : e;\n return i || (i = new Ye()), o(d, b, r, n, i);\n }\n }\n\n return !!p && (i || (i = new Ye()), jn(t, e, r, n, o, i));\n};\n\nvar Wn = function t(e, r, n, o, i) {\n return e === r || (null == e || null == r || !ut(e) && !ut(r) ? e != e && r != r : Nn(e, r, n, o, t, i));\n},\n Cn = 1,\n In = 2;\n\nvar Rn = function Rn(t, e, r, n) {\n var o = r.length,\n i = o,\n a = !n;\n if (null == t) return !i;\n\n for (t = Object(t); o--;) {\n var u = r[o];\n if (a && u[2] ? u[1] !== t[u[0]] : !(u[0] in t)) return !1;\n }\n\n for (; ++o < i;) {\n var c = (u = r[o])[0],\n l = t[c],\n f = u[1];\n\n if (a && u[2]) {\n if (void 0 === l && !(c in t)) return !1;\n } else {\n var s = new Ye();\n if (n) var p = n(l, f, c, t, e, s);\n if (!(void 0 === p ? Wn(f, l, Cn | In, n, s) : p)) return !1;\n }\n }\n\n return !0;\n};\n\nvar $n = function $n(t) {\n return t == t && !H(t);\n};\n\nvar Un = function Un(t) {\n for (var e = He(t), r = e.length; r--;) {\n var n = e[r],\n o = t[n];\n e[r] = [n, o, $n(o)];\n }\n\n return e;\n};\n\nvar Dn = function Dn(t, e) {\n return function (r) {\n return null != r && r[t] === e && (void 0 !== e || t in Object(r));\n };\n};\n\nvar qn = function qn(t) {\n var e = Un(t);\n return 1 == e.length && e[0][2] ? Dn(e[0][0], e[0][1]) : function (r) {\n return r === t || Rn(r, t, e);\n };\n};\n\nvar Vn = function Vn(t, e) {\n for (var r = 0, n = (e = te(e, t)).length; null != t && r < n;) {\n t = t[ie(e[r++])];\n }\n\n return r && r == n ? t : void 0;\n};\n\nvar Jn = function Jn(t, e, r) {\n var n = null == t ? void 0 : Vn(t, e);\n return void 0 === n ? r : n;\n};\n\nvar Zn = function Zn(t, e) {\n return null != t && e in Object(t);\n};\n\nvar Gn = function Gn(t, e, r) {\n for (var n = -1, o = (e = te(e, t)).length, i = !1; ++n < o;) {\n var a = ie(e[n]);\n if (!(i = null != t && r(t, a))) break;\n t = t[a];\n }\n\n return i || ++n != o ? i : !!(o = null == t ? 0 : t.length) && je(o) && ne(a, o) && (at(t) || be(t));\n};\n\nvar Kn = function Kn(t, e) {\n return null != t && Gn(t, e, Zn);\n},\n Yn = 1,\n Qn = 2;\n\nvar Xn = function Xn(t, e) {\n return pt(t) && $n(e) ? Dn(ie(t), e) : function (r) {\n var n = Jn(r, t);\n return void 0 === n && n === e ? Kn(r, t) : Wn(e, n, Yn | Qn);\n };\n};\n\nvar to = function to(t) {\n return function (e) {\n return null == e ? void 0 : e[t];\n };\n};\n\nvar eo = function eo(t) {\n return function (e) {\n return Vn(e, t);\n };\n};\n\nvar ro = function ro(t) {\n return pt(t) ? to(ie(t)) : eo(t);\n};\n\nvar no = function no(t) {\n return \"function\" == typeof t ? t : null == t ? We : \"object\" == typeof t ? at(t) ? Xn(t[0], t[1]) : qn(t) : ro(t);\n};\n\nvar oo = function oo(t, e, r, n, o) {\n return o(t, function (t, o, i) {\n r = n ? (n = !1, t) : e(r, t, o, i);\n }), r;\n};\n\nvar io = function io(t, e, r) {\n var n = at(t) ? Hr : oo,\n o = arguments.length < 3;\n return n(t, no(e, 4), r, o, Ne);\n},\n ao = function ao(t, e, r) {\n var n;\n return void 0 === t && (t = {}), n = at(e) ? e : [e], Ie(n, function (e) {\n Ie(r, function (r, n) {\n ue(t, e + \".\" + n, r);\n });\n }), t;\n},\n uo = [\"inherit\", \"default\", \"serif\", \"sans-serif\", \"monospace\", \"fantasy\", \"cursive\", \"-apple-system\"],\n co = function co(t) {\n return -1 !== uo.indexOf(t) ? t : \"'\" + t + \"'\";\n};\n\nvar lo,\n fo = j(function (t, e) {\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n }), e.default = \"html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}\";\n}),\n so = (lo = fo) && lo.__esModule && Object.prototype.hasOwnProperty.call(lo, \"default\") ? lo.default : lo,\n po = function po(t) {\n return io(t, function (t, e, r) {\n return t += r + \"{\", Ie(e, function (e, r) {\n if (H(e)) {\n var n = {};\n n[r] = e, t += po(n);\n } else {\n var o = function (t, e) {\n if (\"string\" != typeof t) throw new TypeError(\"Expected a string\");\n return t.replace(/([a-z\\d])([A-Z])/g, \"$1\" + (e = void 0 === e ? \"_\" : e) + \"$2\").replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, \"$1\" + e + \"$2\").toLowerCase();\n }(r, \"-\") + \":\" + e + \";\";\n\n [\"Webkit\", \"ms\", \"Moz\", \"O\"].forEach(function (t) {\n r.slice(0, t.length) === t && (o = \"-\" + o);\n }), t += o;\n }\n }), t += \"}\";\n }, \"\");\n};\n\nmodule.exports = function (t) {\n var e,\n r,\n a,\n u,\n l = i({}, {\n baseFontSize: \"16px\",\n baseLineHeight: 1.45,\n headerLineHeight: 1.1,\n scaleRatio: 2,\n googleFonts: [],\n headerFontFamily: [\"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"sans-serif\"],\n bodyFontFamily: [\"georgia\", \"serif\"],\n headerColor: \"inherit\",\n bodyColor: \"hsla(0,0%,0%,0.8)\",\n headerWeight: \"bold\",\n bodyWeight: \"normal\",\n boldWeight: \"bold\",\n includeNormalize: !0,\n blockMarginBottom: 1\n }, t),\n d = (e = l, r = JSON.parse(JSON.stringify(p)), a = Object.assign({}, r, e), u = c(a.baseFontSize), f(a.baseLineHeight) ? (s(u(a.baseFontSize, \"px\")), a.baseLineHeightInPx = u(a.baseLineHeight, \"px\")) : a.baseLineHeightInPx = s(a.baseFontSize) * a.baseLineHeight + \"px\", {\n rhythm: h(a),\n establishBaseline: function establishBaseline() {\n return c((t = a).baseFontSize), {\n fontSize: s(t.baseFontSize) / 16 * 100 + \"%\",\n lineHeight: t.baseLineHeight.toString()\n };\n var t;\n },\n linesForFontSize: function linesForFontSize(t) {\n return v(t, a);\n },\n adjustFontSizeTo: function adjustFontSizeTo(t, e, r) {\n return null == e && (e = \"auto\"), function (t, e, r, n) {\n null == r && (r = n.baseFontSize), \"%\" === f(t) && (t = s(n.baseFontSize) * (s(t) / 100) + \"px\");\n var o = c(n.baseFontSize);\n t = o(t, \"px\", r = o(r, \"px\"));\n var i = h(n);\n return \"auto\" === e && (e = v(t, n)), {\n fontSize: o(t, n.rhythmUnit, r),\n lineHeight: i(e, r)\n };\n }(t, e, r, a);\n }\n });\n return d.scale = function (t) {\n var e = parseInt(l.baseFontSize, 10),\n r = function (t, e) {\n var r;\n return null == t && (t = 0), null == e && (e = \"golden\"), r = n(e) ? e : null != o[e] ? o[e] : o.golden, Math.pow(r, t);\n }(t, l.scaleRatio) * e + \"px\";\n\n return d.adjustFontSizeTo(r);\n }, Object.assign({}, {\n options: l\n }, d, {\n createStyles: function createStyles() {\n return this.toString();\n },\n toJSON: function toJSON() {\n return function (t, e) {\n var r = {},\n n = t.establishBaseline();\n r = ao(r, \"html\", {\n font: n.fontSize + \"/\" + n.lineHeight + \" \" + e.bodyFontFamily.map(co).join(\",\"),\n boxSizing: \"border-box\",\n overflowY: \"scroll\"\n }), r = ao(r, [\"*\", \"*:before\", \"*:after\"], {\n boxSizing: \"inherit\"\n }), r = ao(r, \"body\", {\n color: e.bodyColor,\n fontFamily: e.bodyFontFamily.map(co).join(\",\"),\n fontWeight: e.bodyWeight,\n wordWrap: \"break-word\",\n fontKerning: \"normal\",\n MozFontFeatureSettings: '\"kern\", \"liga\", \"clig\", \"calt\"',\n msFontFeatureSettings: '\"kern\", \"liga\", \"clig\", \"calt\"',\n WebkitFontFeatureSettings: '\"kern\", \"liga\", \"clig\", \"calt\"',\n fontFeatureSettings: '\"kern\", \"liga\", \"clig\", \"calt\"'\n }), r = ao(r, \"img\", {\n maxWidth: \"100%\"\n });\n var o = \"\";\n o = $e(e.blockMarginBottom) ? t.rhythm(e.blockMarginBottom) : De(e.blockMarginBottom) ? e.blockMarginBottom : t.rhythm(1), r = ao(r, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"hgroup\", \"ul\", \"ol\", \"dl\", \"dd\", \"p\", \"figure\", \"pre\", \"table\", \"fieldset\", \"blockquote\", \"form\", \"noscript\", \"iframe\", \"img\", \"hr\", \"address\"], {\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n marginBottom: o\n }), r = ao(r, \"blockquote\", {\n marginRight: t.rhythm(1),\n marginBottom: o,\n marginLeft: t.rhythm(1)\n }), r = ao(r, [\"b\", \"strong\", \"dt\", \"th\"], {\n fontWeight: e.boldWeight\n }), r = ao(r, \"hr\", {\n background: y(80),\n border: \"none\",\n height: \"1px\",\n marginBottom: \"calc(\" + o + \" - 1px)\"\n }), r = ao(r, [\"ol\", \"ul\"], {\n listStylePosition: \"outside\",\n listStyleImage: \"none\",\n marginLeft: t.rhythm(1)\n }), r = ao(r, \"li\", {\n marginBottom: \"calc(\" + o + \" / 2)\"\n }), r = ao(r, [\"ol li\", \"ul li\"], {\n paddingLeft: 0\n }), r = ao(r, [\"li > ol\", \"li > ul\"], {\n marginLeft: t.rhythm(1),\n marginBottom: \"calc(\" + o + \" / 2)\",\n marginTop: \"calc(\" + o + \" / 2)\"\n }), r = ao(r, [\"blockquote *:last-child\", \"li *:last-child\", \"p *:last-child\"], {\n marginBottom: 0\n }), r = ao(r, [\"li > p\"], {\n marginBottom: \"calc(\" + o + \" / 2)\"\n }), r = ao(r, [\"code\", \"kbd\", \"pre\", \"samp\"], Object.assign({}, t.adjustFontSizeTo(\"85%\"))), (r = ao(r, [\"abbr\", \"acronym\"], {\n borderBottom: \"1px dotted \" + y(50),\n cursor: \"help\"\n }))[\"abbr[title]\"] = {\n borderBottom: \"1px dotted \" + y(50),\n cursor: \"help\",\n textDecoration: \"none\"\n }, r = ao(r, [\"table\"], Object.assign({}, t.adjustFontSizeTo(e.baseFontSize), {\n borderCollapse: \"collapse\",\n width: \"100%\"\n })), r = ao(r, [\"thead\"], {\n textAlign: \"left\"\n }), r = ao(r, [\"td,th\"], {\n textAlign: \"left\",\n borderBottom: \"1px solid \" + y(88),\n fontFeatureSettings: '\"tnum\"',\n MozFontFeatureSettings: '\"tnum\"',\n msFontFeatureSettings: '\"tnum\"',\n WebkitFontFeatureSettings: '\"tnum\"',\n paddingLeft: t.rhythm(2 / 3),\n paddingRight: t.rhythm(2 / 3),\n paddingTop: t.rhythm(.5),\n paddingBottom: \"calc(\" + t.rhythm(.5) + \" - 1px)\"\n }), r = ao(r, \"th:first-child,td:first-child\", {\n paddingLeft: 0\n }), r = ao(r, \"th:last-child,td:last-child\", {\n paddingRight: 0\n }), r = ao(r, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n color: e.headerColor,\n fontFamily: e.headerFontFamily.map(co).join(\",\"),\n fontWeight: e.headerWeight,\n textRendering: \"optimizeLegibility\"\n });\n var i = t.scale(1),\n a = t.scale(.6),\n u = t.scale(.4),\n c = t.scale(0),\n l = t.scale(-.2),\n f = t.scale(-.3);\n return Ie([i, a, u, c, l, f], function (t, n) {\n r = ue(r, \"h\" + (n + 1) + \".fontSize\", t.fontSize), r = ue(r, \"h\" + (n + 1) + \".lineHeight\", e.headerLineHeight);\n }), at(e.plugins) && (r = io(e.plugins, function (r, n) {\n return Er(r, n(t, e, r));\n }, r)), e.overrideStyles && $(e.overrideStyles) && (r = Er(r, e.overrideStyles(t, e, r))), e.overrideThemeStyles && $(e.overrideThemeStyles) && (r = Er(r, e.overrideThemeStyles(t, e, r))), r;\n }(d, l);\n },\n toString: function toString() {\n return function (t, e, r) {\n var n = po(r);\n return e.includeNormalize && (n = \"\" + so + n), n;\n }(0, l, this.toJSON());\n },\n injectStyles: function injectStyles() {\n if (\"undefined\" != typeof document) if (document.getElementById(\"typography.js\")) document.getElementById(\"typography.js\").innerHTML = this.toString();else {\n var t = document.createElement(\"style\");\n t.id = \"typography.js\", t.innerHTML = this.toString();\n var e = document.head;\n e.firstChild ? e.insertBefore(t, e.firstChild) : e.appendChild(t);\n }\n }\n });\n};","import Typography from 'typography'\nimport Wordpress2016 from 'typography-theme-wordpress-2016'\n\nimport './global.css'\n\nWordpress2016.overrideThemeStyles = () => {\n return {\n 'a.gatsby-resp-image-link': {\n boxShadow: `none`,\n },\n a: {\n color: 'var(--textLink)',\n },\n hr: {\n background: 'var(--hr)',\n },\n 'p code': {\n fontSize: '1.1rem',\n },\n 'h1 code, h2 code, h3 code, h4 code, h5 code, h6 code': {\n fontSize: 'inherit',\n },\n 'li code': {\n fontSize: '1.1rem',\n },\n blockquote: {\n color: 'inherit',\n borderLeftColor: 'inherit',\n opacity: '0.8',\n fontSize: '1.1rem',\n },\n }\n}\n\ndelete Wordpress2016.googleFonts\n\nconst typography = new Typography(Wordpress2016)\n\n// Hot reload typography in development.\nif (process.env.NODE_ENV !== `production`) {\n typography.injectStyles()\n}\n\nexport default typography\nexport const rhythm = typography.rhythm\nexport const scale = typography.scale\n","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\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 _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 _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\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, _HelmetConstants.TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.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 innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, _HelmetConstants.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[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.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 return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\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(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.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 }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\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([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\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.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\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 updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\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 if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\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(_HelmetConstants.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(_HelmetConstants.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\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(_HelmetConstants.HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.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 === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === _HelmetConstants.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(_HelmetConstants.HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\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 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 + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + _HelmetConstants.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 === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.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 var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + _HelmetConstants.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 return Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.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 return Object.keys(props).reduce(function (obj, key) {\n obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [_react2.default.createElement(_HelmetConstants.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[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case _HelmetConstants.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\n case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n case _HelmetConstants.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\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(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport Helmet from 'react-helmet'\nimport { useStaticQuery, graphql } from 'gatsby'\n\nfunction SEO({\n image,\n slug,\n description,\n lang = 'zh-Hans',\n meta,\n keywords,\n title,\n}) {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n title\n author\n description\n siteUrl\n social {\n twitter\n }\n }\n }\n }\n `\n )\n\n const siteMetadata = site.siteMetadata\n const metaDescription = description || siteMetadata.description\n const metaImage = image ? `${siteMetadata.siteUrl}/${image}` : null\n const url = `${siteMetadata.siteUrl}${slug}`\n\n return (\n 0\n ? {\n name: `keywords`,\n content: keywords.join(`, `),\n }\n : []\n )\n .concat(meta)}\n />\n )\n}\n\nSEO.defaultProps = {\n meta: [],\n keywords: [],\n description: ``,\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.arrayOf(PropTypes.object),\n keywords: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string.isRequired,\n}\n\nexport default SEO\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/exploring-npm/index.html b/exploring-npm/index.html new file mode 100644 index 0000000..b8e774b --- /dev/null +++ b/exploring-npm/index.html @@ -0,0 +1,283 @@ +exploring npm | Cube Blog

Cube Blog

exploring npm

July 05, 2019 • ☕️☕️ 11 min read

npm 是目前默认的 Node 包管理工具,在 javaScript 项目开发中得到了广泛使用。

+

node_modules

+

npm 使用 npm install 命令安装模块到node_modules 目录下。

+
npm install <packageName>
+
+

node_modules 路径查找机制:默认情况下,模块查找对应的依赖包时,nodejs 会尝试从当前模块所在的目录开始,尝试在它的 node_modules 文件夹里加载相应的模块,如果没有找到,那么就再向上一级目录移动,直到到达全局安装路径中的 node_modules 为止。

+
+

npm 5.x 安装组织 node_modules

+
    +
  • +

    扁平化安装

    +

    按照 package.json 里依赖的顺序依次解析,遇到新的包就将其安装在第一级目录,后续安装时如果遇到一级目录已经存在的包,会按照约定版本进行判断。如果符合版本约定就会忽略,否则会将其依次安装在依赖包的目录下。

    +
  • +
  • +

    增加了 package-lock.json 文件

    +

    用以精确描述 node_modules 目录下所有的包的树状依赖结构,每个包的版本号都是完全精确的。

    +
    "glob": {
    +"version": "7.1.3",
    +"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
    +"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
    +"requires": {
    +  "fs.realpath": "^1.0.0",
    +  "inflight": "^1.0.4",
    +  "inherits": "2",
    +  "minimatch": "^3.0.4",
    +  "once": "^1.3.0",
    +  "path-is-absolute": "^1.0.0"
    +}
    +}
    +

    glob 为例,package-lock.json 主要由以下几个字段进行描述:

    +
      +
    • version 包唯一的版本号
    • +
    • resolved 安装源
    • +
    • integrity hash 值,表明包的完整性,用来验证包是否已经失效
    • +
    • dev 如果为true,则此依赖关系仅是顶级模块的开发依赖关系或者是一个的传递依赖关系
    • +
    • requires 该依赖包所需要的依赖项
    • +
    +
  • +
+

依赖包

+

依赖包的分类

+
    +
  • +

    dependencies 业务依赖

    +

    依赖项属于线上的一部分,例如 reactmaterial-ui 等等,供生产环境使用。

    +
    npm [install|-i] <packageName> [--save|-S]
    +
    +

    npm 5.x 之后,直接执行 npm i <packageName> 即可

    +
    +
  • +
  • +

    devDependencies 开发依赖

    +

    依赖项只在项目开发时需要,不属于线上代码的一部分,例如 webpackbabel 等等

    +
    npm [install|-i] <packageName> [--save-dev|-D]
    +
  • +
  • +

    peerDependencies 同伴依赖

    +

    提示宿主环境安装插件在 peerDependencies 中指定依赖的包。

    +
  • +
  • +

    bundledDependencies / bundleDependencies 打包依赖

    +

    这种依赖跟 npm pack 打包命令相关,必须先在前两种依赖中声明。

    +
  • +
  • optionalDependencies 可选依赖
  • +
+

依赖包的版本号

+

采用 semver 规范作为依赖版本管理方案,格式一般为:主版本号.次版本号.修订号(x.y.z)

+
    +
  • +

    主版本号 major version

    +

    可能是颠覆性的改动,导致可能会与低版本的 API 或者用法不兼容。

    +
  • +
  • +

    次版本号 minor version

    +

    改动通常兼容同一个大版本内的 API 和用法。

    +
    +

    如果大版本号是 0,表示处于开发初始阶段,一切都可能被改变。

    +
    +
  • +
  • +

    修订号 patch

    +

    一般用于修复 bug 和细微的变更,通常要保持向前兼容。

    +
  • +
+

常见的版本格式:

+
    +
  • ”1.2.3” 精确版本号
  • +
  • “^1.2.3” ^ 能够兼容除了最左侧非 0 版本号之外的其他变化
  • +
  • “~1.2.3” ~ 如果列出了次版本号,那么只兼容补丁的修改;如果没有列出次版本号,那么兼容 2、3 位的修改
  • +
  • +

    “1.x”、“1.X”、“1.”、“1”、“\

    +
    +

    ”*” 、“x” 或者 (空) 表示可以匹配任何版本。

    +

    “1.x”, “1.*” 和 “1” 表示匹配主版本号为 “1” 的所有版本,因此等价于 ”>= 1.0.0 < 2.0.0”。

    +

    “1.2.x”, “1.2.*” 和 “1.2” 表示匹配版本号以 “1.2” 开头的所有版本,因此等价于 ”>= 1.2.0 < 1.3.0”。

    +
    +
  • +
  • +

    带预发布关键词的版本号

    +
    +

    alpha(α):预览版,或者叫内部测试版;一般不向外部发布,会有很多bug;一般只有测试人员使用。 beta(β):测试版,或者叫公开测试版;这个阶段的版本会一直加入新的功能;在alpha版之后推出。 rc(release candidate):最终测试版本;可能成为最终产品的候选版本,如果未出现问题则可发布成为正式版本。

    +
    +
  • +
+

依赖包的版本管理

+
# 更新某模块主版本下的最新版本
+npm install <packageName>
+
+# 更新到指定版本号
+npm install <packageName@x.x.x>
+
+# 卸载某个模块
+npm uninstall <packageName>
+
+

升级和卸载依赖包时,尽量通过命令实现,避免手动修改 package.json 中的版本号,一定不要手动修改 package-lock.json

+
+

npm scripts 脚本

+

npm 可以在 package.json 文件中,使用 scripts 字段定义脚本命令。

+
{
+  "scripts": {
+    "build": "node build.js"
+  }
+}
+

基本原理

+

每次执行 npm run 时,会自动新建一个 Shell,在这个 Shell 中执行指定的脚本命令。

+
+

npm run 新建的 Shell,会将当前目录中的 node_modules/.bin 子目录加入 PATH 变量中,执行结束后再将 PATH 变量恢复原样。

+
+

因此,当前目录的 node_modules/.bin 子目录中的所有脚本,都可以直接使用脚本名调用,而不需要加上路径。

+
+

PATH环境变量,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。

+
+

传参

+

除了第一个可执行的命令,以空格分割的任何字符串(除了一些 shell 的语法)都是参数,并且都能通过process.argv 属性访问。

+
+

process.argv属性返回一个数组,这个数组包含了启动node进程时的命令行参数。第一个元素为启动node 进程的可执行文件的绝对路径名process.execPath,第二个元素为当前执行的JavaScript文件路径。剩余的元素为其他命令行参数。

+
+
npm run serve --params     # 参数params将转化成process.env.npm_config_params = true
+npm run serve --params=123 # 参数params将转化成process.env.npm_config_params = 123
+npm run serve -params      # 等同于--params参数
+
+npm run serve -- --params  # 将--params参数添加到process.env.argv数组中
+npm run serve params       # 将params参数添加到process.env.argv数组中
+npm run serve -- params    # 将params参数添加到process.env.argv数组中
+

通配符

+

npm 脚本即 Shell 脚本,所以可以使用 Shell 通配符。

+
"lint": "jshint *.js"
+"lint": "jshint **/*.js"
+

* 表示任意文件名,** 表示任意一层子目录。

+

多命令运行

+

串行执行

+
npm run script1 && npm run script2
+
+

只要一个命令执行失败,则整个脚本终止。

+
+

并行执行

+

多个任务可以同时的平行执行,使用 & 符号来连接。

+
npm run script1 & npm run script2
+

env 环境变量

+

执行 npm scripts 时,npm 会设置一些特殊的 env 环境变量。package.json 中的所有字段都会被设置为以 npm_package_ 开头的环境变量。例如使用 process.env.npm_package_name 可以获取到 package.jsonname 字段的值。process.env.npm_lifecycle_event 表示当前正在运行的脚本名称。

+
+

这些环境变量都只能在 npm run 的脚本执行环境内拿到。

+
+

指令钩子

+

npm 脚本有 prepost 两个钩子。例如:build 脚本命令的钩子就是 prebuildpostbuild

+

在执行 npm run build 命令时,就会依次执行 npm run prebuildnpm run buildnpm run postbuild

+

可以结合 process.env.npm_lifecycle_event 一起使用。

+

npm 配置项

+

优先级

+
    +
  1. Command Line
  2. +
  3. env 环境变量
  4. +
  5. +

    npmrc 文件

    +
      +
    • 项目级
    • +
    +

    只作用在本项目下,其他项目中不生效。

    +
      +
    • 用户级
    • +
    +

    ~/.npmrc 使用 npm config get userconfig 可以查看存放的路径。

    +
      +
    • 全局级
    • +
    +

    $PREFIX/etc/npmrc 使用 npm config get globalconfig 可以查看存放的路径。

    +
  6. +
+

npm config 指令

+
    +
  • set
  • +
+
# 如果 key 不存在,那么会将新增到配置中;如果省略 value,那么会将 key 设置为 true
+npm config set <key> <value> [-g|--global]
+
+# 指定 npm 包来源
+npm config set registry <url>
+
    +
  • get
  • +
+
npm config get <key>
+
    +
  • delete
  • +
+
npm config delete <key> # 不能删除项目级的 .npmrc 文件里的配置项
+
    +
  • list
  • +
+
npm config list [-l|--json] # 查看所有配置项
+
    +
  • edit
  • +
+
npm config edit [-g|--global] # 编辑器中打开配置文件
+

更多默认配置参见npm config

+

npm 工程管理

+

项目版本号管理

+

package.json 中的 version 字段代表的是该项目的版本号。

+

尽量使用 npm version 指令来自动更新 version

+
npm version (v)1.2.3  # 显示设置版本号为 1.2.3 
+npm version major  # 大版本号加 1,其余版本号归 0
+npm version minor  # 小版本号加 1,修订号归 0
+npm version patch  # 修订号加 1
+

还可以创建预发布版本:

+
# 当前版本号为 1.2.3
+npm version prepatch  # 版本号变为 1.2.4-0,也就是 1.2.4 版本的第一个预发布版本
+npm version preminor  # 版本号变为 1.3.0-0,也就是 1.3.0 版本的第一个预发布版本
+npm version premajor  # 版本号变为 2.0.0-0,也就是 2.0.0 版本的第一个预发布版本
+npm version prerelease  # 版本号变为 2.0.0-1,也就是使预发布版本号加一
+

在 git 环境中,执行 npm version 修改版本号之后,还会默认执行 git add -> git commit -> git tag 操作

+

其 commit message 默认是自动修改完成的版本号,可以通过添加 -m/—message 选项来自定义 commit message:

+
npm version minor -m "feat(version): upgrade to %s for reasons" # %s 会自动替换为新版本号
+

如果不想在 git 仓库中打上版本 tag,可以在指令中使用 --no-git-tag-version

+

如果想默认不影响 git 仓库,可以在 npm 设置中禁止:

+
npm config set git-tag-version false # 不自动打 tag
+npm config set commit-hooks false    # 不自动 commit
+

域级包管理

+

package.json 中的依赖有两种形式:

+
"devDependencies": {
+  "@commitlint/cli": "^7.2.1",
+  "commitizen": "^3.0.4"
+}
+

@ 开头的包名,是一个域级包,作用是将一些 packages 集中在一个命名空间下,一方面可以集中管理,另一方面也可以防止与其他依赖包产生命名冲突。

+

域级包的发布

+
    +
  • 在项目的 package.json 的 name 属性中添加 scope 相关的声明,可以通过指令添加:
  • +
+
npm init --scope=scopeName -y
+

package.json 变为:

+
{
+  "name": "@scopeName/package"
+}
+
    +
  • 由于用 @ 声明了该包,npm 会将其认定为私有包,而在 npm 上托管私有包需要收费,所以可以在发布时添加--access=public 参数告知 npm 这不是私有包。
  • +
+
npm publish --access=public
+
+

安装域级包时需要按照域级包全名来安装。

+
+

其它

+

模块全局化

+

假设你在开发一个模块 A,同时需要在另外一个项目 B 中测试它,当然你可以将该模块的代码拷贝到需要使用它的项目中,但这也不是理想的方法,可以在模块 A 的目录下执行:

+
npm link
+

npm link 命令通过链接目录和可执行文件,实现任意位置的npm包命令的全局可执行。

+

npm link 主要做了两件事:

+
    +
  1. 为目标 npm 模块创建软链接,将其链接到全局 node 模块安装路径 /usr/local/lib/node_modules/
  2. +
  3. 为目标 npm模块的可执行 bin 文件创建软链接,将其链接到全局 node 命令安装路径 /usr/local/bin/
  4. +
+

依赖锁定

+

npm 默认安装模块时,会通过脱字符 ^ 来限定所安装模块的主版本号。可以配置 npm 通过波浪符 ~ 来限定安装模块版本号:

+
npm config set save-prefix="~"
+

也可以配置仅安装精确版本号的模块

+
npm config set save-exact true
+

参考

+

这个博客用于记录我个人所读所思所想,前端开发相关。

\ No newline at end of file diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000..6b649a2 Binary files /dev/null and b/favicon-32x32.png differ diff --git a/static/favicon.ico b/favicon.ico similarity index 100% rename from static/favicon.ico rename to favicon.ico diff --git a/fd4eb4c15ee96cda391cb869122a6b3e/terms-grid-area-9036ea4e-c8bf-41e9-9681-fb9a8e04c11b.svg b/fd4eb4c15ee96cda391cb869122a6b3e/terms-grid-area-9036ea4e-c8bf-41e9-9681-fb9a8e04c11b.svg new file mode 100755 index 0000000..7249ca3 --- /dev/null +++ b/fd4eb4c15ee96cda391cb869122a6b3e/terms-grid-area-9036ea4e-c8bf-41e9-9681-fb9a8e04c11b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/flex-box/index.html b/flex-box/index.html new file mode 100644 index 0000000..e05aaf9 --- /dev/null +++ b/flex-box/index.html @@ -0,0 +1,84 @@ +Flexbox 布局 | Cube Blog

Cube Blog

Flexbox 布局

May 16, 2019 • ☕️ 2 min read

Flex 是 Flexible Box 的缩写,意为弹性布局。Flex 布局适用于应用程序的组件和小规模布局。

+

基本概念

+

采用 Flex 布局的元素称为 flex 容器(flex container),而其子元素则称为 flex 项目(flex items)。

+ +

flex box

+

容器中有两根轴,分别是主轴(main axis)和交叉轴(cross axis)。

+

项目默认沿着主轴排列,一个项目占据的主轴空间为 main size,占据的交叉轴空间为 cross size。

+

容器属性

+
    +
  • +

    flex-direction 决定主轴的方向

    +
      +
    • row(默认值):水平,从左到右
    • +
    • row-reverse:水平,从右往左
    • +
    • column:垂直,从上到下
    • +
    • column-reverse:垂直,从下往上
    • +
    +
  • +
  • +

    flex-wrap 决定当一条轴线排不下时,如何换行

    +
      +
    • nowrap:不换行
    • +
    • wrap:换行,顺序从上到下
    • +
    • wrap-reverse:换行,从下往上(即第一行在下) +wrap-reverse-demo
    • +
    +
  • +
  • +

    flex-flow 为 flex-direction 和 flex-wrap 的合并形式

    +
    flex-flow: <'flex-direction> || <'flex-wrap'>
    +

    默认值是 row nowrap

    +
  • +
  • +

    justify-content 定义项目在主轴上的对齐方式

    +
      +
    • flex-start:左对齐
    • +
    • flex-end:右对齐
    • +
    • center:居中
    • +
    • space-between:两端对齐,flex-item 之间的间距相等
    • +
    • space-around:每个 flex-item 两侧间隔相等,则项目之间的间隔是与边框间隔的两倍。
    • +
    +
  • +
  • +

    align-items 定义项目在交叉轴上如何对齐

    +
      +
    • flex-start:交叉轴起点对齐
    • +
    • flex-end:交叉轴终点对齐
    • +
    • center:交叉轴中点对齐
    • +
    • baseline:项目的第一行文字的基线对齐
    • +
    • stretch(默认值):项目将拉伸撑满整个容器
    • +
    +
  • +
  • +

    align-content 定义多根轴线的对齐方式

    +
      +
    • flex-start:与交叉轴起点对齐
    • +
    • flex-end:与交叉轴终点对齐
    • +
    • center:与交叉轴的中点对齐
    • +
    • space-between:与交叉轴两端对齐,轴线之间间隔平均分布
    • +
    • space-around:每根轴线两侧的间隔都相等
    • +
    • stretch(默认值):轴线占满整个交叉轴 +align-content-demo
    • +
    +
  • +
+

项目属性

+
    +
  • order 定义项目的排列顺序。数值越小越靠前,默认是0
  • +
  • flex-grow 定义项目的放大比例,默认是0
  • +
  • flex-shrink 定义项目的缩小比例,默认为1,即如果剩余空间不足,该项目将缩小
  • +
  • flex-basis 定义项目占据的主轴空间(main size),浏览器根据该属性,计算主轴是否有多余空间。默认值是 auto
  • +
  • flex 是 [<‘flex-grow’><‘flex-shrink’><‘flex-basis’>] 的简写。默认值是 0 1 auto。快捷值:auto(1 1 auto)和 none(0 0 auto)
  • +
  • align-self 允许单个项目有不同的对齐方式,可以覆盖 align-items 属性,默认值是 auto,表示继承父元素的 align-items 属性,如果没有父元素则等同于 stretch
  • +
+
+

参考示例: +骰子的布局

+

参考来源: +A Complete Guide to Flexbox +[阮一峰 Flex 布局教程:语法篇](


这个博客用于记录我个人所读所思所想,前端开发相关。

\ No newline at end of file diff --git a/framework-b5b229d58c3c710d5429.js b/framework-b5b229d58c3c710d5429.js new file mode 100644 index 0000000..dbf38eb --- /dev/null +++ b/framework-b5b229d58c3c710d5429.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{"16Al":function(e,t,n){"use strict";var r=n("WbBG");function l(){}function i(){}i.resetWarningCache=l,e.exports=function(){function e(e,t,n,l,i,a){if(a!==r){var o=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:l};return n.PropTypes=n,n}},"17x9":function(e,t,n){e.exports=n("16Al")()},JhMR:function(e,t,n){"use strict";e.exports=n("KqkS")},KqkS:function(e,t,n){"use strict";var r,l,i,a,o;if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,s=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(s,0),n}},f=Date.now();t.unstable_now=function(){return Date.now()-f},r=function(e){null!==u?setTimeout(r,0,e):(u=e,setTimeout(s,0))},l=function(e,t){c=setTimeout(e,t)},i=function(){clearTimeout(c)},a=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var d=window.performance,p=window.Date,m=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var v=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof v&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof d&&"function"==typeof d.now)t.unstable_now=function(){return d.now()};else{var g=p.now();t.unstable_now=function(){return p.now()-g}}var y=!1,b=null,w=-1,k=5,x=0;a=function(){return t.unstable_now()>=x},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,l=e[r];if(!(void 0!==l&&0P(a,n))void 0!==u&&0>P(u,a)?(e[r]=u,e[o]=n,r=o):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==u&&0>P(u,n)))break e;e[r]=u,e[o]=n,r=o}}}return t}return null}function P(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var N=[],z=[],O=1,R=null,M=3,I=!1,F=!1,D=!1;function L(e){for(var t=C(z);null!==t;){if(null===t.callback)_(z);else{if(!(t.startTime<=e))break;_(z),t.sortIndex=t.expirationTime,S(N,t)}t=C(z)}}function A(e){if(D=!1,L(e),!F)if(null!==C(N))F=!0,r(U);else{var t=C(z);null!==t&&l(A,t.startTime-e)}}function U(e,n){F=!1,D&&(D=!1,i()),I=!0;var r=M;try{for(L(n),R=C(N);null!==R&&(!(R.expirationTime>n)||e&&!a());){var o=R.callback;if(null!==o){R.callback=null,M=R.priorityLevel;var u=o(R.expirationTime<=n);n=t.unstable_now(),"function"==typeof u?R.callback=u:R===C(N)&&_(N),L(n)}else _(N);R=C(N)}if(null!==R)var c=!0;else{var s=C(z);null!==s&&l(A,s.startTime-n),c=!1}return c}finally{R=null,M=r,I=!1}}function V(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var W=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){F||I||(F=!0,r(U))},t.unstable_getCurrentPriorityLevel=function(){return M},t.unstable_getFirstCallbackNode=function(){return C(N)},t.unstable_next=function(e){switch(M){case 1:case 2:case 3:var t=3;break;default:t=M}var n=M;M=t;try{return e()}finally{M=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=W,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=M;M=e;try{return t()}finally{M=n}},t.unstable_scheduleCallback=function(e,n,a){var o=t.unstable_now();if("object"==typeof a&&null!==a){var u=a.delay;u="number"==typeof u&&0o?(e.sortIndex=u,S(z,e),null===C(N)&&e===C(z)&&(D?i():D=!0,l(A,u-o))):(e.sortIndex=a,S(N,e),F||I||(F=!0,r(U))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();L(e);var n=C(N);return n!==R&&null!==R&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTimez.length&&z.push(e)}function M(e,t,n){return null==e?0:function e(t,n,r,l){var o=typeof t;"undefined"!==o&&"boolean"!==o||(t=null);var u=!1;if(null===t)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(l,t,""===n?"."+I(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c