From e4125a6e0f954b6aef5207f6b651cf7d32a134c3 Mon Sep 17 00:00:00 2001 From: Dave Cohen Date: Sat, 14 Sep 2024 14:59:01 -0500 Subject: [PATCH] Updates --- 10-issues-songwriters-face/index.html | 8 ++++---- 2020-01-27-random-music-generators-news/index.html | 8 ++++---- 2020-decade-in-review/index.html | 8 ++++---- 2021-01-30-random-music-generators-news/index.html | 8 ++++---- 2022-12-05-random-music-generators-news/index.html | 8 ++++---- 404.html | 6 +++--- 404/index.html | 6 +++--- 5-dysfunctions-of-a-band/index.html | 8 ++++---- about-songmind-studios/index.html | 8 ++++---- about/index.html | 8 ++++---- ...1380cd8916e998c4f.js => app-dd8e35d448b2c1e30855.js | 6 +++--- ...ENSE.txt => app-dd8e35d448b2c1e30855.js.LICENSE.txt | 0 ...16e998c4f.js.map => app-dd8e35d448b2c1e30855.js.map | 2 +- building-my-second-brain/index.html | 8 ++++---- catching-handling-errors-promise-chains/index.html | 8 ++++---- chunk-map.json | 2 +- circular-dependencies-bug/index.html | 8 ++++---- code-style-guide/index.html | 8 ++++---- comparing-javascript-test-runners/index.html | 8 ++++---- ...ponent---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js | 4 ++-- ...nt---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js.map | 1 + ...nt---src-pages-index-js-d116eb3d65a566d47ccb.js.map | 1 - ...---src-pages-music-index-js-8f517bf401dd294627ba.js | 2 ++ ...rc-pages-music-index-js-8f517bf401dd294627ba.js.map | 1 + ...---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js | 2 -- ...rc-pages-music-index-js-add75c0a2e9ea8a8fdcf.js.map | 1 - ...---src-pages-other-index-js-517d2c2bc5af45a2a014.js | 4 ++-- ...rc-pages-other-index-js-517d2c2bc5af45a2a014.js.map | 1 + ...rc-pages-other-index-js-ec50fd754f1c3d92044d.js.map | 1 - ...src-pages-tech-index-js-1cd3d8506dd6787e94dc.js.map | 1 - ...t---src-pages-tech-index-js-47ee51eff1735d471a56.js | 4 ++-- ...src-pages-tech-index-js-47ee51eff1735d471a56.js.map | 1 + contact/index.html | 6 +++--- .../index.html | 8 ++++---- custom-type-checking-isnan/index.html | 8 ++++---- debugging-strategies-checklist/index.html | 8 ++++---- design-patterns-curriculum/index.html | 8 ++++---- design-patterns-intro/index.html | 8 ++++---- git-commit-format-squash/index.html | 8 ++++---- guide-to-practicing-overcoming-plateaus/index.html | 8 ++++---- hash-tables-js/index.html | 8 ++++---- honing-strengths-with-a-student-evaluation/index.html | 8 ++++---- how-to-squash-commits/index.html | 8 ++++---- index.html | 6 +++--- intro-to-js-frameworks01/index.html | 8 ++++---- karabiner-ts-multi-profile/index.html | 8 ++++---- love-hate-immer-js/index.html | 8 ++++---- marketable-programming-skills/index.html | 8 ++++---- meta-ideas-generating-creative-content/index.html | 8 ++++---- multimodal-learning-unleashing-human-memory/index.html | 8 ++++---- music/discography/index.html | 6 +++--- music/index.html | 6 +++--- music/teaching-resources/index.html | 8 ++++---- now-attending-fullstack/index.html | 8 ++++---- offline-plugin-app-shell-fallback/index.html | 4 ++-- organizing-creativity-3-step-process/index.html | 8 ++++---- other/index.html | 6 +++--- page-data/app-data.json | 2 +- prepare-for-initial-screens/index.html | 8 ++++---- preparing-demo-for-studio/index.html | 8 ++++---- programming-with-more-ease/index.html | 8 ++++---- python-classes-guess-the-number/index.html | 8 ++++---- reading-list/index.html | 8 ++++---- recruiters-and-junior-devs/index.html | 8 ++++---- recursive-filter-function/index.html | 8 ++++---- reflections-coding-bootcamp/index.html | 8 ++++---- rss.xml | 2 +- songwriting-and-serendipity/index.html | 8 ++++---- songwriting-simplicity-complexity/index.html | 8 ++++---- songwriting-snippet-challenge/index.html | 8 ++++---- ...c03c35250d48.css => styles.42609693aaa912e24b07.css | 2 +- sw.js | 10 +++++----- tags/ava/index.html | 4 ++-- tags/bands/index.html | 4 ++-- tags/career/index.html | 4 ++-- tags/coding-bootcamps/index.html | 4 ++-- tags/composition/index.html | 4 ++-- tags/computer-science/index.html | 4 ++-- tags/creativity/index.html | 4 ++-- tags/design-patterns/index.html | 4 ++-- tags/electron/index.html | 4 ++-- tags/ergonomics/index.html | 4 ++-- tags/gatsbyjs/index.html | 4 ++-- tags/git/index.html | 4 ++-- tags/immerjs/index.html | 4 ++-- tags/immutablejs/index.html | 4 ++-- tags/index.html | 6 +++--- tags/javascript/index.html | 4 ++-- tags/jest/index.html | 4 ++-- tags/mental-health/index.html | 4 ++-- tags/mocha/index.html | 4 ++-- tags/music-education/index.html | 4 ++-- tags/node/index.html | 4 ++-- tags/oop/index.html | 4 ++-- tags/open-source/index.html | 4 ++-- tags/practicing/index.html | 4 ++-- tags/productivity/index.html | 4 ++-- tags/promotion/index.html | 4 ++-- tags/python/index.html | 4 ++-- tags/random-music-generators/index.html | 4 ++-- tags/react/index.html | 4 ++-- tags/recording/index.html | 4 ++-- tags/redux/index.html | 4 ++-- tags/sinon/index.html | 4 ++-- tags/songwriting/index.html | 4 ++-- tags/tech-talk/index.html | 4 ++-- tags/test-runners/index.html | 4 ++-- tags/testing/index.html | 4 ++-- tags/type-script/index.html | 4 ++-- tags/typescript/index.html | 4 ++-- tech-career-resources/index.html | 8 ++++---- tech-talk-improving-capstone-project/index.html | 8 ++++---- tech/index.html | 6 +++--- tech/projects/index.html | 8 ++++---- .../index.html | 8 ++++---- thinkertoys-generate-art-and-business-ideas/index.html | 8 ++++---- type-check-jsdocs-typescript/index.html | 8 ++++---- using-question-prompter/index.html | 8 ++++---- ...4a1f3.js => webpack-runtime-f8fcd4bc74519b65168a.js | 4 ++-- ....map => webpack-runtime-f8fcd4bc74519b65168a.js.map | 2 +- webpack.stats.json | 2 +- website-makeover-gatsby/index.html | 8 ++++---- 122 files changed, 336 insertions(+), 336 deletions(-) rename app-eac1380cd8916e998c4f.js => app-dd8e35d448b2c1e30855.js (94%) rename app-eac1380cd8916e998c4f.js.LICENSE.txt => app-dd8e35d448b2c1e30855.js.LICENSE.txt (100%) rename app-eac1380cd8916e998c4f.js.map => app-dd8e35d448b2c1e30855.js.map (99%) rename component---src-pages-index-js-d116eb3d65a566d47ccb.js => component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js (53%) create mode 100644 component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js.map delete mode 100644 component---src-pages-index-js-d116eb3d65a566d47ccb.js.map create mode 100644 component---src-pages-music-index-js-8f517bf401dd294627ba.js create mode 100644 component---src-pages-music-index-js-8f517bf401dd294627ba.js.map delete mode 100644 component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js delete mode 100644 component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js.map rename component---src-pages-other-index-js-ec50fd754f1c3d92044d.js => component---src-pages-other-index-js-517d2c2bc5af45a2a014.js (65%) create mode 100644 component---src-pages-other-index-js-517d2c2bc5af45a2a014.js.map delete mode 100644 component---src-pages-other-index-js-ec50fd754f1c3d92044d.js.map delete mode 100644 component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js.map rename component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js => component---src-pages-tech-index-js-47ee51eff1735d471a56.js (65%) create mode 100644 component---src-pages-tech-index-js-47ee51eff1735d471a56.js.map rename styles.121e72dfc03c35250d48.css => styles.42609693aaa912e24b07.css (99%) rename webpack-runtime-db781169b9b54e74a1f3.js => webpack-runtime-f8fcd4bc74519b65168a.js (92%) rename webpack-runtime-db781169b9b54e74a1f3.js.map => webpack-runtime-f8fcd4bc74519b65168a.js.map (97%) diff --git a/10-issues-songwriters-face/index.html b/10-issues-songwriters-face/index.html index b0e6a3e..a02aeeb 100644 --- a/10-issues-songwriters-face/index.html +++ b/10-issues-songwriters-face/index.html @@ -1,4 +1,4 @@ -10 Issues Songwriters Face | scraggo.com

10 Issues Songwriters Face

It’s common for songwriters to feel overwhelmed when finishing their songs and getting them ready for their audience. There can be tremendous blocks going from inspiration to song completion. Listed below are the top issues I’ve encountered while interviewing songwriters and students of music who write music.

+

10 Issues Songwriters Face

It’s common for songwriters to feel overwhelmed when finishing their songs and getting them ready for their audience. There can be tremendous blocks going from inspiration to song completion. Listed below are the top issues I’ve encountered while interviewing songwriters and students of music who write music.

1. Not knowing “where to go next” with your song.

This is a major problem for many songwriters. They’ll write one or more good sections but get stuck without knowing what to write next. They’ll put the song on the shelf in hopes that they’ll have a fresh perspective and be able to finish the song when and if they come back to it later. Unfortunately, this can take a long time, multiple years, to get that perspective or new inspiration. This problem is a symptom of a greater problem: not properly diagnosing what the song issues are. Diagnosing means getting very specific about what’s not working and disrupting the flow of the song. There’s a great fear in admitting that certain parts are faulty and many songwriters take it personally. Write down exactly what is bothering you about your song. Use your imagination to come up with a “placeholder” section. It’s better to write placeholders and write a note to yourself saying “Rewrite the bridge” or whatever the specific issue is. Often-times, we’ve forgotten the listener when we’re trying to craft something brilliant. I wrote a post a while back about embracing simplicity and making sure your song is focused on a singular theme. My best recommendation is to make a demo of the song after putting in placeholders so you can hear what’s happening in real-time. Keep the listener in mind while doing so.

2. Feeling like your songs aren’t “good” enough so you don’t finish them.

@@ -395,4 +395,4 @@

8. Not having the means to record their music.

9. Not having a live and online promotion strategy.

Depending on what you want to achieve, there are ways to create an intelligent promotional strategy. If you’re just starting out, you probably want to perform and network with musicians. Playing your music at open mics is a great way to get started. Doing a Google search for ‘open mic (your state)’ will give you an idea what open mics are around you. If you have music recorded that you want to share online, I highly recommend Bandcamp over ReverbNation. Soundcloud was a great platform for sharing your music, but is in decline due to strange business practices. If you make a simple business card, you can point people to your websites at your live performances. When you (and possibly your band) are ready for more serious gig opportunities, the promotional strategy gets a little more intense. You’ll want to have an email list, a website, and CDs and merchandise to sell at your shows. Download cards are an excellent option for promoting your single before your full album is released.

10. Having a lack of faith in your abilities to make money with your music.

-

It’s easy to feel crushed under the weight of giants. You might ask “who wants to hear another original singer-songwriter?” I believe that any contribution to original art is valuable. Never belittle your desire to communicate something with your music. Your style is unique and your message will be meaningful to someone. An excellent resource in the existential music crisis department is the book Effortless Mastery. It might just be that you haven’t found your place yet. If your lyrics aren’t coming together, maybe you should team up with a lyricist (consider the story of Elton John). Maybe writing instrumental music for soundtracks could be your thing! Even though it’s getting more competitive for live musicians, if you become exceptional, there’s no way you can’t succeed.

\ No newline at end of file +

It’s easy to feel crushed under the weight of giants. You might ask “who wants to hear another original singer-songwriter?” I believe that any contribution to original art is valuable. Never belittle your desire to communicate something with your music. Your style is unique and your message will be meaningful to someone. An excellent resource in the existential music crisis department is the book Effortless Mastery. It might just be that you haven’t found your place yet. If your lyrics aren’t coming together, maybe you should team up with a lyricist (consider the story of Elton John). Maybe writing instrumental music for soundtracks could be your thing! Even though it’s getting more competitive for live musicians, if you become exceptional, there’s no way you can’t succeed.

\ No newline at end of file diff --git a/2020-01-27-random-music-generators-news/index.html b/2020-01-27-random-music-generators-news/index.html index 6e53fd0..606064d 100644 --- a/2020-01-27-random-music-generators-news/index.html +++ b/2020-01-27-random-music-generators-news/index.html @@ -1,4 +1,4 @@ -Random Music Generators News 2020-01-27 | scraggo.com

Random Music Generators News 2020-01-27

New in 1.1.0

+
\ No newline at end of file +

Random Music Generators

\ No newline at end of file diff --git a/2020-decade-in-review/index.html b/2020-decade-in-review/index.html index e1e9c2d..c6223bb 100644 --- a/2020-decade-in-review/index.html +++ b/2020-decade-in-review/index.html @@ -1,4 +1,4 @@ -2020 Resolutions and Reviewing the Decade | scraggo.com

2020 Resolutions and Reviewing the Decade

I really enjoy reflecting on the past year during the holidays. If I get a chance to do this, I come up with New Years resolutions afterwards. Some years I go through a somewhat involved process of going through my journal entries and coming up with the best realizations.

+

2020 Resolutions and Reviewing the Decade

I really enjoy reflecting on the past year during the holidays. If I get a chance to do this, I come up with New Years resolutions afterwards. Some years I go through a somewhat involved process of going through my journal entries and coming up with the best realizations.

This year, my girlfriend wanted to try Marie Forleo’s recommendation of reviewing the past decade. We went through the exercises together and shared a majority of our writings with each other. During the process I realized that it’s been quite a formative decade!

The 2010s

    @@ -387,4 +387,4 @@

    2020 Resolutions (and beyond)

These exercises are really worth doing

During the process of working on these exercises, it dawned on me just how awesome it would’ve been if I had set up these guideposts for myself in 2010.

-

I can’t recommend doing these exercises enough. Check them out 👉 https://www.marieforleo.com/2019/12/decade-in-review-10-year-plan/

\ No newline at end of file +

I can’t recommend doing these exercises enough. Check them out 👉 https://www.marieforleo.com/2019/12/decade-in-review-10-year-plan/

\ No newline at end of file diff --git a/2021-01-30-random-music-generators-news/index.html b/2021-01-30-random-music-generators-news/index.html index 6436ae4..3378121 100644 --- a/2021-01-30-random-music-generators-news/index.html +++ b/2021-01-30-random-music-generators-news/index.html @@ -1,4 +1,4 @@ -Random Music Generators News 2021-01-30 | scraggo.com

Random Music Generators News 2021-01-30

New in 1.3.1

+
\ No newline at end of file +

Contact me

\ No newline at end of file diff --git a/2022-12-05-random-music-generators-news/index.html b/2022-12-05-random-music-generators-news/index.html index 38315dc..1e38cc7 100644 --- a/2022-12-05-random-music-generators-news/index.html +++ b/2022-12-05-random-music-generators-news/index.html @@ -1,4 +1,4 @@ -Random Music Generators is now hosted on render.com | scraggo.com
\ No newline at end of file +
\ No newline at end of file diff --git a/404.html b/404.html index e8c02a5..dee6cc3 100644 --- a/404.html +++ b/404.html @@ -1,4 +1,4 @@ -Not found | scraggo.com

Not Found

The content you're looking for is not at this url. It may have been moved.

Please visit one of the pages above and contact the site administrator if you still can't find what you're looking for.

\ No newline at end of file +

Not Found

The content you're looking for is not at this url. It may have been moved.

Please visit one of the pages above and contact the site administrator if you still can't find what you're looking for.

\ No newline at end of file diff --git a/404/index.html b/404/index.html index c82cfba..4a9487b 100644 --- a/404/index.html +++ b/404/index.html @@ -1,4 +1,4 @@ -Not found | scraggo.com

Not Found

The content you're looking for is not at this url. It may have been moved.

Please visit one of the pages above and contact the site administrator if you still can't find what you're looking for.

\ No newline at end of file +

Not Found

The content you're looking for is not at this url. It may have been moved.

Please visit one of the pages above and contact the site administrator if you still can't find what you're looking for.

\ No newline at end of file diff --git a/5-dysfunctions-of-a-band/index.html b/5-dysfunctions-of-a-band/index.html index a7d8d07..094b3b5 100644 --- a/5-dysfunctions-of-a-band/index.html +++ b/5-dysfunctions-of-a-band/index.html @@ -1,4 +1,4 @@ -The Five Dysfunctions of a Band | scraggo.com

The Five Dysfunctions of a Band

The Five Dysfunctions of a Team (by Patrick Lencioni) is a highly recommended book for anyone that works with other people. (So - almost everyone!) The five dysfunctions are set up in a hierarchy. The bottom of the pyramid below shows that trust is the foundation and all else moves up from there.

+

The Five Dysfunctions of a Band

The Five Dysfunctions of a Team (by Patrick Lencioni) is a highly recommended book for anyone that works with other people. (So - almost everyone!) The five dysfunctions are set up in a hierarchy. The bottom of the pyramid below shows that trust is the foundation and all else moves up from there.

five-dysfunctions-pyramid

The book opens with a story that brings the main five principles / dysfunctions to life. At first, the principles may seem like trite common sense, but after some exploration, you’ll be able to see how time and time again teams fail because they haven’t mastered these time-honored truths.

The wisdom in this book can be applied to any relationship: with yourself, significant other, family, etc. My purpose here is to demonstrate how the principles in this book apply to bands by sharing some of my experiences. (Later, I’ll apply them to the teacher-student relationship in music education.)

@@ -429,4 +429,4 @@

Dysfunction 5: Lack of Results and Ego

  • The lead guitarist dissed one of the other members while talking to a fan in the audience.
  • The lead singer chose 3 songs (which he liked) that were inappropriate for the dance party we were playing.
  • -

    Playing music with others is an experience without match. You can learn a lot by being in a band, even if the teamwork is sub-par. Most of us have dreams we long to achieve and we have to temper that with the good of the band. If you can keep your ego in check, it will lead to more satisfying musical experiences. Cheers to improving your relationships with your current and future band members. Happy playing!

    \ No newline at end of file +

    Playing music with others is an experience without match. You can learn a lot by being in a band, even if the teamwork is sub-par. Most of us have dreams we long to achieve and we have to temper that with the good of the band. If you can keep your ego in check, it will lead to more satisfying musical experiences. Cheers to improving your relationships with your current and future band members. Happy playing!

    \ No newline at end of file diff --git a/about-songmind-studios/index.html b/about-songmind-studios/index.html index a6e105f..7cae14c 100644 --- a/about-songmind-studios/index.html +++ b/about-songmind-studios/index.html @@ -1,4 +1,4 @@ -About Songmind Studios | scraggo.com

    About Songmind Studios

    In 2016, I decided to start my own brand of music education. I took the role of music coach, agent, and collaborator. The student and I would write and record music together to integrate learning and creativity in a holistic way.

    +

    About Songmind Studios

    In 2016, I decided to start my own brand of music education. I took the role of music coach, agent, and collaborator. The student and I would write and record music together to integrate learning and creativity in a holistic way.

    While I’ve suspended these services for the foreseeable future, I’m posting are the core concepts and aims of Songmind Studios. I’ll eventually make all my teaching resources available on this site.

    Why I created SongMind Studios

    I’ve met so many people that have been unable to finish their songs or want to be much further along in their guitar and general musical abilities. They’ve tried taking e-courses, watching free videos, and studying with teachers that don’t seem to help. What I find sets great programs and teachers apart is their ability to help students learn to generate and refine spontaneously created music.

    @@ -469,4 +469,4 @@

    Discover even more about yourself in an audition unlike any you’ve ever ha Step 4: Performance - You perform a piece of music that demonstrates your proficiency on your instrument.
    Step 5: Studio Test - You are given the task of laying down a rhythm and lead part in a studio recording setting.
    Step 6: Assignment - You will be given the task of completing a surprise assignment in 48 hours or less

    -

    Many have found the insights gained from the insight audition alone to be a transformative musical experience.

    \ No newline at end of file +

    Many have found the insights gained from the insight audition alone to be a transformative musical experience.

    \ No newline at end of file diff --git a/about/index.html b/about/index.html index b212167..8c26a54 100644 --- a/about/index.html +++ b/about/index.html @@ -1,4 +1,4 @@ -About | scraggo.com

    About Dave Cohen

    +

    About Dave Cohen

    I'm a programmer, musician, writer, and educator. I'm fascinated with technology and its intersection with the creative process.

    Software Engineering

    I'm a full-stack developer who specializes in JavaScript, TypeScript, Node, and React. I enjoy building applications with a focus on great user experience - be it web, mobile, command-line, or desktop applications. My favorite technologies include NextJS, Gatsby, Electron, Web Audio APIs (ToneJS), SCSS, Express, Sequelize, and related testing frameworks. I'm also capable in utilizing deployment technologies (Github Actions, Gitlab Pipelines), AWS (Lambda, S3, ECS, etc), Python, and SQL (PostgreSQL).

    @@ -387,4 +387,4 @@

    Music

  • Music Blog
  • Other interests

    -

    I'm interested in psychology, philosophy, productivity, comedy, and more. Find my writings here. Find my reading list here.

    \ No newline at end of file +

    I'm interested in psychology, philosophy, productivity, comedy, and more. Find my writings here. Find my reading list here.

    \ No newline at end of file diff --git a/app-eac1380cd8916e998c4f.js b/app-dd8e35d448b2c1e30855.js similarity index 94% rename from app-eac1380cd8916e998c4f.js rename to app-dd8e35d448b2c1e30855.js index 3611ea2..666ad4e 100644 --- a/app-eac1380cd8916e998c4f.js +++ b/app-dd8e35d448b2c1e30855.js @@ -1,3 +1,3 @@ -/*! For license information please see app-eac1380cd8916e998c4f.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"+ZDr":function(e,t,n){"use strict";var r=n("TqRt");t.__esModule=!0,t.withPrefix=d,t.withAssetPrefix=function(e){return d(e,m())},t.navigateTo=t.replace=t.push=t.navigate=t.default=void 0;var o=r(n("8OQS")),a=r(n("PJYZ")),i=r(n("VbXa")),s=r(n("pVnL")),c=r(n("17x9")),u=r(n("q1tI")),l=n("YwZP"),p=n("LYrO"),h=n("cu4x");t.parsePath=h.parsePath;var f=function(e){return null==e?void 0:e.startsWith("/")};function d(e,t){var n,r;if(void 0===t&&(t=g()),!v(e))return e;if(e.startsWith("./")||e.startsWith("../"))return e;var o=null!==(n=null!==(r=t)&&void 0!==r?r:m())&&void 0!==n?n:"/";return""+((null==o?void 0:o.endsWith("/"))?o.slice(0,-1):o)+(e.startsWith("/")?e:"/"+e)}var m=function(){return""},g=function(){return""},v=function(e){return e&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")};var y=function(e,t){return"number"==typeof e?e:v(e)?f(e)?d(e):function(e,t){return f(e)?e:(0,p.resolve)(e,t)}(e,t):e},b={activeClassName:c.default.string,activeStyle:c.default.object,partiallyActive:c.default.bool};function w(e){return u.default.createElement(l.Location,null,(function(t){var n=t.location;return u.default.createElement(P,(0,s.default)({},e,{_location:n}))}))}var P=function(e){function t(t){var n;(n=e.call(this,t)||this).defaultGetProps=function(e){var t=e.isPartiallyCurrent,r=e.isCurrent;return(n.props.partiallyActive?t:r)?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,s.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,a.default)(n)),n}(0,i.default)(t,e);var n=t.prototype;return n._prefetch=function(){var e=window.location.pathname;this.props._location&&this.props._location.pathname&&(e=this.props._location.pathname);var t=y(this.props.to,e),n=(0,h.parsePath)(t).pathname;e!==n&&___loader.enqueue(n)},n.componentDidUpdate=function(e,t){this.props.to===e.to||this.state.IOSupported||this._prefetch()},n.componentDidMount=function(){this.state.IOSupported||this._prefetch()},n.componentWillUnmount=function(){if(this.io){var e=this.io,t=e.instance,n=e.el;t.unobserve(n),t.disconnect()}},n.handleRef=function(e){var t,n,r,o=this;this.props.innerRef&&this.props.innerRef.hasOwnProperty("current")?this.props.innerRef.current=e:this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(this.io=(t=e,n=function(){o._prefetch()},(r=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(r.unobserve(t),r.disconnect(),n())}))}))).observe(t),{instance:r,el:t}))},n.render=function(){var e=this,t=this.props,n=t.to,r=t.getProps,a=void 0===r?this.defaultGetProps:r,i=t.onClick,c=t.onMouseEnter,p=(t.activeClassName,t.activeStyle,t.innerRef,t.partiallyActive,t.state),f=t.replace,d=t._location,m=(0,o.default)(t,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"]);var g=y(n,d.pathname);return v(g)?u.default.createElement(l.Link,(0,s.default)({to:g,state:p,getProps:a,innerRef:this.handleRef,onMouseEnter:function(e){c&&c(e),___loader.hovering((0,h.parsePath)(g).pathname)},onClick:function(t){if(i&&i(t),!(0!==t.button||e.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)){t.preventDefault();var n=f,r=encodeURI(g)===d.pathname;"boolean"!=typeof f&&r&&(n=!0),window.___navigate(g,{state:p,replace:n})}return!0}},m)):u.default.createElement("a",(0,s.default)({href:g},m))},t}(u.default.Component);P.propTypes=(0,s.default)({},b,{onClick:c.default.func,to:c.default.string.isRequired,replace:c.default.bool,state:c.default.object});var R=function(e,t,n){return console.warn('The "'+e+'" method is now deprecated and will be removed in Gatsby v'+n+'. Please use "'+t+'" instead.')},_=u.default.forwardRef((function(e,t){return u.default.createElement(w,(0,s.default)({innerRef:t},e))}));t.default=_;t.navigate=function(e,t){window.___navigate(y(e,window.location.pathname),t)};var C=function(e){R("push","navigate",3),window.___push(y(e,window.location.pathname))};t.push=C;t.replace=function(e){R("replace","navigate",3),window.___replace(y(e,window.location.pathname))};t.navigateTo=function(e){return R("navigateTo","navigate",3),C(e)}},"/hTd":function(e,t,n){"use strict";t.__esModule=!0,t.SessionStorage=void 0;var r=function(){function e(){}var t=e.prototype;return t.read=function(e,t){var n=this.getStateKey(e,t);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}},t.save=function(e,t,n){var r=this.getStateKey(e,t),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)}},t.getStateKey=function(e,t){var n="@@scroll|"+e.pathname;return null==t?n:n+"|"+t},e}();t.SessionStorage=r},"284h":function(e,t,n){var r=n("cDf5").default;function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}e.exports=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=r(e)&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var c=i?Object.getOwnPropertyDescriptor(e,s):null;c&&(c.get||c.set)?Object.defineProperty(a,s,c):a[s]=e[s]}return a.default=e,n&&n.set(e,a),a},e.exports.__esModule=!0,e.exports.default=e.exports},"30RF":function(e,t,n){"use strict";n.d(t,"d",(function(){return l})),n.d(t,"a",(function(){return p})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return f}));var r=n("LYrO"),o=n("cSJ8"),a=e=>void 0===e?e:"/"===e?"/":"/"===e.charAt(e.length-1)?e.slice(0,-1):e;const i=new Map;let s=[];const c=e=>{const t=decodeURIComponent(e);return Object(o.a)(t,"").split("#")[0].split("?")[0]};function u(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const l=e=>{s=e},p=e=>{const t=d(e),n=s.map(e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}}),o=Object(r.pick)(n,t);return o?a(o.route.originalPath):null},h=e=>{const t=d(e),n=s.map(e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}}),o=Object(r.pick)(n,t);return o?o.params:{}},f=e=>{const t=c(u(e));if(i.has(t))return i.get(t);let n=p(t);return n||(n=d(e)),i.set(t,n),n},d=e=>{let t=c(u(e));return"/index.html"===t&&(t="/"),t=a(t),t}},"3uz+":function(e,t,n){"use strict";t.__esModule=!0,t.useScrollRestoration=function(e){var t=(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(t,e);i.current.scrollTo(0,r||0)}}),[]),{ref:i,onScroll:function(){i.current&&n.save(t,e,i.current.scrollTop)}}};var r=n("Enzk"),o=n("q1tI"),a=n("YwZP")},"5yr3":function(e,t,n){"use strict";const r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map((function(e){e(n)})),(e["*"]||[]).slice().map((function(e){e(t,n)}))}}}();t.a=r},"7hJ6":function(e,t,n){"use strict";t.__esModule=!0,t.useScrollRestoration=t.ScrollContainer=t.ScrollContext=void 0;var r=n("Enzk");t.ScrollContext=r.ScrollHandler;var o=n("hd9s");t.ScrollContainer=o.ScrollContainer;var a=n("3uz+");t.useScrollRestoration=a.useScrollRestoration},"8OQS":function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o},e.exports.__esModule=!0,e.exports.default=e.exports},"94VI":function(e,t){t.polyfill=e=>e},"9Xx/":function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"d",(function(){return u})),n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return i}));var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},u=c.state,l=c.replace,p=void 0!==l&&l;if("number"==typeof t)e.history.go(t);else{u=r({},u,{key:Date.now()+""});try{i||p?e.history.replaceState(u,null,t):e.history.pushState(u,null,t)}catch(f){e.location[p?"replace":"assign"](t)}}a=o(e),i=!0;var h=new Promise((function(e){return s=e}));return n.forEach((function(e){return e({location:a,action:"PUSH"})})),h}}},i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=e.indexOf("?"),n={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""},r=0,o=[n],a=[null];return{get location(){return o[r]},addEventListener:function(e,t){},removeEventListener:function(e,t){},history:{get entries(){return o},get index(){return r},get state(){return a[r]},pushState:function(e,t,n){var i=n.split("?"),s=i[0],c=i[1],u=void 0===c?"":c;r++,o.push({pathname:s,search:u.length?"?"+u:u}),a.push(e)},replaceState:function(e,t,n){var i=n.split("?"),s=i[0],c=i[1],u=void 0===c?"":c;o[r]={pathname:s,search:u},a[r]=e},go:function(e){var t=r+e;t<0||t>a.length-1||(r=t)}}}},s=!("undefined"==typeof window||!window.document||!window.document.createElement),c=a(s?window:i()),u=c.navigate},"9hXx":function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e,t){if(!Array.isArray(t))return"manifest.webmanifest";var n=t.find((function(t){return e.startsWith(t.start_url)}));return n?"manifest_"+n.lang+".webmanifest":"manifest.webmanifest"}},BOnt:function(e,t,n){"use strict";var r=n("TqRt"),o=n("Wbzz"),a=r(n("hqbx"));t.onClientEntry=function(e,t){void 0===t&&(t={}),(0,a.default)(window,t,(function(e){(0,o.navigate)(e)}))}},Enzk:function(e,t,n){"use strict";var r=n("284h"),o=n("TqRt");t.__esModule=!0,t.ScrollHandler=t.ScrollContext=void 0;var a=o(n("PJYZ")),i=o(n("VbXa")),s=r(n("q1tI")),c=o(n("17x9")),u=n("/hTd"),l=s.createContext(new u.SessionStorage);t.ScrollContext=l,l.displayName="GatsbyScrollContext";var p=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o{let{location:n}=e;"undefined"!=typeof woopra&&(t&&t.debug&&console.log("woopra.track() called"),woopra.track())}},IOVJ:function(e,t,n){"use strict";var r=n("dI71"),o=n("q1tI"),a=n.n(o),i=n("emEt"),s=n("xtsi"),c=n("30RF");let u=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){const e={...this.props,params:{...Object(c.c)(this.props.location.pathname),...this.props.pageResources.json.pageContext.__params},pathContext:this.props.pageContext},[t]=Object(s.apiRunner)("replaceComponentRenderer",{props:this.props,loader:i.publicLoader}),n=t||Object(o.createElement)(this.props.pageResources.component,{...e,key:this.props.path||this.props.pageResources.page.path});return Object(s.apiRunner)("wrapPageElement",{element:n,props:e},n,t=>{let{result:n}=t;return{element:n,props:e}}).pop()},t}(a.a.Component);t.a=u},JeVI:function(e){e.exports=JSON.parse("[]")},LYrO:function(e,t,n){"use strict";n.r(t),n.d(t,"startsWith",(function(){return a})),n.d(t,"pick",(function(){return i})),n.d(t,"match",(function(){return s})),n.d(t,"resolve",(function(){return c})),n.d(t,"insertParams",(function(){return u})),n.d(t,"validateRedirect",(function(){return l})),n.d(t,"shallowCompare",(function(){return b}));var r=n("QLaP"),o=n.n(r),a=function(e,t){return e.substr(0,t.length)===t},i=function(e,t){for(var n=void 0,r=void 0,a=t.split("?")[0],i=g(a),s=""===i[0],c=m(e),u=0,l=c.length;ut.score?-1:e.index-t.index}))},g=function(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},v=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r0})))&&n.length>0?"?"+n.join("&"):"")},y=["uri","path"],b=function(e,t){var n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((function(n){return t.hasOwnProperty(n)&&e[n]===t[n]}))}},LeKB:function(e,t,n){e.exports=[{plugin:n("BOnt"),options:{plugins:[]}},{plugin:n("q9nr"),options:{plugins:[],maxWidth:590,linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,sizeByPixelDensity:!1,backgroundColor:"white",quality:50,withWebp:!1,tracedSVG:!1,loading:"lazy",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n("npZl"),options:{plugins:[],name:"Gatsby Starter Blog",short_name:"GatsbyJS",start_url:"/",background_color:"#ffffff",theme_color:"#663399",display:"minimal-ui",icon:"static/assets/img/site/site-icon.png",legacy:!0,theme_color_in_head:!0,cache_busting_mode:"query",crossOrigin:"anonymous",include_favicon:!0,cacheDigest:"28ed9950c5dc197700103c9fd9088ea2"}},{plugin:n("e/UW"),options:{plugins:[]}},{plugin:n("GddB"),options:{plugins:[]}}]},MMVs:function(e,t,n){e.exports=function(){var e=!1;-1!==navigator.appVersion.indexOf("MSIE 10")&&(e=!0);var t,n=[],r="object"==typeof document&&document,o=e?r.documentElement.doScroll("left"):r.documentElement.doScroll,a=r&&(o?/^loaded|^c/:/^loaded|^i|^c/).test(r.readyState);return!a&&r&&r.addEventListener("DOMContentLoaded",t=function(){for(r.removeEventListener("DOMContentLoaded",t),a=1;t=n.shift();)t()}),function(e){a?setTimeout(e,0):n.push(e)}}()},NSX3:function(e,t,n){"use strict";n.r(t);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(e){e.addEventListener("updatefound",()=>{Object(r.apiRunner)("onServiceWorkerUpdateFound",{serviceWorker:e});const t=e.installing;console.log("installingWorker",t),t.addEventListener("statechange",()=>{switch(t.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,Object(r.apiRunner)("onServiceWorkerUpdateReady",{serviceWorker:e}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),Object(r.apiRunner)("onServiceWorkerInstalled",{serviceWorker:e}));break;case"redundant":console.error("The installing service worker became redundant."),Object(r.apiRunner)("onServiceWorkerRedundant",{serviceWorker:e});break;case"activated":Object(r.apiRunner)("onServiceWorkerActive",{serviceWorker:e})}})})})).catch((function(e){console.error("Error during service worker registration:",e)}))},NsGk:function(e,t,n){t.components={"component---cache-caches-gatsby-plugin-offline-app-shell-js":()=>n.e(6).then(n.t.bind(null,"zXQ9",7)),"component---src-pages-404-js":()=>Promise.all([n.e(0),n.e(1),n.e(7)]).then(n.bind(null,"w2l6")),"component---src-pages-about-js":()=>Promise.all([n.e(0),n.e(1),n.e(3),n.e(8)]).then(n.bind(null,"3XHS")),"component---src-pages-contact-js":()=>Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,"Cuy+")),"component---src-pages-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(10)]).then(n.bind(null,"RXBc")),"component---src-pages-music-discography-index-js":()=>Promise.all([n.e(2),n.e(0),n.e(1),n.e(11)]).then(n.bind(null,"PTa2")),"component---src-pages-music-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(12)]).then(n.bind(null,"e0vg")),"component---src-pages-music-teaching-resources-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(3),n.e(13)]).then(n.bind(null,"0l1m")),"component---src-pages-other-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(14)]).then(n.bind(null,"lw47")),"component---src-pages-reading-list-index-js":()=>Promise.all([n.e(2),n.e(0),n.e(1),n.e(3),n.e(15)]).then(n.bind(null,"14IF")),"component---src-pages-tags-js":()=>Promise.all([n.e(0),n.e(1),n.e(16)]).then(n.bind(null,"enK5")),"component---src-pages-tech-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(17)]).then(n.bind(null,"hYRG")),"component---src-pages-tech-projects-index-js":()=>Promise.all([n.e(2),n.e(0),n.e(1),n.e(18)]).then(n.bind(null,"2BA8")),"component---src-templates-blog-post-js":()=>Promise.all([n.e(0),n.e(1),n.e(19)]).then(n.bind(null,"yZlL")),"component---src-templates-tags-js":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,"MN1z"))}},PJYZ:function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},QLaP:function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,s],l=0;(c=new Error(t.replace(/%s/g,(function(){return u[l++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},SksO:function(e,t){function n(t,r){return e.exports=n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,n(t,r)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports},TqRt:function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},UxWs:function(e,t,n){"use strict";n.r(t);var r=n("dI71"),o=n("xtsi"),a=n("q1tI"),i=n.n(a),s=n("i8i4"),c=n.n(s),u=n("YwZP"),l=n("7hJ6"),p=n("MMVs"),h=n.n(p),f=n("Wbzz"),d=n("emEt"),m=n("YLt+"),g=n("5yr3");const v={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"};var y=n("9Xx/"),b=n("+ZDr");const w=new Map,P=new Map;function R(e){let t=w.get(e);return t||(t=P.get(e.toLowerCase())),null!=t&&(window.___replace(t.toPath),!0)}m.forEach(e=>{e.ignoreCase?P.set(e.fromPath,e):w.set(e.fromPath,e)});const _=(e,t)=>{R(e.pathname)||Object(o.apiRunner)("onPreRouteUpdate",{location:e,prevLocation:t})},C=(e,t)=>{R(e.pathname)||Object(o.apiRunner)("onRouteUpdate",{location:e,prevLocation:t})},S=function(e,t){if(void 0===t&&(t={}),"number"==typeof e)return void y.c.navigate(e);let{pathname:n}=Object(b.parsePath)(e),r=w.get(n);if(r||(r=P.get(n.toLowerCase())),r&&(e=r.toPath,n=Object(b.parsePath)(e).pathname),window.___swUpdated)return void(window.location=n);const a=setTimeout(()=>{g.a.emit("onDelayedLoadPageResources",{pathname:n}),Object(o.apiRunner)("onRouteUpdateDelayed",{location:window.location})},1e3);d.default.loadPage(n).then(r=>{if(!r||r.status===d.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"}),window.location=n),Object(u.navigate)(e,t),clearTimeout(a)})};function O(e,t){let{location:n}=t;const{pathname:r,hash:a}=n,i=Object(o.apiRunner)("shouldUpdateScroll",{prevRouterProps:e,pathname:r,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(i.length>0)return i[i.length-1];if(e){const{location:{pathname:t}}=e;if(t===r)return a?decodeURI(a.slice(1)):[0,0]}return!0}let j=function(e){function t(t){var n;return(n=e.call(this,t)||this).announcementRef=i.a.createRef(),n}Object(r.a)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){requestAnimationFrame(()=>{let e="new page at "+this.props.location.pathname;document.title&&(e=document.title);const t=document.querySelectorAll("#gatsby-focus-wrapper h1");t&&t.length&&(e=t[0].textContent);const n="Navigated to "+e;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}})},n.render=function(){return i.a.createElement("div",Object.assign({},v,{ref:this.announcementRef}))},t}(i.a.Component);const x=(e,t)=>{var n,r;return e.href!==t.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==t||null===(r=t.state)||void 0===r?void 0:r.key)};let E=function(e){function t(t){var n;return n=e.call(this,t)||this,_(t.location,null),n}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){C(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!x(e.location,this.props.location)&&(_(this.props.location,e.location),!0)},n.componentDidUpdate=function(e){x(e.location,this.props.location)&&C(this.props.location,e.location)},n.render=function(){return i.a.createElement(i.a.Fragment,null,this.props.children,i.a.createElement(j,{location:location}))},t}(i.a.Component);var k=n("IOVJ"),L=n("NsGk"),T=n.n(L);function D(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}var A=function(e){function t(t){var n;n=e.call(this)||this;const{location:r,pageResources:o}=t;return n.state={location:{...r},pageResources:o||d.default.loadPageSync(r.pathname)},n}Object(r.a)(t,e),t.getDerivedStateFromProps=function(e,t){let{location:n}=e;if(t.location.href!==n.href){return{pageResources:d.default.loadPageSync(n.pathname),location:{...n}}}return{location:{...n}}};var n=t.prototype;return n.loadResources=function(e){d.default.loadPage(e).then(t=>{t&&t.status!==d.PageResourceStatus.Error?this.setState({location:{...window.location},pageResources:t}):(window.history.replaceState({},"",location.href),window.location=e)})},n.shouldComponentUpdate=function(e,t){return t.pageResources?this.state.pageResources!==t.pageResources||(this.state.pageResources.component!==t.pageResources.component||(this.state.pageResources.json!==t.pageResources.json||(!(this.state.location.key===t.location.key||!t.pageResources.page||!t.pageResources.page.matchPath&&!t.pageResources.page.path)||function(e,t,n){return D(e.props,t)||D(e.state,n)}(this,e,t)))):(this.loadResources(e.location.pathname),!1)},n.render=function(){return this.props.children(this.state)},t}(i.a.Component),q=n("cSJ8"),M=n("JeVI");const I=new d.ProdLoader(T.a,M);Object(d.setLoader)(I),I.setApiRunner(o.apiRunner),window.asyncRequires=T.a,window.___emitter=g.a,window.___loader=d.publicLoader,y.c.listen(e=>{e.location.action=e.action}),window.___push=e=>S(e,{replace:!1}),window.___replace=e=>S(e,{replace:!0}),window.___navigate=(e,t)=>S(e,t),R(window.location.pathname),Object(o.apiRunnerAsync)("onClientEntry").then(()=>{Object(o.apiRunner)("registerServiceWorker").length>0&&n("NSX3");const e=e=>i.a.createElement(u.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},i.a.createElement(k.a,e)),t=i.a.createContext({});let a=function(e){function n(){return e.apply(this,arguments)||this}return Object(r.a)(n,e),n.prototype.render=function(){const{children:e}=this.props;return i.a.createElement(u.Location,null,n=>{let{location:r}=n;return i.a.createElement(A,{location:r},n=>{let{pageResources:r,location:o}=n;const a=Object(d.getStaticQueryResults)();return i.a.createElement(f.StaticQueryContext.Provider,{value:a},i.a.createElement(t.Provider,{value:{pageResources:r,location:o}},e))})})},n}(i.a.Component),s=function(n){function o(){return n.apply(this,arguments)||this}return Object(r.a)(o,n),o.prototype.render=function(){return i.a.createElement(t.Consumer,null,t=>{let{pageResources:n,location:r}=t;return i.a.createElement(E,{location:r},i.a.createElement(l.ScrollContext,{location:r,shouldUpdateScroll:O},i.a.createElement(u.Router,{basepath:"",location:r,id:"gatsby-focus-wrapper"},i.a.createElement(e,Object.assign({path:"/404.html"===n.page.path?Object(q.a)(r.pathname,""):encodeURI(n.page.matchPath||n.page.path)},this.props,{location:r,pageResources:n},n.json)))))})},o}(i.a.Component);const{pagePath:p,location:m}=window;p&&""+p!==m.pathname&&!(I.findMatchPath(Object(q.a)(m.pathname,""))||"/404.html"===p||p.match(/^\/404\/?$/)||p.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&Object(u.navigate)(""+p+m.search+m.hash,{replace:!0}),d.publicLoader.loadPage(m.pathname).then(e=>{if(!e||e.status===d.PageResourceStatus.Error)throw new Error("page resources for "+m.pathname+" not found. Not rendering React");window.___webpackCompilationHash=e.page.webpackCompilationHash;const t=Object(o.apiRunner)("wrapRootElement",{element:i.a.createElement(s,null)},i.a.createElement(s,null),e=>{let{result:t}=e;return{element:t}}).pop(),n=()=>i.a.createElement(a,null,t),r=Object(o.apiRunner)("replaceHydrateFunction",void 0,c.a.hydrate)[0];h()(()=>{r(i.a.createElement(n,null),"undefined"!=typeof window?document.getElementById("___gatsby"):void 0,()=>{Object(o.apiRunner)("onInitialClientRender")})})})})},VbXa:function(e,t,n){var r=n("SksO");e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},Wbzz:function(e,t,n){"use strict";n.r(t),n.d(t,"graphql",(function(){return m})),n.d(t,"StaticQueryContext",(function(){return p})),n.d(t,"StaticQuery",(function(){return f})),n.d(t,"useStaticQuery",(function(){return d})),n.d(t,"prefetchPathname",(function(){return l}));var r=n("q1tI"),o=n.n(r),a=n("+ZDr"),i=n.n(a);n.d(t,"Link",(function(){return i.a})),n.d(t,"withAssetPrefix",(function(){return a.withAssetPrefix})),n.d(t,"withPrefix",(function(){return a.withPrefix})),n.d(t,"parsePath",(function(){return a.parsePath})),n.d(t,"navigate",(function(){return a.navigate})),n.d(t,"push",(function(){return a.push})),n.d(t,"replace",(function(){return a.replace})),n.d(t,"navigateTo",(function(){return a.navigateTo}));var s=n("7hJ6");n.d(t,"useScrollRestoration",(function(){return s.useScrollRestoration}));var c=n("lw3w"),u=n.n(c);n.d(t,"PageRenderer",(function(){return u.a}));const l=n("emEt").default.enqueue,p=o.a.createContext({});function h(e){let{staticQueryData:t,data:n,query:r,render:a}=e;const i=n?n.data:t[r]&&t[r].data;return o.a.createElement(o.a.Fragment,null,i&&a(i),!i&&o.a.createElement("div",null,"Loading (StaticQuery)"))}const f=e=>{const{data:t,query:n,render:r,children:a}=e;return o.a.createElement(p.Consumer,null,e=>o.a.createElement(h,{data:t,query:n,render:r||a,staticQueryData:e}))},d=e=>{var t;o.a.useContext;const n=o.a.useContext(p);if(isNaN(Number(e)))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`"+e+"`);\n");if(null!==(t=n[e])&&void 0!==t&&t.data)return n[e].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 m(){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.")}},"YLt+":function(e){e.exports=JSON.parse('[{"fromPath":"/music/10-issues-songwriters-face/","ignoreCase":false,"toPath":"/10-issues-songwriters-face/"},{"fromPath":"/music/about-songmind-studios/","ignoreCase":false,"toPath":"/about-songmind-studios/"},{"fromPath":"/music/honing-strengths-with-a-student-evaluation/","ignoreCase":false,"toPath":"/honing-strengths-with-a-student-evaluation/"},{"fromPath":"/music/organizing-creativity-3-step-process/","ignoreCase":false,"toPath":"/organizing-creativity-3-step-process/"},{"fromPath":"/music/songwriting-and-serendipity/","ignoreCase":false,"toPath":"/songwriting-and-serendipity/"},{"fromPath":"/music/songwriting-simplicity-complexity/","ignoreCase":false,"toPath":"/songwriting-simplicity-complexity/"},{"fromPath":"/music/songwriting-snippet-challenge/","ignoreCase":false,"toPath":"/songwriting-snippet-challenge/"},{"fromPath":"/music/5-dysfunctions-of-a-band/","ignoreCase":false,"toPath":"/5-dysfunctions-of-a-band/"},{"fromPath":"/music/guide-to-practicing-overcoming-plateaus/","ignoreCase":false,"toPath":"/guide-to-practicing-overcoming-plateaus/"},{"fromPath":"/music/preparing-demo-for-studio/","ignoreCase":false,"toPath":"/preparing-demo-for-studio/"},{"fromPath":"/other/2020-decade-in-review/","ignoreCase":false,"toPath":"/2020-decade-in-review/"},{"fromPath":"/tech/2022-12-05-random-music-generators-news/","ignoreCase":false,"toPath":"/2022-12-05-random-music-generators-news/"},{"fromPath":"/tech/circular-dependencies-bug/","ignoreCase":false,"toPath":"/circular-dependencies-bug/"},{"fromPath":"/javascript/2019/03/23/circular-dependencies-bug.html","ignoreCase":false,"toPath":"/circular-dependencies-bug/"},{"fromPath":"/tech/catching-handling-errors-promise-chains/","ignoreCase":false,"toPath":"/catching-handling-errors-promise-chains/"},{"fromPath":"/javascript/2019/04/03/catching-handling-errors-promise-chains.html","ignoreCase":false,"toPath":"/catching-handling-errors-promise-chains/"},{"fromPath":"/tech/code-style-guide/","ignoreCase":false,"toPath":"/code-style-guide/"},{"fromPath":"/javascript/2019/03/18/code-style-guide.html","ignoreCase":false,"toPath":"/code-style-guide/"},{"fromPath":"/tech/contributing-to-open-source-is-type-checking/","ignoreCase":false,"toPath":"/contributing-to-open-source-is-type-checking/"},{"fromPath":"/tech/custom-type-checking-isnan/","ignoreCase":false,"toPath":"/custom-type-checking-isnan/"},{"fromPath":"/javascript/2019/03/22/custom-type-checking-isnan.html","ignoreCase":false,"toPath":"/custom-type-checking-isnan/"},{"fromPath":"/tech/git-commit-format-squash/","ignoreCase":false,"toPath":"/git-commit-format-squash/"},{"fromPath":"/git/2019/03/24/git-commit-format-squash.html","ignoreCase":false,"toPath":"/git-commit-format-squash/"},{"fromPath":"/tech/hash-tables-js/","ignoreCase":false,"toPath":"/hash-tables-js/"},{"fromPath":"/javascript/computer%20science/2018/02/20/hash-tables-js.html","ignoreCase":false,"toPath":"/hash-tables-js/"},{"fromPath":"/javascript/computer_science/2018/02/20/hash-tables-js.html","ignoreCase":false,"toPath":"/hash-tables-js/"},{"fromPath":"/tech/how-to-squash-commits/","ignoreCase":false,"toPath":"/how-to-squash-commits/"},{"fromPath":"/git/2019/12/20/how-to-squash-commits.html","ignoreCase":false,"toPath":"/how-to-squash-commits/"},{"fromPath":"/tech/intro-to-js-frameworks01/","ignoreCase":false,"toPath":"/intro-to-js-frameworks01/"},{"fromPath":"/javascript/2017/09/01/intro-to-js-frameworks01.html","ignoreCase":false,"toPath":"/intro-to-js-frameworks01/"},{"fromPath":"/tech/marketable-programming-skills/","ignoreCase":false,"toPath":"/marketable-programming-skills/"},{"fromPath":"/career/2017/08/01/marketable-programming-skills.html","ignoreCase":false,"toPath":"/marketable-programming-skills/"},{"fromPath":"/tech/now-attending-fullstack/","ignoreCase":false,"toPath":"/now-attending-fullstack/"},{"fromPath":"/javascript/2017/12/26/now-attending-fullstack.html","ignoreCase":false,"toPath":"/now-attending-fullstack/"},{"fromPath":"/career/2019/07/02/prepare-for-initial-screens.html","ignoreCase":false,"toPath":"/prepare-for-initial-screens/"},{"fromPath":"/tech/prepare-for-initial-screens/","ignoreCase":false,"toPath":"/prepare-for-initial-screens/"},{"fromPath":"/tech/python-classes-guess-the-number/","ignoreCase":false,"toPath":"/python-classes-guess-the-number/"},{"fromPath":"/python/2017/07/01/number-guess-oop.html","ignoreCase":false,"toPath":"/python-classes-guess-the-number/"},{"fromPath":"/career/2018/07/18/recruiters-and-junior-devs.html","ignoreCase":false,"toPath":"/recruiters-and-junior-devs/"},{"fromPath":"/tech/recruiters-and-junior-devs/","ignoreCase":false,"toPath":"/recruiters-and-junior-devs/"},{"fromPath":"/tech/recursive-filter-function/","ignoreCase":false,"toPath":"/recursive-filter-function/"},{"fromPath":"/javascript/2019/03/28/recursive-filter-function.html","ignoreCase":false,"toPath":"/recursive-filter-function/"},{"fromPath":"/tech/reflections-coding-bootcamp/","ignoreCase":false,"toPath":"/reflections-coding-bootcamp/"},{"fromPath":"/javascript/2018/04/16/reflections-coding-bootcamp.html","ignoreCase":false,"toPath":"/reflections-coding-bootcamp/"},{"fromPath":"/tech/website-makeover-gatsby/","ignoreCase":false,"toPath":"/website-makeover-gatsby/"},{"fromPath":"/gatsbyjs/2020/01/08/website-makeover-gatsby.html","ignoreCase":false,"toPath":"/website-makeover-gatsby/"},{"fromPath":"/tech/2020-01-27-random-music-generators-news/","ignoreCase":false,"toPath":"/2020-01-27-random-music-generators-news/"},{"fromPath":"/tech/comparing-javascript-test-runners/","ignoreCase":false,"toPath":"/comparing-javascript-test-runners/"},{"fromPath":"/tech/debugging-strategies/","ignoreCase":false,"toPath":"/debugging-strategies-checklist/"},{"fromPath":"/computer%20science/2018/05/08/debugging-strategies.html","ignoreCase":false,"toPath":"/debugging-strategies-checklist/"},{"fromPath":"/computer_science/2018/05/08/debugging-strategies.html","ignoreCase":false,"toPath":"/debugging-strategies-checklist/"}]')},YVoz:function(e,t,n){"use strict";e.exports=Object.assign},YwZP:function(e,t,n){"use strict";n.r(t),n.d(t,"Link",(function(){return T})),n.d(t,"Location",(function(){return b})),n.d(t,"LocationProvider",(function(){return w})),n.d(t,"Match",(function(){return U})),n.d(t,"Redirect",(function(){return I})),n.d(t,"Router",(function(){return _})),n.d(t,"ServerLocation",(function(){return P})),n.d(t,"isRedirect",(function(){return A})),n.d(t,"redirectTo",(function(){return q})),n.d(t,"useLocation",(function(){return W})),n.d(t,"useNavigate",(function(){return F})),n.d(t,"useParams",(function(){return N})),n.d(t,"useMatch",(function(){return B})),n.d(t,"BaseContext",(function(){return R}));var r=n("q1tI"),o=n.n(r),a=n("QLaP"),i=n.n(a),s=n("nqlD"),c=n.n(s),u=n("94VI"),l=n("LYrO");n.d(t,"matchPath",(function(){return l.match}));var p=n("9Xx/");n.d(t,"createHistory",(function(){return p.a})),n.d(t,"createMemorySource",(function(){return p.b})),n.d(t,"navigate",(function(){return p.d})),n.d(t,"globalHistory",(function(){return p.c}));var h=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function g(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var v=function(e,t){var n=c()(t);return n.displayName=e,n},y=v("Location"),b=function(e){var t=e.children;return o.a.createElement(y.Consumer,null,(function(e){return e?t(e):o.a.createElement(w,null,t)}))},w=function(e){function t(){var n,r;d(this,t);for(var o=arguments.length,a=Array(o),i=0;i-1?(a=t.substring(0,r),i=t.substring(r)):a=t,o.a.createElement(y.Provider,{value:{location:{pathname:a,search:i,hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},R=v("Base",{baseuri:"/",basepath:"/"}),_=function(e){return o.a.createElement(R.Consumer,null,(function(t){return o.a.createElement(b,null,(function(n){return o.a.createElement(C,h({},t,n,e))}))}))},C=function(e){function t(){return d(this,t),m(this,e.apply(this,arguments))}return g(t,e),t.prototype.render=function(){var e=this.props,t=e.location,n=e.navigate,r=e.basepath,a=e.primary,i=e.children,s=(e.baseuri,e.component),c=void 0===s?"div":s,u=f(e,["location","navigate","basepath","primary","children","baseuri","component"]),p=o.a.Children.toArray(i).reduce((function(e,t){var n=G(r)(t);return e.concat(n)}),[]),d=t.pathname,m=Object(l.pick)(p,d);if(m){var g=m.params,v=m.uri,y=m.route,b=m.route.value;r=y.default?r:y.path.replace(/\*$/,"");var w=h({},g,{uri:v,location:t,navigate:function(e,t){return n(Object(l.resolve)(e,v),t)}}),P=o.a.cloneElement(b,w,b.props.children?o.a.createElement(_,{location:t,primary:a},b.props.children):void 0),C=a?O:c,S=a?h({uri:v,location:t,component:c},u):u;return o.a.createElement(R.Provider,{value:{baseuri:v,basepath:r}},o.a.createElement(C,S,P))}return null},t}(o.a.PureComponent);C.defaultProps={primary:!0};var S=v("Focus"),O=function(e){var t=e.uri,n=e.location,r=e.component,a=f(e,["uri","location","component"]);return o.a.createElement(S.Consumer,null,(function(e){return o.a.createElement(E,h({},a,{component:r,requestFocus:e,uri:t,location:n}))}))},j=!0,x=0,E=function(e){function t(){var n,r;d(this,t);for(var o=arguments.length,a=Array(o),i=0;i script[src],\n head > link[href],\n head > style[data-href]\n "),i=[].slice.call(a).filter((function(e){return"LINK"!==e.tagName||r.test(e.getAttribute("rel"))})).map((function(e){return e.src||e.href||e.getAttribute("data-href")})),s=[];o.forEach((function(e){var r=t(e);s.push.apply(s,r),n.active.postMessage({gatsbyApi:"setPathResources",path:e,resources:r})})),[].concat(i,s).forEach((function(e){var t=document.createElement("link");t.rel="prefetch",t.href=e,t.onload=t.remove,t.onerror=t.remove,document.head.appendChild(t)}))}},t.onRouteUpdate=function(e){var t=e.location,n=e.getResourceURLsForPathname;a(t.pathname.replace("",""),n),"serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"enableOfflineShell"})},t.onPostPrefetchPathname=function(e){a(e.pathname,e.getResourceURLsForPathname)}},emEt:function(e,t,n){"use strict";n.r(t),n.d(t,"PageResourceStatus",(function(){return p})),n.d(t,"BaseLoader",(function(){return g})),n.d(t,"ProdLoader",(function(){return b})),n.d(t,"setLoader",(function(){return w})),n.d(t,"publicLoader",(function(){return P})),n.d(t,"getStaticQueryResults",(function(){return R}));var r=n("dI71");function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),Object.keys(t).forEach(e=>{o.setAttribute(e,t[e])}),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=()=>{200===r.status?t():n()},r.send(null)})},s={};var c=function(e,t){return new Promise(n=>{s[e]?n():i(e,t).then(()=>{n(),s[e]=!0}).catch(()=>{})})},u=n("5yr3"),l=n("30RF");const p={Error:"error",Success:"success"},h=e=>e&&e.default||e,f=e=>{var t;return"/page-data/"+("/"===e?"index":t=(t="/"===(t=e)[0]?t.slice(1):t).endsWith("/")?t.slice(0,-1):t)+"/page-data.json"};function d(e,t){return void 0===t&&(t="GET"),new Promise((n,r)=>{const o=new XMLHttpRequest;o.open(t,e,!0),o.onreadystatechange=()=>{4==o.readyState&&n(o)},o.send(null)})}const m=function(e,t){void 0===t&&(t=null);const n={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes};return{component:t,json:e.result,page:n}};let g=function(){function e(e,t){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=e,Object(l.d)(t)}var t=e.prototype;return t.memoizedGet=function(e){let t=this.inFlightNetworkRequests.get(e);return t||(t=d(e,"GET"),this.inFlightNetworkRequests.set(e,t)),t.then(t=>(this.inFlightNetworkRequests.delete(e),t)).catch(t=>{throw this.inFlightNetworkRequests.delete(e),t})},t.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some(e=>e)},t.fetchPageDataJson=function(e){const{pagePath:t,retries:n=0}=e,r=f(t);return this.memoizedGet(r).then(r=>{const{status:o,responseText:a}=r;if(200===o)try{const t=JSON.parse(a);if(void 0===t.path)throw new Error("not a valid pageData response");return Object.assign(e,{status:p.Success,payload:t})}catch(i){}return 404===o||200===o?"/404.html"===t?Object.assign(e,{status:p.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?Object.assign(e,{status:p.Error}):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})})},t.loadPageDataJson=function(e){const t=Object(l.b)(e);if(this.pageDataDb.has(t)){const e=this.pageDataDb.get(t);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:t}).then(e=>(this.pageDataDb.set(t,e),e))},t.findMatchPath=function(e){return Object(l.a)(e)},t.loadPage=function(e){const t=Object(l.b)(e);if(this.pageDb.has(t)){const e=this.pageDb.get(t);return Promise.resolve(e.payload)}if(this.inFlightDb.has(t))return this.inFlightDb.get(t);const n=Promise.all([this.loadAppData(),this.loadPageDataJson(t)]).then(e=>{const n=e[1];if(n.status===p.Error)return{status:p.Error};let r=n.payload;const{componentChunkName:o,staticQueryHashes:a=[]}=r,i={},s=this.loadComponent(o).then(t=>{let o;return i.createdAt=new Date,t?(i.status=p.Success,!0===n.notFound&&(i.notFound=!0),r=Object.assign(r,{webpackCompilationHash:e[0]?e[0].webpackCompilationHash:""}),o=m(r,t)):i.status=p.Error,o}),c=Promise.all(a.map(e=>{if(this.staticQueryDb[e]){const t=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:t}}return this.memoizedGet("/page-data/sq/d/"+e+".json").then(t=>{const n=JSON.parse(t.responseText);return{staticQueryHash:e,jsonPayload:n}})})).then(e=>{const t={};return e.forEach(e=>{let{staticQueryHash:n,jsonPayload:r}=e;t[n]=r,this.staticQueryDb[n]=r}),t});return Promise.all([s,c]).then(e=>{let n,[r,o]=e;return r&&(n={...r,staticQueryResults:o},i.payload=n,u.a.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(t,i),n})});return n.then(e=>{this.inFlightDb.delete(t)}).catch(e=>{throw this.inFlightDb.delete(t),e}),this.inFlightDb.set(t,n),n},t.loadPageSync=function(e){const t=Object(l.b)(e);if(this.pageDb.has(t)){return this.pageDb.get(t).payload}},t.shouldPrefetch=function(e){return!!(()=>{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(e)},t.prefetch=function(e){if(!this.shouldPrefetch(e))return!1;if(this.prefetchTriggered.has(e)||(this.apiRunner("onPrefetchPathname",{pathname:e}),this.prefetchTriggered.add(e)),this.prefetchDisabled)return!1;const t=Object(l.b)(e);return this.doPrefetch(t).then(()=>{this.prefetchCompleted.has(e)||(this.apiRunner("onPostPrefetchPathname",{pathname:e}),this.prefetchCompleted.add(e))}),!0},t.doPrefetch=function(e){const t=f(e);return c(t,{crossOrigin:"anonymous",as:"fetch"}).then(()=>this.loadPageDataJson(e))},t.hovering=function(e){this.loadPage(e)},t.getResourceURLsForPathname=function(e){const t=Object(l.b)(e),n=this.pageDataDb.get(t);if(n){const e=m(n.payload);return[].concat(a(v(e.page.componentChunkName)),[f(t)])}return null},t.isPageNotFound=function(e){const t=Object(l.b)(e),n=this.pageDb.get(t);return!n||n.notFound},t.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/page-data/app-data.json").then(t=>{const{status:n,responseText:r}=t;let o;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(r);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");o=e}catch(a){}return o})},e}();const v=e=>(window.___chunkMapping[e]||[]).map(e=>""+e);let y,b=function(e){function t(t,n){return e.call(this,e=>t.components[e]?t.components[e]().then(h).catch(()=>null):Promise.resolve(),n)||this}Object(r.a)(t,e);var n=t.prototype;return n.doPrefetch=function(t){return e.prototype.doPrefetch.call(this,t).then(e=>{if(e.status!==p.Success)return Promise.resolve();const t=e.payload,n=t.componentChunkName,r=v(n);return Promise.all(r.map(c)).then(()=>t)})},n.loadPageDataJson=function(t){return e.prototype.loadPageDataJson.call(this,t).then(e=>e.notFound?d(t,"HEAD").then(t=>200===t.status?{status:p.Error}:e):e)},t}(g);const w=e=>{y=e},P={getResourcesForPathname:e=>(console.warn("Warning: getResourcesForPathname is deprecated. Use loadPage instead"),y.i.loadPage(e)),getResourcesForPathnameSync:e=>(console.warn("Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead"),y.i.loadPageSync(e)),enqueue:e=>y.prefetch(e),getResourceURLsForPathname:e=>y.getResourceURLsForPathname(e),loadPage:e=>y.loadPage(e),loadPageSync:e=>y.loadPageSync(e),prefetch:e=>y.prefetch(e),isPageNotFound:e=>y.isPageNotFound(e),hovering:e=>y.hovering(e),loadAppData:()=>y.loadAppData()};t.default=P;function R(){return y?y.staticQueryDb:{}}},hd9s:function(e,t,n){"use strict";var r=n("284h"),o=n("TqRt");t.__esModule=!0,t.ScrollContainer=void 0;var a=o(n("pVnL")),i=o(n("VbXa")),s=r(n("q1tI")),c=o(n("i8i4")),u=o(n("17x9")),l=n("Enzk"),p=n("YwZP"),h={scrollKey:u.default.string.isRequired,shouldUpdateScroll:u.default.func,children:u.default.element.isRequired},f=function(e){function t(t){return e.call(this,t)||this}(0,i.default)(t,e);var n=t.prototype;return n.componentDidMount=function(){var e=this,t=c.default.findDOMNode(this),n=this.props,r=n.location,o=n.scrollKey;if(t){t.addEventListener("scroll",(function(){e.props.context.save(r,o,t.scrollTop)}));var a=this.props.context.read(r,o);t.scrollTo(0,a||0)}},n.render=function(){return this.props.children},t}(s.Component),d=function(e){return s.createElement(p.Location,null,(function(t){var n=t.location;return s.createElement(l.ScrollContext.Consumer,null,(function(t){return s.createElement(f,(0,a.default)({},e,{context:t,location:n}))}))}))};t.ScrollContainer=d,d.propTypes=h},hqbx:function(e,t,n){"use strict";var r=n("TqRt");t.__esModule=!0,t.default=function(e,t,n){var r=m(n,t);return e.addEventListener("click",r),function(){return e.removeEventListener("click",r)}},t.routeThroughBrowserOrApp=t.hashShouldBeFollowed=t.pathIsNotHandledByApp=t.urlsAreOnSameOrigin=t.authorIsForcingNavigation=t.anchorsTargetIsEquivalentToSelf=t.findClosestAnchor=t.navigationWasHandledElsewhere=t.slashedPathname=t.userIsForcingNavigation=void 0;var o=r(n("oxjq")),a=n("Wbzz"),i=function(e){return 0!==e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey};t.userIsForcingNavigation=i;var s=function(e){return"/"===e[0]?e:"/"+e};t.slashedPathname=s;var c=function(e){return e.defaultPrevented};t.navigationWasHandledElsewhere=c;var u=function(e){for(;e.parentNode;e=e.parentNode)if("a"===e.nodeName.toLowerCase())return e;return null};t.findClosestAnchor=u;var l=function(e){return!1===e.hasAttribute("target")||null==e.target||["_self",""].includes(e.target)||"_parent"===e.target&&(!e.ownerDocument.defaultView.parent||e.ownerDocument.defaultView.parent===e.ownerDocument.defaultView)||"_top"===e.target&&(!e.ownerDocument.defaultView.top||e.ownerDocument.defaultView.top===e.ownerDocument.defaultView)};t.anchorsTargetIsEquivalentToSelf=l;var p=function(e){return!0===e.hasAttribute("download")||!1===l(e)};t.authorIsForcingNavigation=p;var h=function(e,t){return e.protocol===t.protocol&&e.host===t.host};t.urlsAreOnSameOrigin=h;var f=function(e,t){return!1===t.test(s(e.pathname))||-1!==e.pathname.search(/^.*\.((?!htm)[a-z0-9]{1,5})$/i)};t.pathIsNotHandledByApp=f;var d=function(e,t){return""!==t.hash&&(""===t.pathname||t.pathname===e.pathname)};t.hashShouldBeFollowed=d;var m=function(e,t){return function(n){if(window.___failedResources)return!0;if(i(n))return!0;if(c(n))return!0;var r=u(n.target);if(null==r)return!0;if(p(r))return!0;var l=document.createElement("a");""!==r.href&&(l.href=r.href),"SVGAnimatedString"in window&&r.href instanceof SVGAnimatedString&&(l.href=r.href.animVal);var m=document.createElement("a");if(m.href=window.location.href,!1===h(m,l))return!0;var g=new RegExp("^"+(0,o.default)((0,a.withPrefix)("/")));if(f(l,g))return!0;if(d(m,l))return!0;if(t.excludePattern&&new RegExp(t.excludePattern).test(l.pathname))return!0;n.preventDefault();var v=s(l.pathname).replace(g,"/");return e(""+v+l.search+l.hash),!1}};t.routeThroughBrowserOrApp=m},lw3w:function(e,t,n){var r;e.exports=(r=n("rzlk"))&&r.default||r},npZl:function(e,t,n){"use strict";var r=n("TqRt");n("Wbzz"),r(n("9hXx"))},nqlD:function(e,t,n){const{createContext:r}=n("q1tI");e.exports=r,e.exports.default=r},nwwn:function(e,t,n){"use strict";t.DEFAULT_OPTIONS={maxWidth:650,wrapperStyle:"",backgroundColor:"white",linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,withWebp:!1,withAvif:!1,tracedSVG:!1,loading:"lazy",disableBgImageOnAlpha:!1,disableBgImage:!1},t.EMPTY_ALT="GATSBY_EMPTY_ALT",t.imageClass="gatsby-resp-image-image",t.imageWrapperClass="gatsby-resp-image-wrapper",t.imageBackgroundClass="gatsby-resp-image-background-image"},oxjq:function(e,t,n){"use strict";var r=/[|\\{}()[\]^$+*?.]/g;e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(r,"\\$&")}},pVnL:function(e,t){function n(){return e.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{location:t}=e;const n=a.default.loadPageSync(t.pathname);return n?o.a.createElement(i.a,{location:t,pageResources:n,...n.json}):null}},s4An:function(e,t,n){"use strict";function r(e,t){return(r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}n.d(t,"a",(function(){return r}))},"t+Ps":function(e,t,n){},"xMo/":function(e,t,n){},xtsi:function(e,t,n){const r=n("LeKB"),{getResourcesForPathname:o,getResourcesForPathnameSync:a,getResourceURLsForPathname:i,loadPage:s,loadPageSync:c}=n("emEt").publicLoader;t.apiRunner=function(e,t,n,u){void 0===t&&(t={});let l=r.map(n=>{if(!n.plugin[e])return;t.getResourcesForPathnameSync=a,t.getResourcesForPathname=o,t.getResourceURLsForPathname=i,t.loadPage=s,t.loadPageSync=c;const r=n.plugin[e](t,n.options);return r&&u&&(t=u({args:t,result:r,plugin:n})),r});return l=l.filter(e=>void 0!==e),l.length>0?l:n?[n]:[]},t.apiRunnerAsync=(e,t,n)=>r.reduce((n,r)=>r.plugin[e]?n.then(()=>r.plugin[e](t,r.options)):n,Promise.resolve())}},[["UxWs",4,2,21]]]); -//# sourceMappingURL=app-eac1380cd8916e998c4f.js.map \ No newline at end of file +/*! For license information please see app-dd8e35d448b2c1e30855.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"+ZDr":function(e,t,n){"use strict";var r=n("TqRt");t.__esModule=!0,t.withPrefix=d,t.withAssetPrefix=function(e){return d(e,m())},t.navigateTo=t.replace=t.push=t.navigate=t.default=void 0;var o=r(n("8OQS")),a=r(n("PJYZ")),i=r(n("VbXa")),s=r(n("pVnL")),c=r(n("17x9")),u=r(n("q1tI")),l=n("YwZP"),p=n("LYrO"),h=n("cu4x");t.parsePath=h.parsePath;var f=function(e){return null==e?void 0:e.startsWith("/")};function d(e,t){var n,r;if(void 0===t&&(t=g()),!v(e))return e;if(e.startsWith("./")||e.startsWith("../"))return e;var o=null!==(n=null!==(r=t)&&void 0!==r?r:m())&&void 0!==n?n:"/";return""+((null==o?void 0:o.endsWith("/"))?o.slice(0,-1):o)+(e.startsWith("/")?e:"/"+e)}var m=function(){return""},g=function(){return""},v=function(e){return e&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")};var y=function(e,t){return"number"==typeof e?e:v(e)?f(e)?d(e):function(e,t){return f(e)?e:(0,p.resolve)(e,t)}(e,t):e},b={activeClassName:c.default.string,activeStyle:c.default.object,partiallyActive:c.default.bool};function w(e){return u.default.createElement(l.Location,null,(function(t){var n=t.location;return u.default.createElement(P,(0,s.default)({},e,{_location:n}))}))}var P=function(e){function t(t){var n;(n=e.call(this,t)||this).defaultGetProps=function(e){var t=e.isPartiallyCurrent,r=e.isCurrent;return(n.props.partiallyActive?t:r)?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,s.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,a.default)(n)),n}(0,i.default)(t,e);var n=t.prototype;return n._prefetch=function(){var e=window.location.pathname;this.props._location&&this.props._location.pathname&&(e=this.props._location.pathname);var t=y(this.props.to,e),n=(0,h.parsePath)(t).pathname;e!==n&&___loader.enqueue(n)},n.componentDidUpdate=function(e,t){this.props.to===e.to||this.state.IOSupported||this._prefetch()},n.componentDidMount=function(){this.state.IOSupported||this._prefetch()},n.componentWillUnmount=function(){if(this.io){var e=this.io,t=e.instance,n=e.el;t.unobserve(n),t.disconnect()}},n.handleRef=function(e){var t,n,r,o=this;this.props.innerRef&&this.props.innerRef.hasOwnProperty("current")?this.props.innerRef.current=e:this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(this.io=(t=e,n=function(){o._prefetch()},(r=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(r.unobserve(t),r.disconnect(),n())}))}))).observe(t),{instance:r,el:t}))},n.render=function(){var e=this,t=this.props,n=t.to,r=t.getProps,a=void 0===r?this.defaultGetProps:r,i=t.onClick,c=t.onMouseEnter,p=(t.activeClassName,t.activeStyle,t.innerRef,t.partiallyActive,t.state),f=t.replace,d=t._location,m=(0,o.default)(t,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"]);var g=y(n,d.pathname);return v(g)?u.default.createElement(l.Link,(0,s.default)({to:g,state:p,getProps:a,innerRef:this.handleRef,onMouseEnter:function(e){c&&c(e),___loader.hovering((0,h.parsePath)(g).pathname)},onClick:function(t){if(i&&i(t),!(0!==t.button||e.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)){t.preventDefault();var n=f,r=encodeURI(g)===d.pathname;"boolean"!=typeof f&&r&&(n=!0),window.___navigate(g,{state:p,replace:n})}return!0}},m)):u.default.createElement("a",(0,s.default)({href:g},m))},t}(u.default.Component);P.propTypes=(0,s.default)({},b,{onClick:c.default.func,to:c.default.string.isRequired,replace:c.default.bool,state:c.default.object});var R=function(e,t,n){return console.warn('The "'+e+'" method is now deprecated and will be removed in Gatsby v'+n+'. Please use "'+t+'" instead.')},_=u.default.forwardRef((function(e,t){return u.default.createElement(w,(0,s.default)({innerRef:t},e))}));t.default=_;t.navigate=function(e,t){window.___navigate(y(e,window.location.pathname),t)};var C=function(e){R("push","navigate",3),window.___push(y(e,window.location.pathname))};t.push=C;t.replace=function(e){R("replace","navigate",3),window.___replace(y(e,window.location.pathname))};t.navigateTo=function(e){return R("navigateTo","navigate",3),C(e)}},"/hTd":function(e,t,n){"use strict";t.__esModule=!0,t.SessionStorage=void 0;var r=function(){function e(){}var t=e.prototype;return t.read=function(e,t){var n=this.getStateKey(e,t);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}},t.save=function(e,t,n){var r=this.getStateKey(e,t),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)}},t.getStateKey=function(e,t){var n="@@scroll|"+e.pathname;return null==t?n:n+"|"+t},e}();t.SessionStorage=r},"284h":function(e,t,n){var r=n("cDf5").default;function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}e.exports=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=r(e)&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var c=i?Object.getOwnPropertyDescriptor(e,s):null;c&&(c.get||c.set)?Object.defineProperty(a,s,c):a[s]=e[s]}return a.default=e,n&&n.set(e,a),a},e.exports.__esModule=!0,e.exports.default=e.exports},"30RF":function(e,t,n){"use strict";n.d(t,"d",(function(){return l})),n.d(t,"a",(function(){return p})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return f}));var r=n("LYrO"),o=n("cSJ8"),a=e=>void 0===e?e:"/"===e?"/":"/"===e.charAt(e.length-1)?e.slice(0,-1):e;const i=new Map;let s=[];const c=e=>{const t=decodeURIComponent(e);return Object(o.a)(t,"").split("#")[0].split("?")[0]};function u(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const l=e=>{s=e},p=e=>{const t=d(e),n=s.map(e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}}),o=Object(r.pick)(n,t);return o?a(o.route.originalPath):null},h=e=>{const t=d(e),n=s.map(e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}}),o=Object(r.pick)(n,t);return o?o.params:{}},f=e=>{const t=c(u(e));if(i.has(t))return i.get(t);let n=p(t);return n||(n=d(e)),i.set(t,n),n},d=e=>{let t=c(u(e));return"/index.html"===t&&(t="/"),t=a(t),t}},"3uz+":function(e,t,n){"use strict";t.__esModule=!0,t.useScrollRestoration=function(e){var t=(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(t,e);i.current.scrollTo(0,r||0)}}),[]),{ref:i,onScroll:function(){i.current&&n.save(t,e,i.current.scrollTop)}}};var r=n("Enzk"),o=n("q1tI"),a=n("YwZP")},"5yr3":function(e,t,n){"use strict";const r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map((function(e){e(n)})),(e["*"]||[]).slice().map((function(e){e(t,n)}))}}}();t.a=r},"7hJ6":function(e,t,n){"use strict";t.__esModule=!0,t.useScrollRestoration=t.ScrollContainer=t.ScrollContext=void 0;var r=n("Enzk");t.ScrollContext=r.ScrollHandler;var o=n("hd9s");t.ScrollContainer=o.ScrollContainer;var a=n("3uz+");t.useScrollRestoration=a.useScrollRestoration},"8OQS":function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o},e.exports.__esModule=!0,e.exports.default=e.exports},"94VI":function(e,t){t.polyfill=e=>e},"9Xx/":function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"d",(function(){return u})),n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return i}));var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},u=c.state,l=c.replace,p=void 0!==l&&l;if("number"==typeof t)e.history.go(t);else{u=r({},u,{key:Date.now()+""});try{i||p?e.history.replaceState(u,null,t):e.history.pushState(u,null,t)}catch(f){e.location[p?"replace":"assign"](t)}}a=o(e),i=!0;var h=new Promise((function(e){return s=e}));return n.forEach((function(e){return e({location:a,action:"PUSH"})})),h}}},i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=e.indexOf("?"),n={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""},r=0,o=[n],a=[null];return{get location(){return o[r]},addEventListener:function(e,t){},removeEventListener:function(e,t){},history:{get entries(){return o},get index(){return r},get state(){return a[r]},pushState:function(e,t,n){var i=n.split("?"),s=i[0],c=i[1],u=void 0===c?"":c;r++,o.push({pathname:s,search:u.length?"?"+u:u}),a.push(e)},replaceState:function(e,t,n){var i=n.split("?"),s=i[0],c=i[1],u=void 0===c?"":c;o[r]={pathname:s,search:u},a[r]=e},go:function(e){var t=r+e;t<0||t>a.length-1||(r=t)}}}},s=!("undefined"==typeof window||!window.document||!window.document.createElement),c=a(s?window:i()),u=c.navigate},"9hXx":function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e,t){if(!Array.isArray(t))return"manifest.webmanifest";var n=t.find((function(t){return e.startsWith(t.start_url)}));return n?"manifest_"+n.lang+".webmanifest":"manifest.webmanifest"}},BOnt:function(e,t,n){"use strict";var r=n("TqRt"),o=n("Wbzz"),a=r(n("hqbx"));t.onClientEntry=function(e,t){void 0===t&&(t={}),(0,a.default)(window,t,(function(e){(0,o.navigate)(e)}))}},Enzk:function(e,t,n){"use strict";var r=n("284h"),o=n("TqRt");t.__esModule=!0,t.ScrollHandler=t.ScrollContext=void 0;var a=o(n("PJYZ")),i=o(n("VbXa")),s=r(n("q1tI")),c=o(n("17x9")),u=n("/hTd"),l=s.createContext(new u.SessionStorage);t.ScrollContext=l,l.displayName="GatsbyScrollContext";var p=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o{let{location:n}=e;"undefined"!=typeof woopra&&(t&&t.debug&&console.log("woopra.track() called"),woopra.track())}},IOVJ:function(e,t,n){"use strict";var r=n("dI71"),o=n("q1tI"),a=n.n(o),i=n("emEt"),s=n("xtsi"),c=n("30RF");let u=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){const e={...this.props,params:{...Object(c.c)(this.props.location.pathname),...this.props.pageResources.json.pageContext.__params},pathContext:this.props.pageContext},[t]=Object(s.apiRunner)("replaceComponentRenderer",{props:this.props,loader:i.publicLoader}),n=t||Object(o.createElement)(this.props.pageResources.component,{...e,key:this.props.path||this.props.pageResources.page.path});return Object(s.apiRunner)("wrapPageElement",{element:n,props:e},n,t=>{let{result:n}=t;return{element:n,props:e}}).pop()},t}(a.a.Component);t.a=u},JeVI:function(e){e.exports=JSON.parse("[]")},LYrO:function(e,t,n){"use strict";n.r(t),n.d(t,"startsWith",(function(){return a})),n.d(t,"pick",(function(){return i})),n.d(t,"match",(function(){return s})),n.d(t,"resolve",(function(){return c})),n.d(t,"insertParams",(function(){return u})),n.d(t,"validateRedirect",(function(){return l})),n.d(t,"shallowCompare",(function(){return b}));var r=n("QLaP"),o=n.n(r),a=function(e,t){return e.substr(0,t.length)===t},i=function(e,t){for(var n=void 0,r=void 0,a=t.split("?")[0],i=g(a),s=""===i[0],c=m(e),u=0,l=c.length;ut.score?-1:e.index-t.index}))},g=function(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},v=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r0})))&&n.length>0?"?"+n.join("&"):"")},y=["uri","path"],b=function(e,t){var n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((function(n){return t.hasOwnProperty(n)&&e[n]===t[n]}))}},LeKB:function(e,t,n){e.exports=[{plugin:n("BOnt"),options:{plugins:[]}},{plugin:n("q9nr"),options:{plugins:[],maxWidth:590,linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,sizeByPixelDensity:!1,backgroundColor:"white",quality:50,withWebp:!1,tracedSVG:!1,loading:"lazy",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n("npZl"),options:{plugins:[],name:"Gatsby Starter Blog",short_name:"GatsbyJS",start_url:"/",background_color:"#ffffff",theme_color:"#663399",display:"minimal-ui",icon:"static/assets/img/site/site-icon.png",legacy:!0,theme_color_in_head:!0,cache_busting_mode:"query",crossOrigin:"anonymous",include_favicon:!0,cacheDigest:"28ed9950c5dc197700103c9fd9088ea2"}},{plugin:n("e/UW"),options:{plugins:[]}},{plugin:n("GddB"),options:{plugins:[]}}]},MMVs:function(e,t,n){e.exports=function(){var e=!1;-1!==navigator.appVersion.indexOf("MSIE 10")&&(e=!0);var t,n=[],r="object"==typeof document&&document,o=e?r.documentElement.doScroll("left"):r.documentElement.doScroll,a=r&&(o?/^loaded|^c/:/^loaded|^i|^c/).test(r.readyState);return!a&&r&&r.addEventListener("DOMContentLoaded",t=function(){for(r.removeEventListener("DOMContentLoaded",t),a=1;t=n.shift();)t()}),function(e){a?setTimeout(e,0):n.push(e)}}()},NSX3:function(e,t,n){"use strict";n.r(t);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(e){e.addEventListener("updatefound",()=>{Object(r.apiRunner)("onServiceWorkerUpdateFound",{serviceWorker:e});const t=e.installing;console.log("installingWorker",t),t.addEventListener("statechange",()=>{switch(t.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,Object(r.apiRunner)("onServiceWorkerUpdateReady",{serviceWorker:e}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),Object(r.apiRunner)("onServiceWorkerInstalled",{serviceWorker:e}));break;case"redundant":console.error("The installing service worker became redundant."),Object(r.apiRunner)("onServiceWorkerRedundant",{serviceWorker:e});break;case"activated":Object(r.apiRunner)("onServiceWorkerActive",{serviceWorker:e})}})})})).catch((function(e){console.error("Error during service worker registration:",e)}))},NsGk:function(e,t,n){t.components={"component---cache-caches-gatsby-plugin-offline-app-shell-js":()=>n.e(6).then(n.t.bind(null,"zXQ9",7)),"component---src-pages-404-js":()=>Promise.all([n.e(0),n.e(1),n.e(7)]).then(n.bind(null,"w2l6")),"component---src-pages-about-js":()=>Promise.all([n.e(0),n.e(1),n.e(3),n.e(8)]).then(n.bind(null,"3XHS")),"component---src-pages-contact-js":()=>Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,"Cuy+")),"component---src-pages-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(10)]).then(n.bind(null,"RXBc")),"component---src-pages-music-discography-index-js":()=>Promise.all([n.e(2),n.e(0),n.e(1),n.e(11)]).then(n.bind(null,"PTa2")),"component---src-pages-music-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(12)]).then(n.bind(null,"e0vg")),"component---src-pages-music-teaching-resources-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(3),n.e(13)]).then(n.bind(null,"0l1m")),"component---src-pages-other-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(14)]).then(n.bind(null,"lw47")),"component---src-pages-reading-list-index-js":()=>Promise.all([n.e(2),n.e(0),n.e(1),n.e(3),n.e(15)]).then(n.bind(null,"14IF")),"component---src-pages-tags-js":()=>Promise.all([n.e(0),n.e(1),n.e(16)]).then(n.bind(null,"enK5")),"component---src-pages-tech-index-js":()=>Promise.all([n.e(0),n.e(1),n.e(17)]).then(n.bind(null,"hYRG")),"component---src-pages-tech-projects-index-js":()=>Promise.all([n.e(2),n.e(0),n.e(1),n.e(18)]).then(n.bind(null,"2BA8")),"component---src-templates-blog-post-js":()=>Promise.all([n.e(0),n.e(1),n.e(19)]).then(n.bind(null,"yZlL")),"component---src-templates-tags-js":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,"MN1z"))}},PJYZ:function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},QLaP:function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,s],l=0;(c=new Error(t.replace(/%s/g,(function(){return u[l++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},SksO:function(e,t){function n(t,r){return e.exports=n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,n(t,r)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports},TqRt:function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},UxWs:function(e,t,n){"use strict";n.r(t);var r=n("dI71"),o=n("xtsi"),a=n("q1tI"),i=n.n(a),s=n("i8i4"),c=n.n(s),u=n("YwZP"),l=n("7hJ6"),p=n("MMVs"),h=n.n(p),f=n("Wbzz"),d=n("emEt"),m=n("YLt+"),g=n("5yr3");const v={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"};var y=n("9Xx/"),b=n("+ZDr");const w=new Map,P=new Map;function R(e){let t=w.get(e);return t||(t=P.get(e.toLowerCase())),null!=t&&(window.___replace(t.toPath),!0)}m.forEach(e=>{e.ignoreCase?P.set(e.fromPath,e):w.set(e.fromPath,e)});const _=(e,t)=>{R(e.pathname)||Object(o.apiRunner)("onPreRouteUpdate",{location:e,prevLocation:t})},C=(e,t)=>{R(e.pathname)||Object(o.apiRunner)("onRouteUpdate",{location:e,prevLocation:t})},S=function(e,t){if(void 0===t&&(t={}),"number"==typeof e)return void y.c.navigate(e);let{pathname:n}=Object(b.parsePath)(e),r=w.get(n);if(r||(r=P.get(n.toLowerCase())),r&&(e=r.toPath,n=Object(b.parsePath)(e).pathname),window.___swUpdated)return void(window.location=n);const a=setTimeout(()=>{g.a.emit("onDelayedLoadPageResources",{pathname:n}),Object(o.apiRunner)("onRouteUpdateDelayed",{location:window.location})},1e3);d.default.loadPage(n).then(r=>{if(!r||r.status===d.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"}),window.location=n),Object(u.navigate)(e,t),clearTimeout(a)})};function O(e,t){let{location:n}=t;const{pathname:r,hash:a}=n,i=Object(o.apiRunner)("shouldUpdateScroll",{prevRouterProps:e,pathname:r,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(i.length>0)return i[i.length-1];if(e){const{location:{pathname:t}}=e;if(t===r)return a?decodeURI(a.slice(1)):[0,0]}return!0}let j=function(e){function t(t){var n;return(n=e.call(this,t)||this).announcementRef=i.a.createRef(),n}Object(r.a)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){requestAnimationFrame(()=>{let e="new page at "+this.props.location.pathname;document.title&&(e=document.title);const t=document.querySelectorAll("#gatsby-focus-wrapper h1");t&&t.length&&(e=t[0].textContent);const n="Navigated to "+e;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}})},n.render=function(){return i.a.createElement("div",Object.assign({},v,{ref:this.announcementRef}))},t}(i.a.Component);const x=(e,t)=>{var n,r;return e.href!==t.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==t||null===(r=t.state)||void 0===r?void 0:r.key)};let E=function(e){function t(t){var n;return n=e.call(this,t)||this,_(t.location,null),n}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){C(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!x(e.location,this.props.location)&&(_(this.props.location,e.location),!0)},n.componentDidUpdate=function(e){x(e.location,this.props.location)&&C(this.props.location,e.location)},n.render=function(){return i.a.createElement(i.a.Fragment,null,this.props.children,i.a.createElement(j,{location:location}))},t}(i.a.Component);var k=n("IOVJ"),L=n("NsGk"),T=n.n(L);function D(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}var A=function(e){function t(t){var n;n=e.call(this)||this;const{location:r,pageResources:o}=t;return n.state={location:{...r},pageResources:o||d.default.loadPageSync(r.pathname)},n}Object(r.a)(t,e),t.getDerivedStateFromProps=function(e,t){let{location:n}=e;if(t.location.href!==n.href){return{pageResources:d.default.loadPageSync(n.pathname),location:{...n}}}return{location:{...n}}};var n=t.prototype;return n.loadResources=function(e){d.default.loadPage(e).then(t=>{t&&t.status!==d.PageResourceStatus.Error?this.setState({location:{...window.location},pageResources:t}):(window.history.replaceState({},"",location.href),window.location=e)})},n.shouldComponentUpdate=function(e,t){return t.pageResources?this.state.pageResources!==t.pageResources||(this.state.pageResources.component!==t.pageResources.component||(this.state.pageResources.json!==t.pageResources.json||(!(this.state.location.key===t.location.key||!t.pageResources.page||!t.pageResources.page.matchPath&&!t.pageResources.page.path)||function(e,t,n){return D(e.props,t)||D(e.state,n)}(this,e,t)))):(this.loadResources(e.location.pathname),!1)},n.render=function(){return this.props.children(this.state)},t}(i.a.Component),q=n("cSJ8"),M=n("JeVI");const I=new d.ProdLoader(T.a,M);Object(d.setLoader)(I),I.setApiRunner(o.apiRunner),window.asyncRequires=T.a,window.___emitter=g.a,window.___loader=d.publicLoader,y.c.listen(e=>{e.location.action=e.action}),window.___push=e=>S(e,{replace:!1}),window.___replace=e=>S(e,{replace:!0}),window.___navigate=(e,t)=>S(e,t),R(window.location.pathname),Object(o.apiRunnerAsync)("onClientEntry").then(()=>{Object(o.apiRunner)("registerServiceWorker").length>0&&n("NSX3");const e=e=>i.a.createElement(u.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},i.a.createElement(k.a,e)),t=i.a.createContext({});let a=function(e){function n(){return e.apply(this,arguments)||this}return Object(r.a)(n,e),n.prototype.render=function(){const{children:e}=this.props;return i.a.createElement(u.Location,null,n=>{let{location:r}=n;return i.a.createElement(A,{location:r},n=>{let{pageResources:r,location:o}=n;const a=Object(d.getStaticQueryResults)();return i.a.createElement(f.StaticQueryContext.Provider,{value:a},i.a.createElement(t.Provider,{value:{pageResources:r,location:o}},e))})})},n}(i.a.Component),s=function(n){function o(){return n.apply(this,arguments)||this}return Object(r.a)(o,n),o.prototype.render=function(){return i.a.createElement(t.Consumer,null,t=>{let{pageResources:n,location:r}=t;return i.a.createElement(E,{location:r},i.a.createElement(l.ScrollContext,{location:r,shouldUpdateScroll:O},i.a.createElement(u.Router,{basepath:"",location:r,id:"gatsby-focus-wrapper"},i.a.createElement(e,Object.assign({path:"/404.html"===n.page.path?Object(q.a)(r.pathname,""):encodeURI(n.page.matchPath||n.page.path)},this.props,{location:r,pageResources:n},n.json)))))})},o}(i.a.Component);const{pagePath:p,location:m}=window;p&&""+p!==m.pathname&&!(I.findMatchPath(Object(q.a)(m.pathname,""))||"/404.html"===p||p.match(/^\/404\/?$/)||p.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&Object(u.navigate)(""+p+m.search+m.hash,{replace:!0}),d.publicLoader.loadPage(m.pathname).then(e=>{if(!e||e.status===d.PageResourceStatus.Error)throw new Error("page resources for "+m.pathname+" not found. Not rendering React");window.___webpackCompilationHash=e.page.webpackCompilationHash;const t=Object(o.apiRunner)("wrapRootElement",{element:i.a.createElement(s,null)},i.a.createElement(s,null),e=>{let{result:t}=e;return{element:t}}).pop(),n=()=>i.a.createElement(a,null,t),r=Object(o.apiRunner)("replaceHydrateFunction",void 0,c.a.hydrate)[0];h()(()=>{r(i.a.createElement(n,null),"undefined"!=typeof window?document.getElementById("___gatsby"):void 0,()=>{Object(o.apiRunner)("onInitialClientRender")})})})})},VbXa:function(e,t,n){var r=n("SksO");e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},Wbzz:function(e,t,n){"use strict";n.r(t),n.d(t,"graphql",(function(){return m})),n.d(t,"StaticQueryContext",(function(){return p})),n.d(t,"StaticQuery",(function(){return f})),n.d(t,"useStaticQuery",(function(){return d})),n.d(t,"prefetchPathname",(function(){return l}));var r=n("q1tI"),o=n.n(r),a=n("+ZDr"),i=n.n(a);n.d(t,"Link",(function(){return i.a})),n.d(t,"withAssetPrefix",(function(){return a.withAssetPrefix})),n.d(t,"withPrefix",(function(){return a.withPrefix})),n.d(t,"parsePath",(function(){return a.parsePath})),n.d(t,"navigate",(function(){return a.navigate})),n.d(t,"push",(function(){return a.push})),n.d(t,"replace",(function(){return a.replace})),n.d(t,"navigateTo",(function(){return a.navigateTo}));var s=n("7hJ6");n.d(t,"useScrollRestoration",(function(){return s.useScrollRestoration}));var c=n("lw3w"),u=n.n(c);n.d(t,"PageRenderer",(function(){return u.a}));const l=n("emEt").default.enqueue,p=o.a.createContext({});function h(e){let{staticQueryData:t,data:n,query:r,render:a}=e;const i=n?n.data:t[r]&&t[r].data;return o.a.createElement(o.a.Fragment,null,i&&a(i),!i&&o.a.createElement("div",null,"Loading (StaticQuery)"))}const f=e=>{const{data:t,query:n,render:r,children:a}=e;return o.a.createElement(p.Consumer,null,e=>o.a.createElement(h,{data:t,query:n,render:r||a,staticQueryData:e}))},d=e=>{var t;o.a.useContext;const n=o.a.useContext(p);if(isNaN(Number(e)))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`"+e+"`);\n");if(null!==(t=n[e])&&void 0!==t&&t.data)return n[e].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 m(){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.")}},"YLt+":function(e){e.exports=JSON.parse('[{"fromPath":"/music/10-issues-songwriters-face/","ignoreCase":false,"toPath":"/10-issues-songwriters-face/"},{"fromPath":"/music/about-songmind-studios/","ignoreCase":false,"toPath":"/about-songmind-studios/"},{"fromPath":"/music/organizing-creativity-3-step-process/","ignoreCase":false,"toPath":"/organizing-creativity-3-step-process/"},{"fromPath":"/music/honing-strengths-with-a-student-evaluation/","ignoreCase":false,"toPath":"/honing-strengths-with-a-student-evaluation/"},{"fromPath":"/music/songwriting-and-serendipity/","ignoreCase":false,"toPath":"/songwriting-and-serendipity/"},{"fromPath":"/music/songwriting-simplicity-complexity/","ignoreCase":false,"toPath":"/songwriting-simplicity-complexity/"},{"fromPath":"/music/songwriting-snippet-challenge/","ignoreCase":false,"toPath":"/songwriting-snippet-challenge/"},{"fromPath":"/music/5-dysfunctions-of-a-band/","ignoreCase":false,"toPath":"/5-dysfunctions-of-a-band/"},{"fromPath":"/music/guide-to-practicing-overcoming-plateaus/","ignoreCase":false,"toPath":"/guide-to-practicing-overcoming-plateaus/"},{"fromPath":"/music/preparing-demo-for-studio/","ignoreCase":false,"toPath":"/preparing-demo-for-studio/"},{"fromPath":"/other/2020-decade-in-review/","ignoreCase":false,"toPath":"/2020-decade-in-review/"},{"fromPath":"/tech/catching-handling-errors-promise-chains/","ignoreCase":false,"toPath":"/catching-handling-errors-promise-chains/"},{"fromPath":"/javascript/2019/04/03/catching-handling-errors-promise-chains.html","ignoreCase":false,"toPath":"/catching-handling-errors-promise-chains/"},{"fromPath":"/tech/circular-dependencies-bug/","ignoreCase":false,"toPath":"/circular-dependencies-bug/"},{"fromPath":"/javascript/2019/03/23/circular-dependencies-bug.html","ignoreCase":false,"toPath":"/circular-dependencies-bug/"},{"fromPath":"/tech/code-style-guide/","ignoreCase":false,"toPath":"/code-style-guide/"},{"fromPath":"/javascript/2019/03/18/code-style-guide.html","ignoreCase":false,"toPath":"/code-style-guide/"},{"fromPath":"/tech/2022-12-05-random-music-generators-news/","ignoreCase":false,"toPath":"/2022-12-05-random-music-generators-news/"},{"fromPath":"/tech/contributing-to-open-source-is-type-checking/","ignoreCase":false,"toPath":"/contributing-to-open-source-is-type-checking/"},{"fromPath":"/tech/git-commit-format-squash/","ignoreCase":false,"toPath":"/git-commit-format-squash/"},{"fromPath":"/git/2019/03/24/git-commit-format-squash.html","ignoreCase":false,"toPath":"/git-commit-format-squash/"},{"fromPath":"/tech/how-to-squash-commits/","ignoreCase":false,"toPath":"/how-to-squash-commits/"},{"fromPath":"/git/2019/12/20/how-to-squash-commits.html","ignoreCase":false,"toPath":"/how-to-squash-commits/"},{"fromPath":"/tech/custom-type-checking-isnan/","ignoreCase":false,"toPath":"/custom-type-checking-isnan/"},{"fromPath":"/javascript/2019/03/22/custom-type-checking-isnan.html","ignoreCase":false,"toPath":"/custom-type-checking-isnan/"},{"fromPath":"/tech/hash-tables-js/","ignoreCase":false,"toPath":"/hash-tables-js/"},{"fromPath":"/javascript/computer%20science/2018/02/20/hash-tables-js.html","ignoreCase":false,"toPath":"/hash-tables-js/"},{"fromPath":"/javascript/computer_science/2018/02/20/hash-tables-js.html","ignoreCase":false,"toPath":"/hash-tables-js/"},{"fromPath":"/tech/intro-to-js-frameworks01/","ignoreCase":false,"toPath":"/intro-to-js-frameworks01/"},{"fromPath":"/javascript/2017/09/01/intro-to-js-frameworks01.html","ignoreCase":false,"toPath":"/intro-to-js-frameworks01/"},{"fromPath":"/tech/marketable-programming-skills/","ignoreCase":false,"toPath":"/marketable-programming-skills/"},{"fromPath":"/career/2017/08/01/marketable-programming-skills.html","ignoreCase":false,"toPath":"/marketable-programming-skills/"},{"fromPath":"/tech/now-attending-fullstack/","ignoreCase":false,"toPath":"/now-attending-fullstack/"},{"fromPath":"/javascript/2017/12/26/now-attending-fullstack.html","ignoreCase":false,"toPath":"/now-attending-fullstack/"},{"fromPath":"/tech/python-classes-guess-the-number/","ignoreCase":false,"toPath":"/python-classes-guess-the-number/"},{"fromPath":"/python/2017/07/01/number-guess-oop.html","ignoreCase":false,"toPath":"/python-classes-guess-the-number/"},{"fromPath":"/career/2019/07/02/prepare-for-initial-screens.html","ignoreCase":false,"toPath":"/prepare-for-initial-screens/"},{"fromPath":"/tech/prepare-for-initial-screens/","ignoreCase":false,"toPath":"/prepare-for-initial-screens/"},{"fromPath":"/career/2018/07/18/recruiters-and-junior-devs.html","ignoreCase":false,"toPath":"/recruiters-and-junior-devs/"},{"fromPath":"/tech/recruiters-and-junior-devs/","ignoreCase":false,"toPath":"/recruiters-and-junior-devs/"},{"fromPath":"/tech/recursive-filter-function/","ignoreCase":false,"toPath":"/recursive-filter-function/"},{"fromPath":"/javascript/2019/03/28/recursive-filter-function.html","ignoreCase":false,"toPath":"/recursive-filter-function/"},{"fromPath":"/tech/reflections-coding-bootcamp/","ignoreCase":false,"toPath":"/reflections-coding-bootcamp/"},{"fromPath":"/javascript/2018/04/16/reflections-coding-bootcamp.html","ignoreCase":false,"toPath":"/reflections-coding-bootcamp/"},{"fromPath":"/tech/2020-01-27-random-music-generators-news/","ignoreCase":false,"toPath":"/2020-01-27-random-music-generators-news/"},{"fromPath":"/tech/website-makeover-gatsby/","ignoreCase":false,"toPath":"/website-makeover-gatsby/"},{"fromPath":"/gatsbyjs/2020/01/08/website-makeover-gatsby.html","ignoreCase":false,"toPath":"/website-makeover-gatsby/"},{"fromPath":"/tech/comparing-javascript-test-runners/","ignoreCase":false,"toPath":"/comparing-javascript-test-runners/"},{"fromPath":"/tech/debugging-strategies/","ignoreCase":false,"toPath":"/debugging-strategies-checklist/"},{"fromPath":"/computer%20science/2018/05/08/debugging-strategies.html","ignoreCase":false,"toPath":"/debugging-strategies-checklist/"},{"fromPath":"/computer_science/2018/05/08/debugging-strategies.html","ignoreCase":false,"toPath":"/debugging-strategies-checklist/"}]')},YVoz:function(e,t,n){"use strict";e.exports=Object.assign},YwZP:function(e,t,n){"use strict";n.r(t),n.d(t,"Link",(function(){return T})),n.d(t,"Location",(function(){return b})),n.d(t,"LocationProvider",(function(){return w})),n.d(t,"Match",(function(){return U})),n.d(t,"Redirect",(function(){return I})),n.d(t,"Router",(function(){return _})),n.d(t,"ServerLocation",(function(){return P})),n.d(t,"isRedirect",(function(){return A})),n.d(t,"redirectTo",(function(){return q})),n.d(t,"useLocation",(function(){return W})),n.d(t,"useNavigate",(function(){return F})),n.d(t,"useParams",(function(){return N})),n.d(t,"useMatch",(function(){return B})),n.d(t,"BaseContext",(function(){return R}));var r=n("q1tI"),o=n.n(r),a=n("QLaP"),i=n.n(a),s=n("nqlD"),c=n.n(s),u=n("94VI"),l=n("LYrO");n.d(t,"matchPath",(function(){return l.match}));var p=n("9Xx/");n.d(t,"createHistory",(function(){return p.a})),n.d(t,"createMemorySource",(function(){return p.b})),n.d(t,"navigate",(function(){return p.d})),n.d(t,"globalHistory",(function(){return p.c}));var h=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function g(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var v=function(e,t){var n=c()(t);return n.displayName=e,n},y=v("Location"),b=function(e){var t=e.children;return o.a.createElement(y.Consumer,null,(function(e){return e?t(e):o.a.createElement(w,null,t)}))},w=function(e){function t(){var n,r;d(this,t);for(var o=arguments.length,a=Array(o),i=0;i-1?(a=t.substring(0,r),i=t.substring(r)):a=t,o.a.createElement(y.Provider,{value:{location:{pathname:a,search:i,hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},R=v("Base",{baseuri:"/",basepath:"/"}),_=function(e){return o.a.createElement(R.Consumer,null,(function(t){return o.a.createElement(b,null,(function(n){return o.a.createElement(C,h({},t,n,e))}))}))},C=function(e){function t(){return d(this,t),m(this,e.apply(this,arguments))}return g(t,e),t.prototype.render=function(){var e=this.props,t=e.location,n=e.navigate,r=e.basepath,a=e.primary,i=e.children,s=(e.baseuri,e.component),c=void 0===s?"div":s,u=f(e,["location","navigate","basepath","primary","children","baseuri","component"]),p=o.a.Children.toArray(i).reduce((function(e,t){var n=G(r)(t);return e.concat(n)}),[]),d=t.pathname,m=Object(l.pick)(p,d);if(m){var g=m.params,v=m.uri,y=m.route,b=m.route.value;r=y.default?r:y.path.replace(/\*$/,"");var w=h({},g,{uri:v,location:t,navigate:function(e,t){return n(Object(l.resolve)(e,v),t)}}),P=o.a.cloneElement(b,w,b.props.children?o.a.createElement(_,{location:t,primary:a},b.props.children):void 0),C=a?O:c,S=a?h({uri:v,location:t,component:c},u):u;return o.a.createElement(R.Provider,{value:{baseuri:v,basepath:r}},o.a.createElement(C,S,P))}return null},t}(o.a.PureComponent);C.defaultProps={primary:!0};var S=v("Focus"),O=function(e){var t=e.uri,n=e.location,r=e.component,a=f(e,["uri","location","component"]);return o.a.createElement(S.Consumer,null,(function(e){return o.a.createElement(E,h({},a,{component:r,requestFocus:e,uri:t,location:n}))}))},j=!0,x=0,E=function(e){function t(){var n,r;d(this,t);for(var o=arguments.length,a=Array(o),i=0;i script[src],\n head > link[href],\n head > style[data-href]\n "),i=[].slice.call(a).filter((function(e){return"LINK"!==e.tagName||r.test(e.getAttribute("rel"))})).map((function(e){return e.src||e.href||e.getAttribute("data-href")})),s=[];o.forEach((function(e){var r=t(e);s.push.apply(s,r),n.active.postMessage({gatsbyApi:"setPathResources",path:e,resources:r})})),[].concat(i,s).forEach((function(e){var t=document.createElement("link");t.rel="prefetch",t.href=e,t.onload=t.remove,t.onerror=t.remove,document.head.appendChild(t)}))}},t.onRouteUpdate=function(e){var t=e.location,n=e.getResourceURLsForPathname;a(t.pathname.replace("",""),n),"serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"enableOfflineShell"})},t.onPostPrefetchPathname=function(e){a(e.pathname,e.getResourceURLsForPathname)}},emEt:function(e,t,n){"use strict";n.r(t),n.d(t,"PageResourceStatus",(function(){return p})),n.d(t,"BaseLoader",(function(){return g})),n.d(t,"ProdLoader",(function(){return b})),n.d(t,"setLoader",(function(){return w})),n.d(t,"publicLoader",(function(){return P})),n.d(t,"getStaticQueryResults",(function(){return R}));var r=n("dI71");function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),Object.keys(t).forEach(e=>{o.setAttribute(e,t[e])}),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=()=>{200===r.status?t():n()},r.send(null)})},s={};var c=function(e,t){return new Promise(n=>{s[e]?n():i(e,t).then(()=>{n(),s[e]=!0}).catch(()=>{})})},u=n("5yr3"),l=n("30RF");const p={Error:"error",Success:"success"},h=e=>e&&e.default||e,f=e=>{var t;return"/page-data/"+("/"===e?"index":t=(t="/"===(t=e)[0]?t.slice(1):t).endsWith("/")?t.slice(0,-1):t)+"/page-data.json"};function d(e,t){return void 0===t&&(t="GET"),new Promise((n,r)=>{const o=new XMLHttpRequest;o.open(t,e,!0),o.onreadystatechange=()=>{4==o.readyState&&n(o)},o.send(null)})}const m=function(e,t){void 0===t&&(t=null);const n={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes};return{component:t,json:e.result,page:n}};let g=function(){function e(e,t){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=e,Object(l.d)(t)}var t=e.prototype;return t.memoizedGet=function(e){let t=this.inFlightNetworkRequests.get(e);return t||(t=d(e,"GET"),this.inFlightNetworkRequests.set(e,t)),t.then(t=>(this.inFlightNetworkRequests.delete(e),t)).catch(t=>{throw this.inFlightNetworkRequests.delete(e),t})},t.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some(e=>e)},t.fetchPageDataJson=function(e){const{pagePath:t,retries:n=0}=e,r=f(t);return this.memoizedGet(r).then(r=>{const{status:o,responseText:a}=r;if(200===o)try{const t=JSON.parse(a);if(void 0===t.path)throw new Error("not a valid pageData response");return Object.assign(e,{status:p.Success,payload:t})}catch(i){}return 404===o||200===o?"/404.html"===t?Object.assign(e,{status:p.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?Object.assign(e,{status:p.Error}):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})})},t.loadPageDataJson=function(e){const t=Object(l.b)(e);if(this.pageDataDb.has(t)){const e=this.pageDataDb.get(t);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:t}).then(e=>(this.pageDataDb.set(t,e),e))},t.findMatchPath=function(e){return Object(l.a)(e)},t.loadPage=function(e){const t=Object(l.b)(e);if(this.pageDb.has(t)){const e=this.pageDb.get(t);return Promise.resolve(e.payload)}if(this.inFlightDb.has(t))return this.inFlightDb.get(t);const n=Promise.all([this.loadAppData(),this.loadPageDataJson(t)]).then(e=>{const n=e[1];if(n.status===p.Error)return{status:p.Error};let r=n.payload;const{componentChunkName:o,staticQueryHashes:a=[]}=r,i={},s=this.loadComponent(o).then(t=>{let o;return i.createdAt=new Date,t?(i.status=p.Success,!0===n.notFound&&(i.notFound=!0),r=Object.assign(r,{webpackCompilationHash:e[0]?e[0].webpackCompilationHash:""}),o=m(r,t)):i.status=p.Error,o}),c=Promise.all(a.map(e=>{if(this.staticQueryDb[e]){const t=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:t}}return this.memoizedGet("/page-data/sq/d/"+e+".json").then(t=>{const n=JSON.parse(t.responseText);return{staticQueryHash:e,jsonPayload:n}})})).then(e=>{const t={};return e.forEach(e=>{let{staticQueryHash:n,jsonPayload:r}=e;t[n]=r,this.staticQueryDb[n]=r}),t});return Promise.all([s,c]).then(e=>{let n,[r,o]=e;return r&&(n={...r,staticQueryResults:o},i.payload=n,u.a.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(t,i),n})});return n.then(e=>{this.inFlightDb.delete(t)}).catch(e=>{throw this.inFlightDb.delete(t),e}),this.inFlightDb.set(t,n),n},t.loadPageSync=function(e){const t=Object(l.b)(e);if(this.pageDb.has(t)){return this.pageDb.get(t).payload}},t.shouldPrefetch=function(e){return!!(()=>{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(e)},t.prefetch=function(e){if(!this.shouldPrefetch(e))return!1;if(this.prefetchTriggered.has(e)||(this.apiRunner("onPrefetchPathname",{pathname:e}),this.prefetchTriggered.add(e)),this.prefetchDisabled)return!1;const t=Object(l.b)(e);return this.doPrefetch(t).then(()=>{this.prefetchCompleted.has(e)||(this.apiRunner("onPostPrefetchPathname",{pathname:e}),this.prefetchCompleted.add(e))}),!0},t.doPrefetch=function(e){const t=f(e);return c(t,{crossOrigin:"anonymous",as:"fetch"}).then(()=>this.loadPageDataJson(e))},t.hovering=function(e){this.loadPage(e)},t.getResourceURLsForPathname=function(e){const t=Object(l.b)(e),n=this.pageDataDb.get(t);if(n){const e=m(n.payload);return[].concat(a(v(e.page.componentChunkName)),[f(t)])}return null},t.isPageNotFound=function(e){const t=Object(l.b)(e),n=this.pageDb.get(t);return!n||n.notFound},t.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/page-data/app-data.json").then(t=>{const{status:n,responseText:r}=t;let o;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(r);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");o=e}catch(a){}return o})},e}();const v=e=>(window.___chunkMapping[e]||[]).map(e=>""+e);let y,b=function(e){function t(t,n){return e.call(this,e=>t.components[e]?t.components[e]().then(h).catch(()=>null):Promise.resolve(),n)||this}Object(r.a)(t,e);var n=t.prototype;return n.doPrefetch=function(t){return e.prototype.doPrefetch.call(this,t).then(e=>{if(e.status!==p.Success)return Promise.resolve();const t=e.payload,n=t.componentChunkName,r=v(n);return Promise.all(r.map(c)).then(()=>t)})},n.loadPageDataJson=function(t){return e.prototype.loadPageDataJson.call(this,t).then(e=>e.notFound?d(t,"HEAD").then(t=>200===t.status?{status:p.Error}:e):e)},t}(g);const w=e=>{y=e},P={getResourcesForPathname:e=>(console.warn("Warning: getResourcesForPathname is deprecated. Use loadPage instead"),y.i.loadPage(e)),getResourcesForPathnameSync:e=>(console.warn("Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead"),y.i.loadPageSync(e)),enqueue:e=>y.prefetch(e),getResourceURLsForPathname:e=>y.getResourceURLsForPathname(e),loadPage:e=>y.loadPage(e),loadPageSync:e=>y.loadPageSync(e),prefetch:e=>y.prefetch(e),isPageNotFound:e=>y.isPageNotFound(e),hovering:e=>y.hovering(e),loadAppData:()=>y.loadAppData()};t.default=P;function R(){return y?y.staticQueryDb:{}}},hd9s:function(e,t,n){"use strict";var r=n("284h"),o=n("TqRt");t.__esModule=!0,t.ScrollContainer=void 0;var a=o(n("pVnL")),i=o(n("VbXa")),s=r(n("q1tI")),c=o(n("i8i4")),u=o(n("17x9")),l=n("Enzk"),p=n("YwZP"),h={scrollKey:u.default.string.isRequired,shouldUpdateScroll:u.default.func,children:u.default.element.isRequired},f=function(e){function t(t){return e.call(this,t)||this}(0,i.default)(t,e);var n=t.prototype;return n.componentDidMount=function(){var e=this,t=c.default.findDOMNode(this),n=this.props,r=n.location,o=n.scrollKey;if(t){t.addEventListener("scroll",(function(){e.props.context.save(r,o,t.scrollTop)}));var a=this.props.context.read(r,o);t.scrollTo(0,a||0)}},n.render=function(){return this.props.children},t}(s.Component),d=function(e){return s.createElement(p.Location,null,(function(t){var n=t.location;return s.createElement(l.ScrollContext.Consumer,null,(function(t){return s.createElement(f,(0,a.default)({},e,{context:t,location:n}))}))}))};t.ScrollContainer=d,d.propTypes=h},hqbx:function(e,t,n){"use strict";var r=n("TqRt");t.__esModule=!0,t.default=function(e,t,n){var r=m(n,t);return e.addEventListener("click",r),function(){return e.removeEventListener("click",r)}},t.routeThroughBrowserOrApp=t.hashShouldBeFollowed=t.pathIsNotHandledByApp=t.urlsAreOnSameOrigin=t.authorIsForcingNavigation=t.anchorsTargetIsEquivalentToSelf=t.findClosestAnchor=t.navigationWasHandledElsewhere=t.slashedPathname=t.userIsForcingNavigation=void 0;var o=r(n("oxjq")),a=n("Wbzz"),i=function(e){return 0!==e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey};t.userIsForcingNavigation=i;var s=function(e){return"/"===e[0]?e:"/"+e};t.slashedPathname=s;var c=function(e){return e.defaultPrevented};t.navigationWasHandledElsewhere=c;var u=function(e){for(;e.parentNode;e=e.parentNode)if("a"===e.nodeName.toLowerCase())return e;return null};t.findClosestAnchor=u;var l=function(e){return!1===e.hasAttribute("target")||null==e.target||["_self",""].includes(e.target)||"_parent"===e.target&&(!e.ownerDocument.defaultView.parent||e.ownerDocument.defaultView.parent===e.ownerDocument.defaultView)||"_top"===e.target&&(!e.ownerDocument.defaultView.top||e.ownerDocument.defaultView.top===e.ownerDocument.defaultView)};t.anchorsTargetIsEquivalentToSelf=l;var p=function(e){return!0===e.hasAttribute("download")||!1===l(e)};t.authorIsForcingNavigation=p;var h=function(e,t){return e.protocol===t.protocol&&e.host===t.host};t.urlsAreOnSameOrigin=h;var f=function(e,t){return!1===t.test(s(e.pathname))||-1!==e.pathname.search(/^.*\.((?!htm)[a-z0-9]{1,5})$/i)};t.pathIsNotHandledByApp=f;var d=function(e,t){return""!==t.hash&&(""===t.pathname||t.pathname===e.pathname)};t.hashShouldBeFollowed=d;var m=function(e,t){return function(n){if(window.___failedResources)return!0;if(i(n))return!0;if(c(n))return!0;var r=u(n.target);if(null==r)return!0;if(p(r))return!0;var l=document.createElement("a");""!==r.href&&(l.href=r.href),"SVGAnimatedString"in window&&r.href instanceof SVGAnimatedString&&(l.href=r.href.animVal);var m=document.createElement("a");if(m.href=window.location.href,!1===h(m,l))return!0;var g=new RegExp("^"+(0,o.default)((0,a.withPrefix)("/")));if(f(l,g))return!0;if(d(m,l))return!0;if(t.excludePattern&&new RegExp(t.excludePattern).test(l.pathname))return!0;n.preventDefault();var v=s(l.pathname).replace(g,"/");return e(""+v+l.search+l.hash),!1}};t.routeThroughBrowserOrApp=m},lw3w:function(e,t,n){var r;e.exports=(r=n("rzlk"))&&r.default||r},npZl:function(e,t,n){"use strict";var r=n("TqRt");n("Wbzz"),r(n("9hXx"))},nqlD:function(e,t,n){const{createContext:r}=n("q1tI");e.exports=r,e.exports.default=r},nwwn:function(e,t,n){"use strict";t.DEFAULT_OPTIONS={maxWidth:650,wrapperStyle:"",backgroundColor:"white",linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,withWebp:!1,withAvif:!1,tracedSVG:!1,loading:"lazy",disableBgImageOnAlpha:!1,disableBgImage:!1},t.EMPTY_ALT="GATSBY_EMPTY_ALT",t.imageClass="gatsby-resp-image-image",t.imageWrapperClass="gatsby-resp-image-wrapper",t.imageBackgroundClass="gatsby-resp-image-background-image"},oxjq:function(e,t,n){"use strict";var r=/[|\\{}()[\]^$+*?.]/g;e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(r,"\\$&")}},pVnL:function(e,t){function n(){return e.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{location:t}=e;const n=a.default.loadPageSync(t.pathname);return n?o.a.createElement(i.a,{location:t,pageResources:n,...n.json}):null}},s4An:function(e,t,n){"use strict";function r(e,t){return(r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}n.d(t,"a",(function(){return r}))},"t+Ps":function(e,t,n){},"xMo/":function(e,t,n){},xtsi:function(e,t,n){const r=n("LeKB"),{getResourcesForPathname:o,getResourcesForPathnameSync:a,getResourceURLsForPathname:i,loadPage:s,loadPageSync:c}=n("emEt").publicLoader;t.apiRunner=function(e,t,n,u){void 0===t&&(t={});let l=r.map(n=>{if(!n.plugin[e])return;t.getResourcesForPathnameSync=a,t.getResourcesForPathname=o,t.getResourceURLsForPathname=i,t.loadPage=s,t.loadPageSync=c;const r=n.plugin[e](t,n.options);return r&&u&&(t=u({args:t,result:r,plugin:n})),r});return l=l.filter(e=>void 0!==e),l.length>0?l:n?[n]:[]},t.apiRunnerAsync=(e,t,n)=>r.reduce((n,r)=>r.plugin[e]?n.then(()=>r.plugin[e](t,r.options)):n,Promise.resolve())}},[["UxWs",4,2,21]]]); +//# sourceMappingURL=app-dd8e35d448b2c1e30855.js.map \ No newline at end of file diff --git a/app-eac1380cd8916e998c4f.js.LICENSE.txt b/app-dd8e35d448b2c1e30855.js.LICENSE.txt similarity index 100% rename from app-eac1380cd8916e998c4f.js.LICENSE.txt rename to app-dd8e35d448b2c1e30855.js.LICENSE.txt diff --git a/app-eac1380cd8916e998c4f.js.map b/app-dd8e35d448b2c1e30855.js.map similarity index 99% rename from app-eac1380cd8916e998c4f.js.map rename to app-dd8e35d448b2c1e30855.js.map index 2f9c2dc..17570a2 100644 --- a/app-eac1380cd8916e998c4f.js.map +++ b/app-dd8e35d448b2c1e30855.js.map @@ -1 +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:///./.cache/emitter.js","webpack:///./node_modules/mitt/dist/mitt.es.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/@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/setPrototypeOf.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/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.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:///./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:///./.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/gatsby-remark-images/constants.js","webpack:///./node_modules/escape-string-regexp/index.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/gatsby-remark-images/gatsby-browser.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./.cache/api-runner-browser.js"],"names":["_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","getGlobalPathPrefix","navigateTo","replace","push","navigate","default","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_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","GatsbyLinkLocationWrapper","props","createElement","Location","_ref2","location","GatsbyLink","_location","_React$Component","_this","call","this","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","className","filter","Boolean","join","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","_prefetch","currentPath","pathname","rewrittenPath","to","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","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","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","r","t","module","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","i","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","ScrollContainer","ScrollHandler","_scrollContainer","_useScrollRestoration","source","excluded","sourceKeys","keys","polyfill","_extends","assign","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","onRouteUpdate","woopra","debug","log","track","PageRenderer","_inheritsLoose","pageResources","json","pageContext","__params","pathContext","replacementElement","apiRunner","loader","publicLoader","pageElement","component","page","result","pop","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","from","isDynamic","sort","test","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","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","controller","___swUpdated","___failedResources","reload","catch","components","component---cache-caches-gatsby-plugin-offline-app-shell-js","component---src-pages-404-js","component---src-pages-about-js","component---src-pages-contact-js","component---src-pages-index-js","component---src-pages-music-discography-index-js","component---src-pages-music-index-js","component---src-pages-music-teaching-resources-index-js","component---src-pages-other-index-js","component---src-pages-reading-list-index-js","component---src-pages-tags-js","component---src-pages-tech-index-js","component---src-pages-tech-projects-index-js","component---src-templates-blog-post-js","component---src-templates-tags-js","self","ReferenceError","condition","format","c","d","f","Error","argIndex","framesToPop","_setPrototypeOf","o","p","setPrototypeOf","obj","RouteAnnouncerProps","id","top","width","height","padding","overflow","clip","whiteSpace","border","redirectMap","redirectIgnoreCaseMap","maybeRedirect","redirect","toLowerCase","toPath","redirects","ignoreCase","fromPath","onPreRouteUpdate","prevLocation","timeoutId","loadPage","status","PageResourceStatus","clearTimeout","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","results","getSavedScrollPosition","oldPathname","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","title","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","_React$Component2","_proto2","shouldComponentUpdate","Fragment","shallowDiffers","_i","EnsureResources","loadPageSync","getDerivedStateFromProps","loadResources","rawPath","setState","nextState","ProdLoader","asyncRequires","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","staticQueryResults","getStaticQueryResults","StaticQueryContext","LocationHandler","Consumer","Router","pagePath","browserLoc","SiteRoot","_ref4","App","renderer","ReactDOM","hydrate","domReady","subClass","superClass","constructor","prefetchPathname","StaticQueryDataRenderer","staticQueryData","data","finalData","StaticQuery","useStaticQuery","_context$query","context","isNaN","Number","graphql","_objectWithoutProperties","_classCallCheck","Constructor","TypeError","_possibleConstructorReturn","_inherits","enumerable","writable","configurable","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","url","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","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","k","C","_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","Symbol","iterator","hashIndex","registerServiceWorker","whiteListLinkRels","prefetchedPathnames","setPathResources","getResourceURLsForPathname","resources","onServiceWorkerActive","active","nodes","headerResources","tagName","getAttribute","src","prefetchedResources","resource","link","rel","onload","remove","onerror","head","appendChild","onPostPrefetchPathname","_arrayLikeToArray","arr","len","arr2","_toConsumableArray","iter","minLen","toString","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","doesConnectionSupportPrefetch","connection","effectiveType","includes","saveData","add","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","_BaseLoader2","chunkName","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","_reactDom","scrollKey","ScrollContainerImplementation","findDOMNode","root","clickHandler","routeThroughBrowserOrApp","hashShouldBeFollowed","pathIsNotHandledByApp","urlsAreOnSameOrigin","authorIsForcingNavigation","anchorsTargetIsEquivalentToSelf","findClosestAnchor","navigationWasHandledElsewhere","slashedPathname","userIsForcingNavigation","_escapeStringRegexp","nodeName","anchor","hasAttribute","ownerDocument","defaultView","parent","destination","pathStartRegEx","hrefHandler","clickedAnchor","SVGAnimatedString","animVal","RegExp","excludePattern","destinationPathname","DEFAULT_OPTIONS","maxWidth","wrapperStyle","backgroundColor","linkImagesToOriginal","showCaptions","markdownCaptions","withWebp","withAvif","tracedSVG","loading","disableBgImageOnAlpha","disableBgImage","EMPTY_ALT","imageClass","imageWrapperClass","imageBackgroundClass","matchOperatorsRe","_require","apiCallbackContext","imageWrappers","_loop","imageWrapper","backgroundElement","querySelector","imageElement","onImageLoad","onImageComplete","opacity","color","boxShadow","complete","ProdPageRenderer","InternalPageRenderer","plugins","api","defaultReturn","argTransform","previous","next"],"mappings":"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","file":"app-eac1380cd8916e998c4f.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 _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\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\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\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 (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.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._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\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 this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\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 _this2._prefetch();\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 _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"]);\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 var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.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\n var isCurrent = encodeURI(prefixedTo) === _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));\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(GatsbyLinkLocationWrapper, (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(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(e) {\n if (\"function\" != typeof WeakMap) return null;\n var r = new WeakMap(),\n t = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {\n return e ? t : r;\n })(e);\n}\nfunction _interopRequireWildcard(e, r) {\n if (!r && e && e.__esModule) return e;\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return {\n \"default\": e\n };\n var t = _getRequireWildcardCache(r);\n if (t && t.has(e)) return t.get(e);\n var n = {\n __proto__: null\n },\n a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) {\n var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n }\n return n[\"default\"] = e, t && t.set(e, n), n;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\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","\"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 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 return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 = /*#__PURE__*/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 /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\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};","import 'semantic-ui-css/semantic.min.css';\nimport 'prismjs/themes/prism.css';\nimport './src/styles/global.scss';\n\n/* global woopra */\n\nexport const onRouteUpdate = ({ location }, options) => {\n if (typeof woopra !== 'undefined') {\n if (options && options.debug) {\n console.log('woopra.track() called');\n }\n // On every route change fire this code!!\n woopra.track();\n }\n};\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","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-catch-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":590,\"linkImagesToOriginal\":true,\"showCaptions\":false,\"markdownCaptions\":false,\"sizeByPixelDensity\":false,\"backgroundColor\":\"white\",\"quality\":50,\"withWebp\":false,\"tracedSVG\":false,\"loading\":\"lazy\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Gatsby Starter Blog\",\"short_name\":\"GatsbyJS\",\"start_url\":\"/\",\"background_color\":\"#ffffff\",\"theme_color\":\"#663399\",\"display\":\"minimal-ui\",\"icon\":\"static/assets/img/site/site-icon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"28ed9950c5dc197700103c9fd9088ea2\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/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---cache-caches-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../caches/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---cache-caches-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-about-js\": () => import(\"./../../../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n \"component---src-pages-contact-js\": () => import(\"./../../../src/pages/contact.js\" /* webpackChunkName: \"component---src-pages-contact-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-pages-music-discography-index-js\": () => import(\"./../../../src/pages/music/discography/index.js\" /* webpackChunkName: \"component---src-pages-music-discography-index-js\" */),\n \"component---src-pages-music-index-js\": () => import(\"./../../../src/pages/music/index.js\" /* webpackChunkName: \"component---src-pages-music-index-js\" */),\n \"component---src-pages-music-teaching-resources-index-js\": () => import(\"./../../../src/pages/music/teaching-resources/index.js\" /* webpackChunkName: \"component---src-pages-music-teaching-resources-index-js\" */),\n \"component---src-pages-other-index-js\": () => import(\"./../../../src/pages/other/index.js\" /* webpackChunkName: \"component---src-pages-other-index-js\" */),\n \"component---src-pages-reading-list-index-js\": () => import(\"./../../../src/pages/reading-list/index.js\" /* webpackChunkName: \"component---src-pages-reading-list-index-js\" */),\n \"component---src-pages-tags-js\": () => import(\"./../../../src/pages/tags.js\" /* webpackChunkName: \"component---src-pages-tags-js\" */),\n \"component---src-pages-tech-index-js\": () => import(\"./../../../src/pages/tech/index.js\" /* webpackChunkName: \"component---src-pages-tech-index-js\" */),\n \"component---src-pages-tech-projects-index-js\": () => import(\"./../../../src/pages/tech/projects/index.js\" /* webpackChunkName: \"component---src-pages-tech-projects-index-js\" */),\n \"component---src-templates-blog-post-js\": () => import(\"./../../../src/templates/blog-post.js\" /* webpackChunkName: \"component---src-templates-blog-post-js\" */),\n \"component---src-templates-tags-js\": () => import(\"./../../../src/templates/tags.js\" /* webpackChunkName: \"component---src-templates-tags-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 return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nfunction maybeRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\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 if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\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 let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\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 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 => [\n 0,\n this._stateStorage.read(args, args.key),\n ],\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\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\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 shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\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 if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\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","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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\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}\n","\"use strict\";\n\nmodule.exports = Object.assign;","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(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return true;\n}; // only cache relevant resources for this page\n\n\nvar whiteListLinkRels = /^(stylesheet|preload)$/;\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) // don't include preconnect/prefetch/prerender resources\n .filter(function (node) {\n return node.tagName !== \"LINK\" || whiteListLinkRels.test(node.getAttribute(\"rel\"));\n }).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\nfunction setPathResources(path, 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(path);\n } else {\n var resources = getResourceURLsForPathname(path);\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }\n }\n}\n\nexports.onRouteUpdate = function (_ref2) {\n var location = _ref2.location,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n var pathname = location.pathname.replace(__BASE_PATH__, \"\");\n setPathResources(pathname, getResourceURLsForPathname);\n\n if (\"serviceWorker\" in navigator && navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: \"enableOfflineShell\"\n });\n }\n};\n\nexports.onPostPrefetchPathname = function (_ref3) {\n var pathname = _ref3.pathname,\n getResourceURLsForPathname = _ref3.getResourceURLsForPathname;\n setPathResources(pathname, getResourceURLsForPathname);\n};","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\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}","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 const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\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 if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n return Promise.resolve(page.payload)\n }\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 const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\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 }\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\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 return super.doPrefetch(pagePath).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(() => pageData)\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 if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\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 (\"SVGAnimatedString\" in window && 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 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\", (0, _gatsby.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\nexports.DEFAULT_OPTIONS = {\n maxWidth: 650,\n wrapperStyle: \"\",\n backgroundColor: \"white\",\n linkImagesToOriginal: true,\n showCaptions: false,\n markdownCaptions: false,\n withWebp: false,\n withAvif: false,\n tracedSVG: false,\n loading: \"lazy\",\n disableBgImageOnAlpha: false,\n disableBgImage: false\n};\nexports.EMPTY_ALT = \"GATSBY_EMPTY_ALT\";\nexports.imageClass = \"gatsby-resp-image-image\";\nexports.imageWrapperClass = \"gatsby-resp-image-wrapper\";\nexports.imageBackgroundClass = \"gatsby-resp-image-background-image\";","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nmodule.exports = function (str) {\n if (typeof str !== 'string') {\n throw new TypeError('Expected a string');\n }\n return str.replace(matchOperatorsRe, '\\\\$&');\n};","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _require = require(\"./constants\"),\n DEFAULT_OPTIONS = _require.DEFAULT_OPTIONS,\n imageClass = _require.imageClass,\n imageBackgroundClass = _require.imageBackgroundClass,\n imageWrapperClass = _require.imageWrapperClass;\n\nexports.onRouteUpdate = function (apiCallbackContext, pluginOptions) {\n var options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions);\n var imageWrappers = document.querySelectorAll(\".\" + imageWrapperClass); // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/\n // for cross-browser looping through NodeList without polyfills\n\n var _loop = function _loop(i) {\n var imageWrapper = imageWrappers[i];\n var backgroundElement = imageWrapper.querySelector(\".\" + imageBackgroundClass);\n var imageElement = imageWrapper.querySelector(\".\" + imageClass);\n\n var onImageLoad = function onImageLoad() {\n backgroundElement.style.transition = \"opacity 0.5s 0.5s\";\n imageElement.style.transition = \"opacity 0.5s\";\n onImageComplete();\n };\n\n var onImageComplete = function onImageComplete() {\n backgroundElement.style.opacity = 0;\n imageElement.style.opacity = 1;\n imageElement.style.color = \"inherit\";\n imageElement.style.boxShadow = \"inset 0px 0px 0px 400px \" + options.backgroundColor;\n imageElement.removeEventListener(\"load\", onImageLoad);\n imageElement.removeEventListener(\"error\", onImageComplete);\n };\n\n imageElement.style.opacity = 0;\n imageElement.addEventListener(\"load\", onImageLoad);\n imageElement.addEventListener(\"error\", onImageComplete);\n\n if (imageElement.complete) {\n onImageComplete();\n }\n };\n\n for (var i = 0; i < imageWrappers.length; i++) {\n _loop(i);\n }\n};","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","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\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 +{"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:///./.cache/emitter.js","webpack:///./node_modules/mitt/dist/mitt.es.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/@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/setPrototypeOf.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/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.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:///./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:///./.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/gatsby-remark-images/constants.js","webpack:///./node_modules/escape-string-regexp/index.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/gatsby-remark-images/gatsby-browser.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./.cache/api-runner-browser.js"],"names":["_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","getGlobalPathPrefix","navigateTo","replace","push","navigate","default","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_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","GatsbyLinkLocationWrapper","props","createElement","Location","_ref2","location","GatsbyLink","_location","_React$Component","_this","call","this","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","className","filter","Boolean","join","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","_prefetch","currentPath","pathname","rewrittenPath","to","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","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","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","r","t","module","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","i","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","ScrollContainer","ScrollHandler","_scrollContainer","_useScrollRestoration","source","excluded","sourceKeys","keys","polyfill","_extends","assign","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","onRouteUpdate","woopra","debug","log","track","PageRenderer","_inheritsLoose","pageResources","json","pageContext","__params","pathContext","replacementElement","apiRunner","loader","publicLoader","pageElement","component","page","result","pop","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","from","isDynamic","sort","test","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","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","controller","___swUpdated","___failedResources","reload","catch","components","component---cache-caches-gatsby-plugin-offline-app-shell-js","component---src-pages-404-js","component---src-pages-about-js","component---src-pages-contact-js","component---src-pages-index-js","component---src-pages-music-discography-index-js","component---src-pages-music-index-js","component---src-pages-music-teaching-resources-index-js","component---src-pages-other-index-js","component---src-pages-reading-list-index-js","component---src-pages-tags-js","component---src-pages-tech-index-js","component---src-pages-tech-projects-index-js","component---src-templates-blog-post-js","component---src-templates-tags-js","self","ReferenceError","condition","format","c","d","f","Error","argIndex","framesToPop","_setPrototypeOf","o","p","setPrototypeOf","obj","RouteAnnouncerProps","id","top","width","height","padding","overflow","clip","whiteSpace","border","redirectMap","redirectIgnoreCaseMap","maybeRedirect","redirect","toLowerCase","toPath","redirects","ignoreCase","fromPath","onPreRouteUpdate","prevLocation","timeoutId","loadPage","status","PageResourceStatus","clearTimeout","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","results","getSavedScrollPosition","oldPathname","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","title","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","_React$Component2","_proto2","shouldComponentUpdate","Fragment","shallowDiffers","_i","EnsureResources","loadPageSync","getDerivedStateFromProps","loadResources","rawPath","setState","nextState","ProdLoader","asyncRequires","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","staticQueryResults","getStaticQueryResults","StaticQueryContext","LocationHandler","Consumer","Router","pagePath","browserLoc","SiteRoot","_ref4","App","renderer","ReactDOM","hydrate","domReady","subClass","superClass","constructor","prefetchPathname","StaticQueryDataRenderer","staticQueryData","data","finalData","StaticQuery","useStaticQuery","_context$query","context","isNaN","Number","graphql","_objectWithoutProperties","_classCallCheck","Constructor","TypeError","_possibleConstructorReturn","_inherits","enumerable","writable","configurable","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","url","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","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","k","C","_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","Symbol","iterator","hashIndex","registerServiceWorker","whiteListLinkRels","prefetchedPathnames","setPathResources","getResourceURLsForPathname","resources","onServiceWorkerActive","active","nodes","headerResources","tagName","getAttribute","src","prefetchedResources","resource","link","rel","onload","remove","onerror","head","appendChild","onPostPrefetchPathname","_arrayLikeToArray","arr","len","arr2","_toConsumableArray","iter","minLen","toString","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","doesConnectionSupportPrefetch","connection","effectiveType","includes","saveData","add","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","_BaseLoader2","chunkName","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","_reactDom","scrollKey","ScrollContainerImplementation","findDOMNode","root","clickHandler","routeThroughBrowserOrApp","hashShouldBeFollowed","pathIsNotHandledByApp","urlsAreOnSameOrigin","authorIsForcingNavigation","anchorsTargetIsEquivalentToSelf","findClosestAnchor","navigationWasHandledElsewhere","slashedPathname","userIsForcingNavigation","_escapeStringRegexp","nodeName","anchor","hasAttribute","ownerDocument","defaultView","parent","destination","pathStartRegEx","hrefHandler","clickedAnchor","SVGAnimatedString","animVal","RegExp","excludePattern","destinationPathname","DEFAULT_OPTIONS","maxWidth","wrapperStyle","backgroundColor","linkImagesToOriginal","showCaptions","markdownCaptions","withWebp","withAvif","tracedSVG","loading","disableBgImageOnAlpha","disableBgImage","EMPTY_ALT","imageClass","imageWrapperClass","imageBackgroundClass","matchOperatorsRe","_require","apiCallbackContext","imageWrappers","_loop","imageWrapper","backgroundElement","querySelector","imageElement","onImageLoad","onImageComplete","opacity","color","boxShadow","complete","ProdPageRenderer","InternalPageRenderer","plugins","api","defaultReturn","argTransform","previous","next"],"mappings":"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","file":"app-dd8e35d448b2c1e30855.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 _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\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\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\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 (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.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._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\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 this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\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 _this2._prefetch();\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 _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"]);\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 var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.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\n var isCurrent = encodeURI(prefixedTo) === _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));\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(GatsbyLinkLocationWrapper, (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(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(e) {\n if (\"function\" != typeof WeakMap) return null;\n var r = new WeakMap(),\n t = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {\n return e ? t : r;\n })(e);\n}\nfunction _interopRequireWildcard(e, r) {\n if (!r && e && e.__esModule) return e;\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return {\n \"default\": e\n };\n var t = _getRequireWildcardCache(r);\n if (t && t.has(e)) return t.get(e);\n var n = {\n __proto__: null\n },\n a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) {\n var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n }\n return n[\"default\"] = e, t && t.set(e, n), n;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\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","\"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 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 return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 = /*#__PURE__*/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 /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\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};","import 'semantic-ui-css/semantic.min.css';\nimport 'prismjs/themes/prism.css';\nimport './src/styles/global.scss';\n\n/* global woopra */\n\nexport const onRouteUpdate = ({ location }, options) => {\n if (typeof woopra !== 'undefined') {\n if (options && options.debug) {\n console.log('woopra.track() called');\n }\n // On every route change fire this code!!\n woopra.track();\n }\n};\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","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-catch-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":590,\"linkImagesToOriginal\":true,\"showCaptions\":false,\"markdownCaptions\":false,\"sizeByPixelDensity\":false,\"backgroundColor\":\"white\",\"quality\":50,\"withWebp\":false,\"tracedSVG\":false,\"loading\":\"lazy\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Gatsby Starter Blog\",\"short_name\":\"GatsbyJS\",\"start_url\":\"/\",\"background_color\":\"#ffffff\",\"theme_color\":\"#663399\",\"display\":\"minimal-ui\",\"icon\":\"static/assets/img/site/site-icon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"28ed9950c5dc197700103c9fd9088ea2\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/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---cache-caches-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../caches/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---cache-caches-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-about-js\": () => import(\"./../../../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n \"component---src-pages-contact-js\": () => import(\"./../../../src/pages/contact.js\" /* webpackChunkName: \"component---src-pages-contact-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-pages-music-discography-index-js\": () => import(\"./../../../src/pages/music/discography/index.js\" /* webpackChunkName: \"component---src-pages-music-discography-index-js\" */),\n \"component---src-pages-music-index-js\": () => import(\"./../../../src/pages/music/index.js\" /* webpackChunkName: \"component---src-pages-music-index-js\" */),\n \"component---src-pages-music-teaching-resources-index-js\": () => import(\"./../../../src/pages/music/teaching-resources/index.js\" /* webpackChunkName: \"component---src-pages-music-teaching-resources-index-js\" */),\n \"component---src-pages-other-index-js\": () => import(\"./../../../src/pages/other/index.js\" /* webpackChunkName: \"component---src-pages-other-index-js\" */),\n \"component---src-pages-reading-list-index-js\": () => import(\"./../../../src/pages/reading-list/index.js\" /* webpackChunkName: \"component---src-pages-reading-list-index-js\" */),\n \"component---src-pages-tags-js\": () => import(\"./../../../src/pages/tags.js\" /* webpackChunkName: \"component---src-pages-tags-js\" */),\n \"component---src-pages-tech-index-js\": () => import(\"./../../../src/pages/tech/index.js\" /* webpackChunkName: \"component---src-pages-tech-index-js\" */),\n \"component---src-pages-tech-projects-index-js\": () => import(\"./../../../src/pages/tech/projects/index.js\" /* webpackChunkName: \"component---src-pages-tech-projects-index-js\" */),\n \"component---src-templates-blog-post-js\": () => import(\"./../../../src/templates/blog-post.js\" /* webpackChunkName: \"component---src-templates-blog-post-js\" */),\n \"component---src-templates-tags-js\": () => import(\"./../../../src/templates/tags.js\" /* webpackChunkName: \"component---src-templates-tags-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 return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nfunction maybeRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\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 if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\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 let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\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 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 => [\n 0,\n this._stateStorage.read(args, args.key),\n ],\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\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\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 shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\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 if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\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","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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\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}\n","\"use strict\";\n\nmodule.exports = Object.assign;","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(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return true;\n}; // only cache relevant resources for this page\n\n\nvar whiteListLinkRels = /^(stylesheet|preload)$/;\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) // don't include preconnect/prefetch/prerender resources\n .filter(function (node) {\n return node.tagName !== \"LINK\" || whiteListLinkRels.test(node.getAttribute(\"rel\"));\n }).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\nfunction setPathResources(path, 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(path);\n } else {\n var resources = getResourceURLsForPathname(path);\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }\n }\n}\n\nexports.onRouteUpdate = function (_ref2) {\n var location = _ref2.location,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n var pathname = location.pathname.replace(__BASE_PATH__, \"\");\n setPathResources(pathname, getResourceURLsForPathname);\n\n if (\"serviceWorker\" in navigator && navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: \"enableOfflineShell\"\n });\n }\n};\n\nexports.onPostPrefetchPathname = function (_ref3) {\n var pathname = _ref3.pathname,\n getResourceURLsForPathname = _ref3.getResourceURLsForPathname;\n setPathResources(pathname, getResourceURLsForPathname);\n};","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\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}","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 const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\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 if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n return Promise.resolve(page.payload)\n }\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 const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\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 }\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\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 return super.doPrefetch(pagePath).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(() => pageData)\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 if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\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 (\"SVGAnimatedString\" in window && 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 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\", (0, _gatsby.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\nexports.DEFAULT_OPTIONS = {\n maxWidth: 650,\n wrapperStyle: \"\",\n backgroundColor: \"white\",\n linkImagesToOriginal: true,\n showCaptions: false,\n markdownCaptions: false,\n withWebp: false,\n withAvif: false,\n tracedSVG: false,\n loading: \"lazy\",\n disableBgImageOnAlpha: false,\n disableBgImage: false\n};\nexports.EMPTY_ALT = \"GATSBY_EMPTY_ALT\";\nexports.imageClass = \"gatsby-resp-image-image\";\nexports.imageWrapperClass = \"gatsby-resp-image-wrapper\";\nexports.imageBackgroundClass = \"gatsby-resp-image-background-image\";","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nmodule.exports = function (str) {\n if (typeof str !== 'string') {\n throw new TypeError('Expected a string');\n }\n return str.replace(matchOperatorsRe, '\\\\$&');\n};","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _require = require(\"./constants\"),\n DEFAULT_OPTIONS = _require.DEFAULT_OPTIONS,\n imageClass = _require.imageClass,\n imageBackgroundClass = _require.imageBackgroundClass,\n imageWrapperClass = _require.imageWrapperClass;\n\nexports.onRouteUpdate = function (apiCallbackContext, pluginOptions) {\n var options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions);\n var imageWrappers = document.querySelectorAll(\".\" + imageWrapperClass); // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/\n // for cross-browser looping through NodeList without polyfills\n\n var _loop = function _loop(i) {\n var imageWrapper = imageWrappers[i];\n var backgroundElement = imageWrapper.querySelector(\".\" + imageBackgroundClass);\n var imageElement = imageWrapper.querySelector(\".\" + imageClass);\n\n var onImageLoad = function onImageLoad() {\n backgroundElement.style.transition = \"opacity 0.5s 0.5s\";\n imageElement.style.transition = \"opacity 0.5s\";\n onImageComplete();\n };\n\n var onImageComplete = function onImageComplete() {\n backgroundElement.style.opacity = 0;\n imageElement.style.opacity = 1;\n imageElement.style.color = \"inherit\";\n imageElement.style.boxShadow = \"inset 0px 0px 0px 400px \" + options.backgroundColor;\n imageElement.removeEventListener(\"load\", onImageLoad);\n imageElement.removeEventListener(\"error\", onImageComplete);\n };\n\n imageElement.style.opacity = 0;\n imageElement.addEventListener(\"load\", onImageLoad);\n imageElement.addEventListener(\"error\", onImageComplete);\n\n if (imageElement.complete) {\n onImageComplete();\n }\n };\n\n for (var i = 0; i < imageWrappers.length; i++) {\n _loop(i);\n }\n};","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","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\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/building-my-second-brain/index.html b/building-my-second-brain/index.html index 6dceb6e..271a31a 100644 --- a/building-my-second-brain/index.html +++ b/building-my-second-brain/index.html @@ -1,4 +1,4 @@ -How I'm Building My Second Brain | scraggo.com
      -

      How to Manage Your Digital Files: 9 Tips and Tools to Keep You Organized see The Noguchi Filing System

      \ No newline at end of file +

      How to Manage Your Digital Files: 9 Tips and Tools to Keep You Organized see The Noguchi Filing System

      \ No newline at end of file diff --git a/catching-handling-errors-promise-chains/index.html b/catching-handling-errors-promise-chains/index.html index 7234df0..8c8e3a7 100644 --- a/catching-handling-errors-promise-chains/index.html +++ b/catching-handling-errors-promise-chains/index.html @@ -1,4 +1,4 @@ -Catching and handling different types of errors in promise chains | scraggo.com

      Catching and handling different types of errors in promise chains

      When you need to make sequential API calls, promise chains are a reliable way to go. It gets a little tricky when you need to throw and handle errors differently at different points in the chain. This post will go into:

      +

      Catching and handling different types of errors in promise chains

      When you need to make sequential API calls, promise chains are a reliable way to go. It gets a little tricky when you need to throw and handle errors differently at different points in the chain. This post will go into:

      • throwing specific types of errors using Promise.reject
      • creating an object literal dictionary to handle logic
      • @@ -452,4 +452,4 @@

        Promise.reject to throw specified errors

        }); };

      Again, this article is where I learned these techniques -> Error handling in long Promise chains – Arthur Xavier – Medium

      -

      I hope this post was helpful, thanks for reading!

      \ No newline at end of file +

      I hope this post was helpful, thanks for reading!

      \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index aa608b1..72e298d 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"polyfill":["/polyfill-897a35865cfafcc073c2.js"],"app":["/app-eac1380cd8916e998c4f.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-d949a7cd525de9463f1c.js"],"component---src-pages-404-js":["/component---src-pages-404-js-e07b1e7335fed5b5b3e0.js"],"component---src-pages-about-js":["/component---src-pages-about-js-6ec0d09565a0cde4792e.js"],"component---src-pages-contact-js":["/component---src-pages-contact-js-68f70ca442770dcf151b.js"],"component---src-pages-index-js":["/component---src-pages-index-js-d116eb3d65a566d47ccb.js"],"component---src-pages-music-discography-index-js":["/component---src-pages-music-discography-index-js-68f8b9b0819e32353fae.js"],"component---src-pages-music-index-js":["/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js"],"component---src-pages-music-teaching-resources-index-js":["/component---src-pages-music-teaching-resources-index-js-41b300c93102214a1a43.js"],"component---src-pages-other-index-js":["/component---src-pages-other-index-js-ec50fd754f1c3d92044d.js"],"component---src-pages-reading-list-index-js":["/component---src-pages-reading-list-index-js-f0726835405f78babb4a.js"],"component---src-pages-tags-js":["/component---src-pages-tags-js-d059f4dd60601297ee31.js"],"component---src-pages-tech-index-js":["/component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js"],"component---src-pages-tech-projects-index-js":["/component---src-pages-tech-projects-index-js-3564b0a58e221f96a9b3.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-bd98d122a57b321a1456.js"],"component---src-templates-tags-js":["/component---src-templates-tags-js-fb8aae184c9fa5a102b1.js"]} \ No newline at end of file +{"polyfill":["/polyfill-897a35865cfafcc073c2.js"],"app":["/app-dd8e35d448b2c1e30855.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-d949a7cd525de9463f1c.js"],"component---src-pages-404-js":["/component---src-pages-404-js-e07b1e7335fed5b5b3e0.js"],"component---src-pages-about-js":["/component---src-pages-about-js-6ec0d09565a0cde4792e.js"],"component---src-pages-contact-js":["/component---src-pages-contact-js-68f70ca442770dcf151b.js"],"component---src-pages-index-js":["/component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js"],"component---src-pages-music-discography-index-js":["/component---src-pages-music-discography-index-js-68f8b9b0819e32353fae.js"],"component---src-pages-music-index-js":["/component---src-pages-music-index-js-8f517bf401dd294627ba.js"],"component---src-pages-music-teaching-resources-index-js":["/component---src-pages-music-teaching-resources-index-js-41b300c93102214a1a43.js"],"component---src-pages-other-index-js":["/component---src-pages-other-index-js-517d2c2bc5af45a2a014.js"],"component---src-pages-reading-list-index-js":["/component---src-pages-reading-list-index-js-f0726835405f78babb4a.js"],"component---src-pages-tags-js":["/component---src-pages-tags-js-d059f4dd60601297ee31.js"],"component---src-pages-tech-index-js":["/component---src-pages-tech-index-js-47ee51eff1735d471a56.js"],"component---src-pages-tech-projects-index-js":["/component---src-pages-tech-projects-index-js-3564b0a58e221f96a9b3.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-bd98d122a57b321a1456.js"],"component---src-templates-tags-js":["/component---src-templates-tags-js-fb8aae184c9fa5a102b1.js"]} \ No newline at end of file diff --git a/circular-dependencies-bug/index.html b/circular-dependencies-bug/index.html index d029261..0de3077 100644 --- a/circular-dependencies-bug/index.html +++ b/circular-dependencies-bug/index.html @@ -1,4 +1,4 @@ -How to prevent circular dependencies | scraggo.com

      How to prevent circular dependencies

      Some errors are kind of mysterious. The first time I got “‘myFunction’ is not a function” type errors, I was at a loss for a few hours. Logging out the functions from my require statements came back as {} or undefined.

      +

      How to prevent circular dependencies

      Some errors are kind of mysterious. The first time I got “‘myFunction’ is not a function” type errors, I was at a loss for a few hours. Logging out the functions from my require statements came back as {} or undefined.

      What I learned, TL;DR - don’t import file ‘a’ into file ‘b’ AND file ‘b’ into file ‘a’. That’s an example of a “circular dependency.”

      Brief example of creating a circular dependency:

      \ No newline at end of file +
      \ No newline at end of file diff --git a/code-style-guide/index.html b/code-style-guide/index.html index 7bb2067..79db0d8 100644 --- a/code-style-guide/index.html +++ b/code-style-guide/index.html @@ -1,4 +1,4 @@ -Using a Code Style Guide to Enforce Team Best Practices | scraggo.com

      Using a Code Style Guide to Enforce Team Best Practices

      We all have opinions on what what coding best practices are and how code should be formatted. Recently, one of the teams I’ve been working on decided to add another member. I discovered that our coding styles were radically different. I decided to write some guidelines for our team to get us on the same page.

      +

      Using a Code Style Guide to Enforce Team Best Practices

      We all have opinions on what what coding best practices are and how code should be formatted. Recently, one of the teams I’ve been working on decided to add another member. I discovered that our coding styles were radically different. I decided to write some guidelines for our team to get us on the same page.

      I quickly realized that writing a style guide from scratch is a tall order. I’d already been using the Airbnb eslint rule-set, so I read Airbnb’s style guide and found it to be an excellent jump-off point.

      I hope this style guide gives you some ideas. I highly encourage web development teams to create their own style guides and use tools similar to the ones we’ve recommended to unify their personal or team codebases.

      Team Coding Style Guide

      @@ -586,4 +586,4 @@

      Related Posts

      \ No newline at end of file +
    \ No newline at end of file diff --git a/comparing-javascript-test-runners/index.html b/comparing-javascript-test-runners/index.html index 7946caf..fa76d51 100644 --- a/comparing-javascript-test-runners/index.html +++ b/comparing-javascript-test-runners/index.html @@ -1,4 +1,4 @@ -Comparing JavaScript Test Runners | scraggo.com

    Comparing JavaScript Test Runners

    \ No newline at end of file +

    Open an issue here

    \ No newline at end of file diff --git a/component---src-pages-index-js-d116eb3d65a566d47ccb.js b/component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js similarity index 53% rename from component---src-pages-index-js-d116eb3d65a566d47ccb.js rename to component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js index 94a6363..a204029 100644 --- a/component---src-pages-index-js-d116eb3d65a566d47ccb.js +++ b/component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",f="[\\ud800-\\udbff][\\udc00-\\udfff]",c="(?:"+a+"|"+r+")"+"?",s="[\\ufe0e\\ufe0f]?"+c+("(?:\\u200d(?:"+[u,o,f].join("|")+")[\\ufe0e\\ufe0f]?"+c+")*"),i="(?:"+[u+a+"?",a,o,f,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,f=n?n[0]:t.charAt(0),c=n?a(n,1).join(""):t.slice(1);return f[e]()+c}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",f="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+f+")",l="(?:"+i+"|"+f+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,c,s].join("|")+")"+x,E=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(E)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},RXBc:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),f=n("EYWl");t.default=e=>{let{data:t}=e;return r.a.createElement(u.a,null,r.a.createElement(f.a,{title:"Home"}),r.a.createElement(o.a,{title:"All"}))}},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),f=n("7TWv");const c=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const c=t.allMarkdownRemark.edges,s=n?c.filter(Object(f.a)(n)):c;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:c,excerpt:s}=t,i=c.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},c.title))),r.a.createElement("div",{className:"post-info-sm"},r.a.createElement(u.Link,{to:d},r.a.createElement("span",null,c.date," | ")),r.a.createElement("span",{className:"post-categories"},Object(f.b)(c)),i.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:c.description||s}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(c,Object.assign({data:t},e))})},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),f=n("Wbzz"),c=n("d9uu");const s={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(c.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(f.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:u}))}},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); -//# sourceMappingURL=component---src-pages-index-js-d116eb3d65a566d47ccb.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",f="[\\ud800-\\udbff][\\udc00-\\udfff]",c="(?:"+a+"|"+r+")"+"?",i="[\\ufe0e\\ufe0f]?"+c+("(?:\\u200d(?:"+[u,o,f].join("|")+")[\\ufe0e\\ufe0f]?"+c+")*"),s="(?:"+[u+a+"?",a,o,f,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+s+i,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,f=n?n[0]:t.charAt(0),c=n?a(n,1).join(""):t.slice(1);return f[e]()+c}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",f="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",i="[\\ud800-\\udbff][\\udc00-\\udfff]",s="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+f+")",l="(?:"+s+"|"+f+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,i].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,c,i].join("|")+")"+x,v=RegExp([s+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,s,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,s+d,"$"].join("|")+")",s+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",s+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(v)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},RXBc:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),f=n("EYWl");t.default=e=>{let{data:t}=e;return r.a.createElement(u.a,null,r.a.createElement(f.a,{title:"Home"}),r.a.createElement(o.a,{title:"All"}))}},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),f=n("7TWv");const c=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const c=t.allMarkdownRemark.edges,i=n?c.filter(Object(f.a)(n)):c;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",i.length,")")),i.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:c,excerpt:i}=t,s=c.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},c.title))),r.a.createElement("div",{className:"post-info-sm flex flex-wrap"},r.a.createElement("div",null,r.a.createElement(u.Link,{to:d},c.date),r.a.createElement("span",{className:"v-divider"},"|")),r.a.createElement("span",{className:"post-categories"},Object(f.b)(c)),s.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:c.description||i}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(c,Object.assign({data:t},e))})},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),f=n("Wbzz"),c=n("d9uu");const i={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(c.a)(n),s=i[a];if(!s)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(f.Link,{to:"/tags/"+o()(n)+"/"},s({count:t,text:u}))}},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); +//# sourceMappingURL=component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js.map \ No newline at end of file diff --git a/component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js.map b/component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js.map new file mode 100644 index 0000000..45e54d5 --- /dev/null +++ b/component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./src/pages/index.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/components/TagLink.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","React","createElement","Layout","SEO","title","PostsList","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","postData","allMarkdownRemark","posts","filter","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","reHasUnicodeWord","test","createCaseFirst","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-index-js-ba3d0c8e1a0c9e792c4a.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","import React from 'react';\n// import { Link, graphql } from 'gatsby';\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default ({ data }) => (\n \n \n \n \n);\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n
    \n {frontmatter.date}\n |\n
    \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-index-js-d116eb3d65a566d47ccb.js.map b/component---src-pages-index-js-d116eb3d65a566d47ccb.js.map deleted file mode 100644 index 20acd8f..0000000 --- a/component---src-pages-index-js-d116eb3d65a566d47ccb.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./src/pages/index.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/components/TagLink.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","React","createElement","Layout","SEO","title","PostsList","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","postData","allMarkdownRemark","posts","filter","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","reHasUnicodeWord","test","createCaseFirst","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-index-js-d116eb3d65a566d47ccb.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","import React from 'react';\n// import { Link, graphql } from 'gatsby';\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default ({ data }) => (\n \n \n \n \n);\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n \n {frontmatter.date} | \n \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-music-index-js-8f517bf401dd294627ba.js b/component---src-pages-music-index-js-8f517bf401dd294627ba.js new file mode 100644 index 0000000..77abcac --- /dev/null +++ b/component---src-pages-music-index-js-8f517bf401dd294627ba.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",c="[\\ud800-\\udbff][\\udc00-\\udfff]",f="(?:"+a+"|"+r+")"+"?",s="[\\ufe0e\\ufe0f]?"+f+("(?:\\u200d(?:"+[u,o,c].join("|")+")[\\ufe0e\\ufe0f]?"+f+")*"),i="(?:"+[u+a+"?",a,o,c,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,c=n?n[0]:t.charAt(0),f=n?a(n,1).join(""):t.slice(1);return c[e]()+f}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",c="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+c+")",l="(?:"+i+"|"+c+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",f,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,f,s].join("|")+")"+x,v=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(v)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),c=n("7TWv");const f=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const f=t.allMarkdownRemark.edges,s=n?f.filter(Object(c.a)(n)):f;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:f,excerpt:s}=t,i=f.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},f.title))),r.a.createElement("div",{className:"post-info-sm flex flex-wrap"},r.a.createElement("div",null,r.a.createElement(u.Link,{to:d},f.date),r.a.createElement("span",{className:"v-divider"},"|")),r.a.createElement("span",{className:"post-categories"},Object(c.b)(f)),i.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:f.description||s}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(f,Object.assign({data:t},e))})},e0vg:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),c=n("EYWl");t.default=()=>r.a.createElement(u.a,null,r.a.createElement(c.a,{title:"Posts - Music"}),r.a.createElement(o.a,{category:"music",title:"Music"}))},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),c=n("Wbzz"),f=n("d9uu");const s={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(f.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(c.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:u}))}},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); +//# sourceMappingURL=component---src-pages-music-index-js-8f517bf401dd294627ba.js.map \ No newline at end of file diff --git a/component---src-pages-music-index-js-8f517bf401dd294627ba.js.map b/component---src-pages-music-index-js-8f517bf401dd294627ba.js.map new file mode 100644 index 0000000..57a871b --- /dev/null +++ b/component---src-pages-music-index-js-8f517bf401dd294627ba.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./src/pages/music/index.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/components/TagLink.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","PostsList","title","postData","allMarkdownRemark","posts","filter","React","createElement","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","Layout","SEO","reHasUnicodeWord","test","createCaseFirst","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-music-index-js-8f517bf401dd294627ba.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n
    \n {frontmatter.date}\n |\n
    \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","import React from 'react';\n\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default () => (\n \n \n \n \n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js b/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js deleted file mode 100644 index 27aec59..0000000 --- a/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",u="\\ud83c[\\udffb-\\udfff]",r="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",c="[\\ud800-\\udbff][\\udc00-\\udfff]",f="(?:"+a+"|"+u+")"+"?",s="[\\ufe0e\\ufe0f]?"+f+("(?:\\u200d(?:"+[r,o,c].join("|")+")[\\ufe0e\\ufe0f]?"+f+")*"),i="(?:"+[r+a+"?",a,o,c,n].join("|")+")",d=RegExp(u+"(?="+u+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),u=n("quyA"),r=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=u(t)?r(t):void 0,c=n?n[0]:t.charAt(0),f=n?a(n,1).join(""):t.slice(1);return c[e]()+f}}},"6acW":function(e,t,n){var a=n("dt0z"),u=n("gQMU");e.exports=function(e){return u(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),u=n("fo6e"),r=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=r(e),void 0===(t=n?void 0:t)?u(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const u=e=>t=>t.node.frontmatter.categories.includes(e),r=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const u=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(u)return u.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",u="\\d+",r="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",c="[^\\ud800-\\udfff"+n+u+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+c+")",l="(?:"+i+"|"+c+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",f,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[r,f,s].join("|")+")"+x,v=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",u,m].join("|"),"g");e.exports=function(e){return e.match(v)||[]}},Em2t:function(e,t,n){var a=n("bahg"),u=n("quyA"),r=n("0JQy");e.exports=function(e){return u(e)?r(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),u=n.n(a);const r={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in r?r[t]:e.split(" ").map(e=>u()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),u=n.n(a),r=n("Wbzz"),o=n("jkPq"),c=n("7TWv");const f=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const f=t.allMarkdownRemark.edges,s=n?f.filter(Object(c.a)(n)):f;return u.a.createElement("div",{className:"posts-list"},u.a.createElement("div",{className:"posts-category"},u.a.createElement("h2",null,a," Posts "),u.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:f,excerpt:s}=t,i=f.tags||[],d=a.slug;return u.a.createElement("article",{key:n,className:"post-wrapper"},u.a.createElement("header",{className:"post-title"},u.a.createElement("h3",null,u.a.createElement(r.Link,{to:d},f.title))),u.a.createElement("div",{className:"post-info-sm"},u.a.createElement(r.Link,{to:d},u.a.createElement("span",null,f.date," | ")),u.a.createElement("span",{className:"post-categories"},Object(c.b)(f)),i.map(e=>u.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),u.a.createElement(r.Link,{to:d},u.a.createElement("section",null,u.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:f.description||s}}))))}))};t.a=e=>u.a.createElement(r.StaticQuery,{query:"2287769229",render:t=>u.a.createElement(f,Object.assign({data:t},e))})},e0vg:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),u=n.n(a),r=n("7oih"),o=n("e+E3"),c=n("EYWl");t.default=()=>u.a.createElement(r.a,null,u.a.createElement(c.a,{title:"Posts - Music"}),u.a.createElement(o.a,{category:"music",title:"Music"}))},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),u=n.n(a),r=n("N1om"),o=n.n(r),c=n("Wbzz"),f=n("d9uu");const s={post:e=>{let{text:t}=e;return u.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return u.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return u.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const r=Object(f.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return u.a.createElement(c.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:r}))}},sgoq:function(e,t,n){var a=n("asDA"),u=n("TKrE"),r=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(r(u(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var u=e.length;return n=void 0===n?u:n,!t&&n>=u?e:a(e,t,n)}}}]); -//# sourceMappingURL=component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js.map \ No newline at end of file diff --git a/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js.map b/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js.map deleted file mode 100644 index 26f47da..0000000 --- a/component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./src/pages/music/index.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/components/TagLink.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","PostsList","title","postData","allMarkdownRemark","posts","filter","React","createElement","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","Layout","SEO","reHasUnicodeWord","test","createCaseFirst","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-music-index-js-add75c0a2e9ea8a8fdcf.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n \n {frontmatter.date} | \n \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","import React from 'react';\n\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default () => (\n \n \n \n \n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-other-index-js-ec50fd754f1c3d92044d.js b/component---src-pages-other-index-js-517d2c2bc5af45a2a014.js similarity index 65% rename from component---src-pages-other-index-js-ec50fd754f1c3d92044d.js rename to component---src-pages-other-index-js-517d2c2bc5af45a2a014.js index 44674be..5d49bfd 100644 --- a/component---src-pages-other-index-js-ec50fd754f1c3d92044d.js +++ b/component---src-pages-other-index-js-517d2c2bc5af45a2a014.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",f="[\\ud800-\\udbff][\\udc00-\\udfff]",c="(?:"+a+"|"+r+")"+"?",s="[\\ufe0e\\ufe0f]?"+c+("(?:\\u200d(?:"+[u,o,f].join("|")+")[\\ufe0e\\ufe0f]?"+c+")*"),i="(?:"+[u+a+"?",a,o,f,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,f=n?n[0]:t.charAt(0),c=n?a(n,1).join(""):t.slice(1);return f[e]()+c}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",f="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+f+")",l="(?:"+i+"|"+f+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,c,s].join("|")+")"+x,E=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(E)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),f=n("7TWv");const c=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const c=t.allMarkdownRemark.edges,s=n?c.filter(Object(f.a)(n)):c;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:c,excerpt:s}=t,i=c.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},c.title))),r.a.createElement("div",{className:"post-info-sm"},r.a.createElement(u.Link,{to:d},r.a.createElement("span",null,c.date," | ")),r.a.createElement("span",{className:"post-categories"},Object(f.b)(c)),i.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:c.description||s}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(c,Object.assign({data:t},e))})},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),f=n("Wbzz"),c=n("d9uu");const s={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(c.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(f.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:u}))}},lw47:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),f=n("EYWl");t.default=()=>r.a.createElement(u.a,null,r.a.createElement(f.a,{title:"Posts - Other"}),r.a.createElement(o.a,{category:"other",title:"Other"}))},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); -//# sourceMappingURL=component---src-pages-other-index-js-ec50fd754f1c3d92044d.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",f="[\\ud800-\\udbff][\\udc00-\\udfff]",c="(?:"+a+"|"+r+")"+"?",s="[\\ufe0e\\ufe0f]?"+c+("(?:\\u200d(?:"+[u,o,f].join("|")+")[\\ufe0e\\ufe0f]?"+c+")*"),i="(?:"+[u+a+"?",a,o,f,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,f=n?n[0]:t.charAt(0),c=n?a(n,1).join(""):t.slice(1);return f[e]()+c}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",f="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+f+")",l="(?:"+i+"|"+f+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,c,s].join("|")+")"+x,v=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(v)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),f=n("7TWv");const c=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const c=t.allMarkdownRemark.edges,s=n?c.filter(Object(f.a)(n)):c;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:c,excerpt:s}=t,i=c.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},c.title))),r.a.createElement("div",{className:"post-info-sm flex flex-wrap"},r.a.createElement("div",null,r.a.createElement(u.Link,{to:d},c.date),r.a.createElement("span",{className:"v-divider"},"|")),r.a.createElement("span",{className:"post-categories"},Object(f.b)(c)),i.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:c.description||s}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(c,Object.assign({data:t},e))})},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),f=n("Wbzz"),c=n("d9uu");const s={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(c.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(f.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:u}))}},lw47:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),f=n("EYWl");t.default=()=>r.a.createElement(u.a,null,r.a.createElement(f.a,{title:"Posts - Other"}),r.a.createElement(o.a,{category:"other",title:"Other"}))},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); +//# sourceMappingURL=component---src-pages-other-index-js-517d2c2bc5af45a2a014.js.map \ No newline at end of file diff --git a/component---src-pages-other-index-js-517d2c2bc5af45a2a014.js.map b/component---src-pages-other-index-js-517d2c2bc5af45a2a014.js.map new file mode 100644 index 0000000..bd21a4e --- /dev/null +++ b/component---src-pages-other-index-js-517d2c2bc5af45a2a014.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/components/TagLink.js","webpack:///./src/pages/other/index.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","PostsList","title","postData","allMarkdownRemark","posts","filter","React","createElement","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","reHasUnicodeWord","test","createCaseFirst","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","Layout","SEO","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-other-index-js-517d2c2bc5af45a2a014.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n
    \n {frontmatter.date}\n |\n
    \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","import React from 'react';\n\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default () => (\n \n \n \n \n);\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-other-index-js-ec50fd754f1c3d92044d.js.map b/component---src-pages-other-index-js-ec50fd754f1c3d92044d.js.map deleted file mode 100644 index 67e0ead..0000000 --- a/component---src-pages-other-index-js-ec50fd754f1c3d92044d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/components/TagLink.js","webpack:///./src/pages/other/index.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","PostsList","title","postData","allMarkdownRemark","posts","filter","React","createElement","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","reHasUnicodeWord","test","createCaseFirst","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","Layout","SEO","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-other-index-js-ec50fd754f1c3d92044d.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n \n {frontmatter.date} | \n \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","import React from 'react';\n\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default () => (\n \n \n \n \n);\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js.map b/component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js.map deleted file mode 100644 index 8b240f5..0000000 --- a/component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/pages/tech/index.js","webpack:///./src/components/TagLink.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","PostsList","title","postData","allMarkdownRemark","posts","filter","React","createElement","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","reHasUnicodeWord","test","createCaseFirst","Layout","SEO","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n \n {frontmatter.date} | \n \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\n\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default () => (\n \n \n \n \n);\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js b/component---src-pages-tech-index-js-47ee51eff1735d471a56.js similarity index 65% rename from component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js rename to component---src-pages-tech-index-js-47ee51eff1735d471a56.js index 62ff7d3..21d57b5 100644 --- a/component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js +++ b/component---src-pages-tech-index-js-47ee51eff1735d471a56.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",c="[\\ud800-\\udbff][\\udc00-\\udfff]",f="(?:"+a+"|"+r+")"+"?",s="[\\ufe0e\\ufe0f]?"+f+("(?:\\u200d(?:"+[u,o,c].join("|")+")[\\ufe0e\\ufe0f]?"+f+")*"),i="(?:"+[u+a+"?",a,o,c,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,c=n?n[0]:t.charAt(0),f=n?a(n,1).join(""):t.slice(1);return c[e]()+f}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",c="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+c+")",l="(?:"+i+"|"+c+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",f,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,f,s].join("|")+")"+x,E=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(E)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),c=n("7TWv");const f=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const f=t.allMarkdownRemark.edges,s=n?f.filter(Object(c.a)(n)):f;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:f,excerpt:s}=t,i=f.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},f.title))),r.a.createElement("div",{className:"post-info-sm"},r.a.createElement(u.Link,{to:d},r.a.createElement("span",null,f.date," | ")),r.a.createElement("span",{className:"post-categories"},Object(c.b)(f)),i.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:f.description||s}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(f,Object.assign({data:t},e))})},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},hYRG:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),c=n("EYWl");t.default=()=>r.a.createElement(u.a,null,r.a.createElement(c.a,{title:"Posts - Technology"}),r.a.createElement(o.a,{category:"tech",title:"Tech"}))},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),c=n("Wbzz"),f=n("d9uu");const s={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(f.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(c.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:u}))}},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); -//# sourceMappingURL=component---src-pages-tech-index-js-1cd3d8506dd6787e94dc.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{"0JQy":function(e,t){var n="[\\ud800-\\udfff]",a="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",u="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",c="[\\ud800-\\udbff][\\udc00-\\udfff]",f="(?:"+a+"|"+r+")"+"?",s="[\\ufe0e\\ufe0f]?"+f+("(?:\\u200d(?:"+[u,o,c].join("|")+")[\\ufe0e\\ufe0f]?"+f+")*"),i="(?:"+[u+a+"?",a,o,c,n].join("|")+")",d=RegExp(r+"(?="+r+")|"+i+s,"g");e.exports=function(e){return e.match(d)||[]}},"0ZTe":function(e,t,n){var a=n("wy8a"),r=n("quyA"),u=n("Em2t"),o=n("dt0z");e.exports=function(e){return function(t){t=o(t);var n=r(t)?u(t):void 0,c=n?n[0]:t.charAt(0),f=n?a(n,1).join(""):t.slice(1);return c[e]()+f}}},"6acW":function(e,t,n){var a=n("dt0z"),r=n("gQMU");e.exports=function(e){return r(a(e).toLowerCase())}},"6nK8":function(e,t,n){var a=n("dVn5"),r=n("fo6e"),u=n("dt0z"),o=n("9NmV");e.exports=function(e,t,n){return e=u(e),void 0===(t=n?void 0:t)?r(e)?o(e):a(e):e.match(t)||[]}},"7TWv":function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return u})),n.d(t,"c",(function(){return o}));var a=n("d9uu");const r=e=>t=>t.node.frontmatter.categories.includes(e),u=e=>{const{categories:t}=e;return t?t.map(a.a).join(", "):"Uncategorized"},o=e=>{let{data:t,filename:n,sizingStrategy:a}=e;const r=t.allFile.edges.find(e=>e.node.relativePath.endsWith(n));if(r)return r.node.childImageSharp[a]}},"9NmV":function(e,t){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+n+"]",r="\\d+",u="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",c="[^\\ud800-\\udfff"+n+r+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",i="[A-Z\\xc0-\\xd6\\xd8-\\xde]",d="(?:"+o+"|"+c+")",l="(?:"+i+"|"+c+")",p="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",x="[\\ufe0e\\ufe0f]?"+p+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",f,s].join("|")+")[\\ufe0e\\ufe0f]?"+p+")*"),m="(?:"+[u,f,s].join("|")+")"+x,v=RegExp([i+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[a,i,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[a,i+d,"$"].join("|")+")",i+"?"+d+"+(?:['’](?:d|ll|m|re|s|t|ve))?",i+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",r,m].join("|"),"g");e.exports=function(e){return e.match(v)||[]}},Em2t:function(e,t,n){var a=n("bahg"),r=n("quyA"),u=n("0JQy");e.exports=function(e){return r(e)?u(e):a(e)}},N1om:function(e,t,n){var a=n("sgoq")((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=a},bahg:function(e,t){e.exports=function(e){return e.split("")}},d9uu:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n("6acW"),r=n.n(a);const u={ava:"AVA",javascript:"JavaScript",oop:"OOP",typescript:"TypeScript"},o=function(e){if(void 0===e&&(e=""),e.length<1)return e;const t=e.toLowerCase();return t in u?u[t]:e.split(" ").map(e=>r()(e)).join(" ")}},dVn5:function(e,t){var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(n)||[]}},"e+E3":function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("Wbzz"),o=n("jkPq"),c=n("7TWv");const f=e=>{let{data:t,category:n,title:a}=e;if(!t)return null;const f=t.allMarkdownRemark.edges,s=n?f.filter(Object(c.a)(n)):f;return r.a.createElement("div",{className:"posts-list"},r.a.createElement("div",{className:"posts-category"},r.a.createElement("h2",null,a," Posts "),r.a.createElement("span",null,"(",s.length,")")),s.map(e=>{let{node:t}=e;const{id:n,fields:a,frontmatter:f,excerpt:s}=t,i=f.tags||[],d=a.slug;return r.a.createElement("article",{key:n,className:"post-wrapper"},r.a.createElement("header",{className:"post-title"},r.a.createElement("h3",null,r.a.createElement(u.Link,{to:d},f.title))),r.a.createElement("div",{className:"post-info-sm flex flex-wrap"},r.a.createElement("div",null,r.a.createElement(u.Link,{to:d},f.date),r.a.createElement("span",{className:"v-divider"},"|")),r.a.createElement("span",{className:"post-categories"},Object(c.b)(f)),i.map(e=>r.a.createElement(o.a,{key:e,text:e,variant:"postList"}))),r.a.createElement(u.Link,{to:d},r.a.createElement("section",null,r.a.createElement("p",{className:"post-excerpt",dangerouslySetInnerHTML:{__html:f.description||s}}))))}))};t.a=e=>r.a.createElement(u.StaticQuery,{query:"2287769229",render:t=>r.a.createElement(f,Object.assign({data:t},e))})},fo6e:function(e,t){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},gQMU:function(e,t,n){var a=n("0ZTe")("toUpperCase");e.exports=a},hYRG:function(e,t,n){"use strict";n.r(t);var a=n("q1tI"),r=n.n(a),u=n("7oih"),o=n("e+E3"),c=n("EYWl");t.default=()=>r.a.createElement(u.a,null,r.a.createElement(c.a,{title:"Posts - Technology"}),r.a.createElement(o.a,{category:"tech",title:"Tech"}))},jkPq:function(e,t,n){"use strict";var a=n("q1tI"),r=n.n(a),u=n("N1om"),o=n.n(u),c=n("Wbzz"),f=n("d9uu");const s={post:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-info-sm post-tag"},t)},count:e=>{let{count:t,text:n}=e;return r.a.createElement("span",null,n+" ("+t+")")},postList:e=>{let{text:t}=e;return r.a.createElement("span",{className:"post-tag"},t)}};t.a=e=>{let{count:t,text:n,variant:a}=e;const u=Object(f.a)(n),i=s[a];if(!i)throw new Error("props.variant "+a+" not in contentMap.");return r.a.createElement(c.Link,{to:"/tags/"+o()(n)+"/"},i({count:t,text:u}))}},sgoq:function(e,t,n){var a=n("asDA"),r=n("TKrE"),u=n("6nK8"),o=RegExp("['’]","g");e.exports=function(e){return function(t){return a(u(r(t).replace(o,"")),e,"")}}},wy8a:function(e,t,n){var a=n("KxBF");e.exports=function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:a(e,t,n)}}}]); +//# sourceMappingURL=component---src-pages-tech-index-js-47ee51eff1735d471a56.js.map \ No newline at end of file diff --git a/component---src-pages-tech-index-js-47ee51eff1735d471a56.js.map b/component---src-pages-tech-index-js-47ee51eff1735d471a56.js.map new file mode 100644 index 0000000..8fe25d7 --- /dev/null +++ b/component---src-pages-tech-index-js-47ee51eff1735d471a56.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/utils/dataUtils.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./src/utils/stringUtils.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./src/components/PostsList.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./src/pages/tech/index.js","webpack:///./src/components/TagLink.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_castSlice.js"],"names":["rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","module","exports","string","match","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","undefined","chr","charAt","trailing","slice","upperFirst","toLowerCase","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","categoryFilter","category","data","node","frontmatter","categories","includes","getFormattedCategories","map","capitalizeWords","getImage","_ref","filename","sizingStrategy","found","allFile","edges","find","image","relativePath","endsWith","childImageSharp","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","asciiToArray","unicodeToArray","kebabCase","createCompounder","result","word","index","split","specialWords","ava","javascript","oop","typescript","length","lowerCased","w","capitalize","reAsciiWord","PostsList","title","postData","allMarkdownRemark","posts","filter","React","createElement","className","_ref2","id","fields","excerpt","tags","url","slug","key","Link","to","date","tag","TagLink","text","variant","dangerouslySetInnerHTML","__html","description","props","StaticQuery","query","render","Object","assign","reHasUnicodeWord","test","createCaseFirst","Layout","SEO","contentMap","post","count","postList","_ref3","_ref4","capText","contentFunc","Error","arrayReduce","deburr","words","reApos","callback","replace","baseSlice","array","start","end"],"mappings":"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","file":"component---src-pages-tech-index-js-47ee51eff1735d471a56.js","sourcesContent":["/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { capitalizeWords } from 'src/utils/stringUtils';\n\n/**\n * Get a filter callback for category\n * @param {string} category\n * @returns {function} filter\n */\nexport const categoryFilter = category => data =>\n data.node.frontmatter.categories.includes(category);\n\nexport const getFormattedCategories = frontmatter => {\n const { categories } = frontmatter;\n return categories\n ? categories.map(capitalizeWords).join(', ')\n : 'Uncategorized';\n};\n\n/**\n * Get image data from graphQl query\n * @param {object} config\n * @param {object} config.data -> the graphQl query result\n * @param {string} config.filename\n * @param {string} config.sizingStrategy -> oneOf('fixed', 'fluid')\n * @returns {object|undefined}\n */\nexport const getImage = ({ data, filename, sizingStrategy }) => {\n // data.allFile.edges -> array\n // data.allFile.edges[0].node.relativePath -> tech-projects/filename\n // data.allFile.edges[0].node.childImageSharp.fluid -> object base 64\n const found = data.allFile.edges.find(image =>\n image.node.relativePath.endsWith(filename)\n );\n if (found) {\n return found.node.childImageSharp[sizingStrategy];\n }\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","import capitalize from 'lodash/capitalize';\n\nconst specialWords = {\n ava: 'AVA',\n javascript: 'JavaScript',\n oop: 'OOP',\n typescript: 'TypeScript',\n};\n\nexport const capitalizeWords = (word = '') => {\n if (word.length < 1) {\n return word;\n }\n\n const lowerCased = word.toLowerCase();\n if (lowerCased in specialWords) {\n return specialWords[lowerCased];\n }\n\n return word\n .split(' ')\n .map(w => capitalize(w))\n .join(' ');\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import React from 'react';\nimport { Link, graphql, StaticQuery } from 'gatsby';\n\nimport TagLink from 'src/components/TagLink';\nimport { categoryFilter, getFormattedCategories } from 'src/utils/dataUtils';\n\n/** posts -> already filtered edges */\n/** totalCount -> data.allMarkdownRemark.totalCount */\nconst PostsList = ({ data, category, title }) => {\n if (!data) {\n return null;\n }\n\n const postData = data.allMarkdownRemark.edges;\n const posts = category ? postData.filter(categoryFilter(category)) : postData;\n\n return (\n
    \n
    \n

    {title} Posts

    \n ({posts.length})\n
    \n {posts.map(({ node }) => {\n const { id, fields, frontmatter, excerpt } = node;\n const tags = frontmatter.tags || [];\n const url = fields.slug;\n\n return (\n
    \n
    \n

    \n {frontmatter.title}\n

    \n
    \n
    \n
    \n {frontmatter.date}\n |\n
    \n \n {getFormattedCategories(frontmatter)}\n \n {tags.map(tag => (\n \n ))}\n
    \n \n
    \n \n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nconst query = graphql`\n query {\n allMarkdownRemark(\n filter: { frontmatter: { type: { eq: \"post\" } } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n totalCount\n edges {\n node {\n id\n frontmatter {\n author\n categories\n date(formatString: \"MMMM DD, YYYY\")\n description\n tags\n title\n type\n }\n fields {\n slug\n }\n excerpt(pruneLength: 400)\n }\n }\n }\n }\n`;\n\nexport default props => (\n }\n />\n);\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import React from 'react';\n\nimport Layout from 'src/components/Layout';\nimport PostsList from 'src/components/PostsList';\nimport SEO from 'src/components/SEO';\n\nexport default () => (\n \n \n \n \n);\n","import React from 'react';\nimport kebabCase from 'lodash/kebabCase';\nimport { Link } from 'gatsby';\n\nimport { capitalizeWords } from 'src/utils/stringUtils';\n\nconst contentMap = {\n post: ({ text }) => {text},\n count: ({ count, text }) => {`${text} (${count})`},\n postList: ({ text }) => {text},\n};\n\nconst TagLink = ({ count, text, variant }) => {\n const capText = capitalizeWords(text);\n const contentFunc = contentMap[variant];\n\n if (!contentFunc) {\n throw new Error(`props.variant ${variant} not in contentMap.`);\n }\n\n return (\n \n {contentFunc({ count, text: capText })}\n \n );\n};\n\nexport default TagLink;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/contact/index.html b/contact/index.html index d78aeb6..caafc9c 100644 --- a/contact/index.html +++ b/contact/index.html @@ -1,4 +1,4 @@ -Contact | scraggo.com

    (After form submission, scroll to top to confirm that message was sent.)

    \ No newline at end of file +

    (After form submission, scroll to top to confirm that message was sent.)

    \ No newline at end of file diff --git a/contributing-to-open-source-is-type-checking/index.html b/contributing-to-open-source-is-type-checking/index.html index 9d776ff..57ae89a 100644 --- a/contributing-to-open-source-is-type-checking/index.html +++ b/contributing-to-open-source-is-type-checking/index.html @@ -1,4 +1,4 @@ -Contributing a New Feature to Open Source: @sindresorhus/is | scraggo.com

    Contributing a New Feature to Open Source: @sindresorhus/is

    This post is a recount of my recent experience contributing to is, a JavaScript open source type checking library.

    +

    Contributing a New Feature to Open Source: @sindresorhus/is

    This post is a recount of my recent experience contributing to is, a JavaScript open source type checking library.

    https://github.com/sindresorhus/is

    https://www.npmjs.com/package/@sindresorhus/is

    @@ -436,4 +436,4 @@

    The release of is@2.1.0

    https://github.com/sindresorhus/is#anypredicate—predicate-values

    -

    Working on this feature was amazing in so many ways. I had a great experience collaborating with @sindresorhus and his team, I enjoyed the challenge of working on an unfamiliar codebase, and it was incredibly rewarding to see that the feature I put in might be used and appreciated by other developers. I’m looking forward to the next time I have the chance to contribute to an awesome, well-maintained open source library. Let me know about your experiences using is. 😁

    \ No newline at end of file +

    Working on this feature was amazing in so many ways. I had a great experience collaborating with @sindresorhus and his team, I enjoyed the challenge of working on an unfamiliar codebase, and it was incredibly rewarding to see that the feature I put in might be used and appreciated by other developers. I’m looking forward to the next time I have the chance to contribute to an awesome, well-maintained open source library. Let me know about your experiences using is. 😁

    \ No newline at end of file diff --git a/custom-type-checking-isnan/index.html b/custom-type-checking-isnan/index.html index 5a9be7e..9d145c8 100644 --- a/custom-type-checking-isnan/index.html +++ b/custom-type-checking-isnan/index.html @@ -1,4 +1,4 @@ -Custom type checking - isNaN vs Number.isNaN | scraggo.com

    Custom type checking - isNaN vs Number.isNaN

    Javascript is infamous for being “loose” and misleading with its typing. typeof [1, 2, 3] gives you 'object', typeof null gives you 'object', etc.

    +

    Custom type checking - isNaN vs Number.isNaN

    Javascript is infamous for being “loose” and misleading with its typing. typeof [1, 2, 3] gives you 'object', typeof null gives you 'object', etc.

    So instead of writing conditionals using Array.isArray(), doing specific null checks, etc, I decided to make my own wrapper for typeof which I called getType:

    /**
      * Get typeof item with a few extra types specified.
    @@ -484,4 +484,4 @@
       throw new Error(
         `Bad input: ${thing}. Expected array, object, or number, got '${typeof thing}'`
       );
    -}
    \ No newline at end of file +}
    \ No newline at end of file diff --git a/debugging-strategies-checklist/index.html b/debugging-strategies-checklist/index.html index 657eccf..4d5f91e 100644 --- a/debugging-strategies-checklist/index.html +++ b/debugging-strategies-checklist/index.html @@ -1,4 +1,4 @@ -Debugging Strategies Checklist | scraggo.com

    Debugging Strategies Checklist

    Tracking down bugs in the software you’re working on can be tricky. Debugging is a massive topic and there are so many places bugs can show up. One thing’s for sure, whether you’re careful or not…

    +

    Debugging Strategies Checklist

    Tracking down bugs in the software you’re working on can be tricky. Debugging is a massive topic and there are so many places bugs can show up. One thing’s for sure, whether you’re careful or not…

    Bugs will show up.

    I’m not saying this to be pessimistic. Creating and squashing bugs is not just a part of the process of writing software, it is the process! We’re solving problems and ironing out the kinks as we go.

    Further Reading

  • Debugging Checklist
  • flatiron-school/ruby-debugging-checklist: A list of things to do when you hit a bug in your ruby code.
  • The “Stupid” Checklist: Just say “No!” to emotional debugging…emotionally! by Mark Witmer on CodePen
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/design-patterns-curriculum/index.html b/design-patterns-curriculum/index.html index b5b72c0..b09ced3 100644 --- a/design-patterns-curriculum/index.html +++ b/design-patterns-curriculum/index.html @@ -1,4 +1,4 @@ -How to Learn Design Patterns | scraggo.com

    How to Learn Design Patterns

    I’ve long been intrigued by design patterns, but when I started learning them, I realized quickly that I didn’t have a clear learning path. I didn’t know how I should learn design patterns or if it’s the right time for me to learn them.

    +

    How to Learn Design Patterns

    I’ve long been intrigued by design patterns, but when I started learning them, I realized quickly that I didn’t have a clear learning path. I didn’t know how I should learn design patterns or if it’s the right time for me to learn them.

    So, I sought out to answer some questions: What are the prerequisites for learning design patterns? What material should I use and how do I avoid being scattered? How do I put them into practice?

    This article is a continuation of a previous post where I introduced design patterns and discussed the “what” and the “why” of them. This post aims to give you a curriculum for learning design patterns and resources that have helped me.

    Prerequisites

    @@ -533,4 +533,4 @@

    Resources

  • https://docs.microsoft.com/en-us/azure/architecture/patterns/
  • My introduction to Design Patterns

    -

    I introduce design patterns and discuss the “what” and the “why” of them here.

    \ No newline at end of file +

    I introduce design patterns and discuss the “what” and the “why” of them here.

    \ No newline at end of file diff --git a/design-patterns-intro/index.html b/design-patterns-intro/index.html index 90f92ed..07f141c 100644 --- a/design-patterns-intro/index.html +++ b/design-patterns-intro/index.html @@ -1,4 +1,4 @@ -Introduction to Design Patterns: Why they're worth learning | scraggo.com

    Introduction to Design Patterns: Why they're worth learning

    As developers, we’re constantly learning - and there’s a lot to learn in general because the tech industry is broad and fast-paced. We want to have all the main bases covered so that we can be ready for any situation. We often hear about design patterns and how they can enable us to write well-architected software using object-oriented programming. If you’re like me, you might file that away as a set of concepts to learn later. I filed them into the “important, but not urgent” (quadrant two of Eisenhower’s matrix) category. Of course, there are many topics to learn that are required for us to do our job. So design patterns might not make it to the top of your priority list - where items like testing, frameworks, CI/CD, or a dozen other things live.

    +

    Introduction to Design Patterns: Why they're worth learning

    As developers, we’re constantly learning - and there’s a lot to learn in general because the tech industry is broad and fast-paced. We want to have all the main bases covered so that we can be ready for any situation. We often hear about design patterns and how they can enable us to write well-architected software using object-oriented programming. If you’re like me, you might file that away as a set of concepts to learn later. I filed them into the “important, but not urgent” (quadrant two of Eisenhower’s matrix) category. Of course, there are many topics to learn that are required for us to do our job. So design patterns might not make it to the top of your priority list - where items like testing, frameworks, CI/CD, or a dozen other things live.

    I was always intrigued by design patterns, but as with learning anything new, I was in the dark about a lot of things. First, I didn’t know why I should learn them. I didn’t know what they are. “Are they best practices, SOLID principles, architecture guides, or what?” I would ask. I don’t know exactly how they can help me (besides simply being familiar). Naturally, I didn’t have a clear learning path - I didn’t know how I should learn them or if it’s the right time for me to learn them. What are the prerequisites? What material should I use and how do I avoid being scattered? How do I put them into practice?

    Now that I’ve spent over a year learning design patterns, I wanted to share my journey and hopefully answer all of the above questions. I went from feeling scattered amongst resources I haphazardly encountered like blog posts and videos, to seeking out some books, and encountering a few patterns at work. When my mentor made a few fantastic recommendations, I was off to the races:

    \ No newline at end of file +

    In my next post, I provide a number of resources that I’ve found helpful while learning and a suggested curriculum.

    \ No newline at end of file diff --git a/git-commit-format-squash/index.html b/git-commit-format-squash/index.html index 13fc4db..959f94d 100644 --- a/git-commit-format-squash/index.html +++ b/git-commit-format-squash/index.html @@ -1,4 +1,4 @@ -How to format and edit your git commit messages | scraggo.com

    How to format and edit your git commit messages

    When writing commit messages, it’s ideal to make them easy for another developer to read and understand exactly what’s in the commit. Oftentimes, though, we write commit messages quickly just to push a branch at the end of a workday, for instance (I know I’m guilty of this).

    +

    How to format and edit your git commit messages

    When writing commit messages, it’s ideal to make them easy for another developer to read and understand exactly what’s in the commit. Oftentimes, though, we write commit messages quickly just to push a branch at the end of a workday, for instance (I know I’m guilty of this).

    One team member brought the Conventional Commits format to our attention. I’ve enjoyed using it and seeing the results when reviewing pull requests.

    To enforce this pattern, I recommend using this tool: conventional-changelog/commitlint: 📓 Lint commit messages.

    Verbatim from the readme:

    @@ -398,4 +398,4 @@

    Squashing commits

    Want to edit your commit messages before you do a pull request? Squash your commits!

    Here’s my guide on how to do it.

    Related posts

    -

    Using a Code Style Guide to Enforce Team Best Practices

    \ No newline at end of file +

    Using a Code Style Guide to Enforce Team Best Practices

    \ No newline at end of file diff --git a/guide-to-practicing-overcoming-plateaus/index.html b/guide-to-practicing-overcoming-plateaus/index.html index 1e081ab..72af879 100644 --- a/guide-to-practicing-overcoming-plateaus/index.html +++ b/guide-to-practicing-overcoming-plateaus/index.html @@ -1,4 +1,4 @@ -A Guide to Practicing and Overcoming Plateaus | scraggo.com

    A Guide to Practicing and Overcoming Plateaus

    A long time student of mine recently began learning classical guitar. He had been studying jazz and blues for a number of years. He has a love for latin fingerstyle rhythms. The more lessons we had, the more he realized that he wanted to deepen his technical foundation. I recently told him:

    +

    A Guide to Practicing and Overcoming Plateaus

    A long time student of mine recently began learning classical guitar. He had been studying jazz and blues for a number of years. He has a love for latin fingerstyle rhythms. The more lessons we had, the more he realized that he wanted to deepen his technical foundation. I recently told him:

    “The number of times you’ll reach a plateau is inversely proportional to how deeply you practice.”

    @@ -536,4 +536,4 @@

    More Reading and Inspiration

  • Jamie Andreas at guitarprinciples.com - Read all that Jamie has to say. Jamie was one of the first people to inspire me to practice better.
  • The Bulletproof Musician - This has been a great blog for a long time.
  • Craig Sparks on Practicing - Fellow teacher and musician has these great words to share.
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/hash-tables-js/index.html b/hash-tables-js/index.html index a6b10aa..53c870f 100644 --- a/hash-tables-js/index.html +++ b/hash-tables-js/index.html @@ -1,4 +1,4 @@ -Tackling Hash Table Problems in JavaScript | scraggo.com

    Tackling Hash Table Problems in JavaScript

    Algorithms and data structures can be intimidating. The goal of this post is to explain some approaches to solving hash table algorithm problems providing clear examples with detailed solution explanations. I’m hoping this will help anyone uninitiated alleviate fears and make bigger strides in conquering these challenging problems.

    +

    Tackling Hash Table Problems in JavaScript

    Algorithms and data structures can be intimidating. The goal of this post is to explain some approaches to solving hash table algorithm problems providing clear examples with detailed solution explanations. I’m hoping this will help anyone uninitiated alleviate fears and make bigger strides in conquering these challenging problems.

    Why Hash Tables?

    While attending Fullstack Academy, I participated in an algorithms class taught by alumnus Clément Mihailescu, an employee of Google. I found the class to be enlightening and engaging. (I was also star-struck because he works at Google.) He founded AlgoExpert which is a top-notch platform for practicing interview problems. I highly recommend it for those who are serious about acing their interviews. I was inspired by the power of hash tables after the class and went on a journey to solve as many hash table problems as I could find.

    Hash Tables introduction

    @@ -714,4 +714,4 @@

    Longest Harmonious Subsequence (tagged as ‘Easy’)

    Parting Notes

    I’m no expert at algorithms in general, but I’m definitely enjoying learning about them. The more I learn, the more I’m able to visualize different approaches to problems and begin to optimize my solutions. Please contact me below if you have comments about this article and/or suggestions for improvement.

    -

    This “enrichment piece” was written as a student at Fullstack Academy.

    \ No newline at end of file +

    This “enrichment piece” was written as a student at Fullstack Academy.

    \ No newline at end of file diff --git a/honing-strengths-with-a-student-evaluation/index.html b/honing-strengths-with-a-student-evaluation/index.html index 82db269..3cb5693 100644 --- a/honing-strengths-with-a-student-evaluation/index.html +++ b/honing-strengths-with-a-student-evaluation/index.html @@ -1,4 +1,4 @@ -Honing Musical Strengths with a Student Evaluation | scraggo.com

    Honing Musical Strengths with a Student Evaluation

    From time to time, we can find ourselves stagnating when studying music (or any other topic). To help become immune to this, it’s useful to fully recognize our strengths and acknowledge our weaknesses. Every strength is an opportunity to improve further and if we can acknowledge where we are struggling then we can begin to grow much faster and reach excellence.

    +

    Honing Musical Strengths with a Student Evaluation

    From time to time, we can find ourselves stagnating when studying music (or any other topic). To help become immune to this, it’s useful to fully recognize our strengths and acknowledge our weaknesses. Every strength is an opportunity to improve further and if we can acknowledge where we are struggling then we can begin to grow much faster and reach excellence.

    Ask yourself the following questions. Give yourself a grade (1-10) for each attribute. Teachers may use this as a guide to evaluate students. Take the evaluation here.

    1. Attitude

    Are you enthusiastic? Do you find what you’re learning enjoyable? Do you want to know more? Do you come with preconceptions, expectations, or negative viewpoints from past experiences? If so, what are they?

    @@ -431,4 +431,4 @@

    I keep forgetting!

    Student 8 was very open minded and enjoyed guitar. The issue was that he continually made the same mistakes. We eventually crafted a routine which continually stressed the basics that we’ve gone over and we regularly reviewed pieces that he liked.
    Takeaway: If you find yourself unable to remember certain things, begin each lesson and practice session with a warm-up routine that includes the concepts and pieces that need to be remembered.

    What have you learned about yourself as a student?

    -

    Taking this evaluation has helped me as a musician and teacher in many ways - hopefully it can help you too. You can take the evaluation here and discuss your results with a qualified music instructor at SongMind Studios (instructions in the form). Otherwise, please share your experiences in a comment below!

    \ No newline at end of file +

    Taking this evaluation has helped me as a musician and teacher in many ways - hopefully it can help you too. You can take the evaluation here and discuss your results with a qualified music instructor at SongMind Studios (instructions in the form). Otherwise, please share your experiences in a comment below!

    \ No newline at end of file diff --git a/how-to-squash-commits/index.html b/how-to-squash-commits/index.html index 1b929fc..6a4e843 100644 --- a/how-to-squash-commits/index.html +++ b/how-to-squash-commits/index.html @@ -1,4 +1,4 @@ -How to Squash All Commits Related to a Single Issue into a Single Commit | scraggo.com

    How to Squash All Commits Related to a Single Issue into a Single Commit

    Updated Sep 3, 2020

    +

    How to Squash All Commits Related to a Single Issue into a Single Commit

    Updated Sep 3, 2020

    This article outlines how to use the “squash” feature of an interactive git rebase.

    What does “squashing” do?

    It allows you to take changes that are spread amongst multiple commits and consolidate them into one.

    @@ -434,4 +434,4 @@

    Resources

  • Squash All Commits Related to a Single Issue into a Single Commit
  • How to set up Visual Studio Code as your git editor

    -

    https://code.visualstudio.com/docs/editor/versioncontrol#_vs-code-as-git-editor

    \ No newline at end of file +

    https://code.visualstudio.com/docs/editor/versioncontrol#_vs-code-as-git-editor

    \ No newline at end of file diff --git a/index.html b/index.html index caf1504..b277d6a 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Home | scraggo.com

    All Posts

    (47)

    Thinkertoys - Generate Art and Business Ideas

    I’ve been on a quest to be more creative, to understand the creative process more deeply. I wrote about the difference between concrete ideas, the building blocks of finished products, and meta ideas, the blueprints that generate them. Using meta ideas, I would have no problem generating new ideas. More often than not, though, I wouldn’t know what to do with them. I’d get stuck, put the idea away…

    Introduction to Design Patterns: Why they're worth learning

    As developers, we’re constantly learning - and there’s a lot to learn in general because the tech industry is broad and fast-paced. We want to have all the main bases covered so that we can be ready for any situation. We often hear about design patterns and how they can enable us to write well-architected software using object-oriented programming. If you’re like me, you might file that away as a…

    Tech Talk - How I'd Improve My Capstone Project

    In February 2020, I returned to my bootcamp to give a tech talk on what I’d do to improve my Capstone project. (I also answer career and other questions from the audience at the end.) Download the slides here (PDF) I’m excited to share what I’ve learned so far from working on enterprise software for almost 2 years. The talk is a deep dive into the codebase that myself and three others worked on…

    Using question-prompter for study, self-reflection, and more

    I recently created a node command line app called question-prompter. It prompts you at your terminal to answer questions that you come up with. After you answer them, it saves them to a or file in a directory of your choosing. Background I find a lot of benefit from regularly checking in with myself. While many authors have written about this kind of reflection, Tim Ferriss comes to mind first…

    Meta Ideas - Generating Creative Content

    I’ve been writing down small music (and other) ideas for over 20 years. I’ve generally struggled to store, organize, and retrieve them effectively. As I was going through my archives recently, it dawned on me that there are two fundamental types of ideas: one is “concrete” and the other is “meta.” A concrete idea is specific and actionable. It may be a chord progression like: A minor for two and a…

    Contributing a New Feature to Open Source: @sindresorhus/is

    This post is a recount of my recent experience contributing to is, a JavaScript open source type checking library. https://github.com/sindresorhus/is https://www.npmjs.com/package/@sindresorhus/is I’ll outline the process from beginning to end: the initial filing of the feature request, implementing the feature, collaborating on the pull request, and getting the feature released. Some of the open…

    Testing immutable js with sinon custom matchers

    Problems with unexpected assertion failures can arise while testing immutablejs with sinon. This post is a brief guide on how to create a custom matcher that will correctly calculate the equivalence between a mock/stub/spy call with an immutable parameter. The way I’ll be making the assertion is with calledWith from sinon-chai (a plugin for chai that helps with making should or expect assertions for sinon mocks). This github issue on sinonjs outlines the problem...

    How to Squash All Commits Related to a Single Issue into a Single Commit

    Updated Sep 3, 2020 This article outlines how to use the “squash” feature of an interactive . What does “squashing” do? It allows you to take changes that are spread amongst multiple commits and consolidate them into one. Why should one consider squashing commits? A clean history makes tracking changes to a large codebase across time much easier. Many commits are small and unimportant in the grand…

    Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC

    The goal of this blog-series is to explain what frameworks do, why they’re used, and demonstrate with examples across many different frameworks. The series is aimed at those familiar with JavaScript syntax, accessing the DOM, functions, and classes (object-oriented programming). Further reading can be found at the bottom of this post. What is a JavaScript Framework? A framework is an imported…

    A 3 Step Process to Organizing Creativity

    It’s difficult to keep track of everything that needs to be done with your musical ideas. If you write with any frequency, these ideas can amass until there are so many that you can’t keep track of them. Your ideas might range from little snippets to near complete works. Here are some things that commonly go wrong for me: I don’t take enough time to think about where an idea needs to go to be…

    \ No newline at end of file +

    All Posts

    (47)

    Thinkertoys - Generate Art and Business Ideas

    I’ve been on a quest to be more creative, to understand the creative process more deeply. I wrote about the difference between concrete ideas, the building blocks of finished products, and meta ideas, the blueprints that generate them. Using meta ideas, I would have no problem generating new ideas. More often than not, though, I wouldn’t know what to do with them. I’d get stuck, put the idea away…

    Introduction to Design Patterns: Why they're worth learning

    As developers, we’re constantly learning - and there’s a lot to learn in general because the tech industry is broad and fast-paced. We want to have all the main bases covered so that we can be ready for any situation. We often hear about design patterns and how they can enable us to write well-architected software using object-oriented programming. If you’re like me, you might file that away as a…

    Tech Talk - How I'd Improve My Capstone Project

    In February 2020, I returned to my bootcamp to give a tech talk on what I’d do to improve my Capstone project. (I also answer career and other questions from the audience at the end.) Download the slides here (PDF) I’m excited to share what I’ve learned so far from working on enterprise software for almost 2 years. The talk is a deep dive into the codebase that myself and three others worked on…

    Using question-prompter for study, self-reflection, and more

    I recently created a node command line app called question-prompter. It prompts you at your terminal to answer questions that you come up with. After you answer them, it saves them to a or file in a directory of your choosing. Background I find a lot of benefit from regularly checking in with myself. While many authors have written about this kind of reflection, Tim Ferriss comes to mind first…

    Meta Ideas - Generating Creative Content

    I’ve been writing down small music (and other) ideas for over 20 years. I’ve generally struggled to store, organize, and retrieve them effectively. As I was going through my archives recently, it dawned on me that there are two fundamental types of ideas: one is “concrete” and the other is “meta.” A concrete idea is specific and actionable. It may be a chord progression like: A minor for two and a…

    Contributing a New Feature to Open Source: @sindresorhus/is

    This post is a recount of my recent experience contributing to is, a JavaScript open source type checking library. https://github.com/sindresorhus/is https://www.npmjs.com/package/@sindresorhus/is I’ll outline the process from beginning to end: the initial filing of the feature request, implementing the feature, collaborating on the pull request, and getting the feature released. Some of the open…

    Testing immutable js with sinon custom matchers

    Problems with unexpected assertion failures can arise while testing immutablejs with sinon. This post is a brief guide on how to create a custom matcher that will correctly calculate the equivalence between a mock/stub/spy call with an immutable parameter. The way I’ll be making the assertion is with calledWith from sinon-chai (a plugin for chai that helps with making should or expect assertions for sinon mocks). This github issue on sinonjs outlines the problem...

    How to Squash All Commits Related to a Single Issue into a Single Commit

    Updated Sep 3, 2020 This article outlines how to use the “squash” feature of an interactive . What does “squashing” do? It allows you to take changes that are spread amongst multiple commits and consolidate them into one. Why should one consider squashing commits? A clean history makes tracking changes to a large codebase across time much easier. Many commits are small and unimportant in the grand…

    Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC

    The goal of this blog-series is to explain what frameworks do, why they’re used, and demonstrate with examples across many different frameworks. The series is aimed at those familiar with JavaScript syntax, accessing the DOM, functions, and classes (object-oriented programming). Further reading can be found at the bottom of this post. What is a JavaScript Framework? A framework is an imported…

    \ No newline at end of file diff --git a/intro-to-js-frameworks01/index.html b/intro-to-js-frameworks01/index.html index 66d3e9d..70131b4 100644 --- a/intro-to-js-frameworks01/index.html +++ b/intro-to-js-frameworks01/index.html @@ -1,4 +1,4 @@ -Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC | scraggo.com

    Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC

    The goal of this blog-series is to explain what frameworks do, why they’re used, and demonstrate with examples across many different frameworks. The series is aimed at those familiar with JavaScript syntax, accessing the DOM, functions, and classes (object-oriented programming). [Further reading can be found at the bottom of this post.]

    +

    Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC

    The goal of this blog-series is to explain what frameworks do, why they’re used, and demonstrate with examples across many different frameworks. The series is aimed at those familiar with JavaScript syntax, accessing the DOM, functions, and classes (object-oriented programming). [Further reading can be found at the bottom of this post.]

    What is a JavaScript Framework?

    A framework is an imported codebase that adds structure to your code. The ones that are mentioned frequently these days are React, Vue, Angular, Backbone, Ember, Aurelia, and more. Many of them follow the Model–view–controller / MVC paradigm (while others may only do M, V, or C).

      @@ -477,4 +477,4 @@

      Further Reading

      })(); -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/karabiner-ts-multi-profile/index.html b/karabiner-ts-multi-profile/index.html index b135a78..72d41d3 100644 --- a/karabiner-ts-multi-profile/index.html +++ b/karabiner-ts-multi-profile/index.html @@ -1,4 +1,4 @@ -Notes on Karabiner-elements and karabiner-ts-multi-profile | scraggo.com

    Notes on Karabiner-elements and karabiner-ts-multi-profile

    I’ve been on a quest to make typing more ergonomic and functional. I want to minimize chording (simultaneous keypresses) and mouse use to reduce pain in my hands, put keys I use more often in more advantageous places, automate repetitive activities, etc.

    +

    Notes on Karabiner-elements and karabiner-ts-multi-profile

    I’ve been on a quest to make typing more ergonomic and functional. I want to minimize chording (simultaneous keypresses) and mouse use to reduce pain in my hands, put keys I use more often in more advantageous places, automate repetitive activities, etc.

    So, I was excited to discover Karabiner-Elements - free Mac software that allows you to do key remapping, control the mouse with the keyboard, run terminal commands, and much more.

    The aims of this post are 1) to share my research, joys, and struggles using Karabiner-Elements and 2) to share my karabiner config which has multi-profile support and utilizes karabiner.ts.

    Installation, Configuring, and Debugging in Karabiner-Elements

    @@ -755,4 +755,4 @@

    Karabiner limitations and other things to look out for

  • Switching profiles is sometimes slow - taking up to ~2 seconds.
  • Conclusion

    -

    Thanks for reading and a big thank you to the creators of Karabiner-Elements and karabiner.ts. I’m curious to hear if you try the utilities in my karabiner config repo.

    \ No newline at end of file +

    Thanks for reading and a big thank you to the creators of Karabiner-Elements and karabiner.ts. I’m curious to hear if you try the utilities in my karabiner config repo.

    \ No newline at end of file diff --git a/love-hate-immer-js/index.html b/love-hate-immer-js/index.html index 5842e9a..b1058fe 100644 --- a/love-hate-immer-js/index.html +++ b/love-hate-immer-js/index.html @@ -1,4 +1,4 @@ -My love hate relationship with ImmerJS | scraggo.com

    My love hate relationship with ImmerJS

    After having used immutable js for a while, discovering ImmerJS was a breath of fresh air. Where immutable js forces you to learn its gigantic API, ImmerJS takes advantage of ES6 Proxies. These allow you to modify a “draft” version of an object as if you’re mutating it, but the draft is actually a copy so you’re not mutating the original! The return of immer’s produce function always returns a perfect clone of the draft. ImmerJS also touts:

    +

    My love hate relationship with ImmerJS

    After having used immutable js for a while, discovering ImmerJS was a breath of fresh air. Where immutable js forces you to learn its gigantic API, ImmerJS takes advantage of ES6 Proxies. These allow you to modify a “draft” version of an object as if you’re mutating it, but the draft is actually a copy so you’re not mutating the original! The return of immer’s produce function always returns a perfect clone of the draft. ImmerJS also touts:

    Winner of the “Breakthrough of the year” React open source award and “Most impactful contribution” JavaScript open source award in 2019.

    Benefits

    @@ -504,4 +504,4 @@

    Spread assignment workaround

    Conclusion

    Be warned: finding workarounds (that aren’t documented) and getting errors related to modifying drafts bring the learning curve of ImmerJS up. I’m not going to peel ImmerJS out of the codebase I’m working on just yet, but I expect to discover more headaches while continuing to use it. I love ImmerJS when it simplifies things, but hate it when it gets in the way.

    Have any thoughts on using immer? Please share them with me!

    -

    Contact me

    \ No newline at end of file +

    Contact me

    \ No newline at end of file diff --git a/marketable-programming-skills/index.html b/marketable-programming-skills/index.html index 7eec682..8397b56 100644 --- a/marketable-programming-skills/index.html +++ b/marketable-programming-skills/index.html @@ -1,4 +1,4 @@ -Marketable Programming Skills | scraggo.com

    Marketable Programming Skills

    If you’ve been learning programming on your own, you may have made worked through some books, followed some online tutorials, and made a decent collection of simple apps. At a certain point you may wonder how much else you need to know to be able to start working as a programmer. I’m a self-taught coder with experience in web technologies (JavaScript, HTML, CSS, etc) and Python. Compiling some info from job listings has enlightened me to what’s in demand in my area (Chicago, IL, USA) and in general.

    +

    Marketable Programming Skills

    If you’ve been learning programming on your own, you may have made worked through some books, followed some online tutorials, and made a decent collection of simple apps. At a certain point you may wonder how much else you need to know to be able to start working as a programmer. I’m a self-taught coder with experience in web technologies (JavaScript, HTML, CSS, etc) and Python. Compiling some info from job listings has enlightened me to what’s in demand in my area (Chicago, IL, USA) and in general.

    Python-related Jobs

    1. Bots (read more on Quora)

    If you can automate tasks on the web using Mechanize, Requests, BeautifulSoup, and Selenium, there are many freelance temp jobs as well as part-time and full-time jobs.

    @@ -491,4 +491,4 @@

    MISC Skills Needed

  • Functional Programming: (Scala, Clojure, Ocaml, F#, Erlang, Elixir)
  • Haskell Backend
  • Firebase
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/meta-ideas-generating-creative-content/index.html b/meta-ideas-generating-creative-content/index.html index 532dfce..528f7f2 100644 --- a/meta-ideas-generating-creative-content/index.html +++ b/meta-ideas-generating-creative-content/index.html @@ -1,4 +1,4 @@ -Meta Ideas - Generating Creative Content | scraggo.com

    Meta Ideas - Generating Creative Content

    I’ve been writing down small music (and other) ideas for over 20 years. I’ve generally struggled to store, organize, and retrieve them effectively. As I was going through my archives recently, it dawned on me that there are two fundamental types of ideas: one is “concrete” and the other is “meta.”

    +

    Meta Ideas - Generating Creative Content

    I’ve been writing down small music (and other) ideas for over 20 years. I’ve generally struggled to store, organize, and retrieve them effectively. As I was going through my archives recently, it dawned on me that there are two fundamental types of ideas: one is “concrete” and the other is “meta.”

    A concrete idea is specific and actionable. It may be a chord progression like:

    A minor for two and a half bars, then a G major chord for half a bar. 132 beats per minute, 4/4 time…

    @@ -645,4 +645,4 @@

    Thinking Visually

  • Dan Roam Visual thinking Vivid - YouTube
  • Share your Meta Ideas

    -

    Have any suggestions or ideas of your own? Please contact me.

    \ No newline at end of file +

    Have any suggestions or ideas of your own? Please contact me.

    \ No newline at end of file diff --git a/multimodal-learning-unleashing-human-memory/index.html b/multimodal-learning-unleashing-human-memory/index.html index f7cccb0..54fe059 100644 --- a/multimodal-learning-unleashing-human-memory/index.html +++ b/multimodal-learning-unleashing-human-memory/index.html @@ -1,4 +1,4 @@ -Multimodal Learning - Unleashing the human memory | scraggo.com

    Multimodal Learning - Unleashing the human memory

    Below is the blog version of a talk I gave on memorization techniques.

    + \ No newline at end of file +
    \ No newline at end of file diff --git a/music/discography/index.html b/music/discography/index.html index 95d00bd..740ea7a 100644 --- a/music/discography/index.html +++ b/music/discography/index.html @@ -1,4 +1,4 @@ -Music Discography | scraggo.com

    Why I Support Bandcamp

    Bandcamp is the ideal music-sharing platform for a DIY artist. They take 20% and pay daily and don't require approvals. The bigger platforms take 30-40% and give the artist no control of their music. Read more

    Discography

    scraggo's releases onBandcampSpotifyApple MusicYoutube MusicGoogle PlayAmazon

    • Identity BandcampSpotifyApple MusicYoutube MusicGoogle PlayAmazon
    • Creative Being BandcampSpotifyApple MusicYoutube MusicGoogle PlayAmazon

    Collaborations

    Driven to Clarity's releases onSpotifyApple MusicYoutube MusicGoogle PlayAmazon

    • Heading Out SpotifyApple MusicYoutube MusicGoogle PlayAmazon

    Rapid Dissension's releases onBeatportSpotifyApple MusicYoutube MusicGoogle PlayAmazon

      \ No newline at end of file +

      Why I Support Bandcamp

      Bandcamp is the ideal music-sharing platform for a DIY artist. They take 20% and pay daily and don't require approvals. The bigger platforms take 30-40% and give the artist no control of their music. Read more

      Discography

      scraggo's releases onBandcampSpotifyApple MusicYoutube MusicGoogle PlayAmazon

      • Identity BandcampSpotifyApple MusicYoutube MusicGoogle PlayAmazon
      • Creative Being BandcampSpotifyApple MusicYoutube MusicGoogle PlayAmazon

      Collaborations

      Driven to Clarity's releases onSpotifyApple MusicYoutube MusicGoogle PlayAmazon

      • Heading Out SpotifyApple MusicYoutube MusicGoogle PlayAmazon

      Rapid Dissension's releases onBeatportSpotifyApple MusicYoutube MusicGoogle PlayAmazon

        \ No newline at end of file diff --git a/music/index.html b/music/index.html index 6d02900..19f84c8 100644 --- a/music/index.html +++ b/music/index.html @@ -1,4 +1,4 @@ -Posts - Music | scraggo.com

        Music Posts

        (12)

        Thinkertoys - Generate Art and Business Ideas

        I’ve been on a quest to be more creative, to understand the creative process more deeply. I wrote about the difference between concrete ideas, the building blocks of finished products, and meta ideas, the blueprints that generate them. Using meta ideas, I would have no problem generating new ideas. More often than not, though, I wouldn’t know what to do with them. I’d get stuck, put the idea away…

        Meta Ideas - Generating Creative Content

        I’ve been writing down small music (and other) ideas for over 20 years. I’ve generally struggled to store, organize, and retrieve them effectively. As I was going through my archives recently, it dawned on me that there are two fundamental types of ideas: one is “concrete” and the other is “meta.” A concrete idea is specific and actionable. It may be a chord progression like: A minor for two and a…

        A 3 Step Process to Organizing Creativity

        It’s difficult to keep track of everything that needs to be done with your musical ideas. If you write with any frequency, these ideas can amass until there are so many that you can’t keep track of them. Your ideas might range from little snippets to near complete works. Here are some things that commonly go wrong for me: I don’t take enough time to think about where an idea needs to go to be…

        \ No newline at end of file +

        Music Posts

        (12)

        Thinkertoys - Generate Art and Business Ideas

        I’ve been on a quest to be more creative, to understand the creative process more deeply. I wrote about the difference between concrete ideas, the building blocks of finished products, and meta ideas, the blueprints that generate them. Using meta ideas, I would have no problem generating new ideas. More often than not, though, I wouldn’t know what to do with them. I’d get stuck, put the idea away…

        Meta Ideas - Generating Creative Content

        I’ve been writing down small music (and other) ideas for over 20 years. I’ve generally struggled to store, organize, and retrieve them effectively. As I was going through my archives recently, it dawned on me that there are two fundamental types of ideas: one is “concrete” and the other is “meta.” A concrete idea is specific and actionable. It may be a chord progression like: A minor for two and a…

        \ No newline at end of file diff --git a/music/teaching-resources/index.html b/music/teaching-resources/index.html index de97937..36e62ef 100644 --- a/music/teaching-resources/index.html +++ b/music/teaching-resources/index.html @@ -1,4 +1,4 @@ -Music Teaching Resources | scraggo.com

        Teaching Resources

        +

        Teaching Resources

        In addition to the music blog posts available on this site, below are free and paid resources that contain instructional information on guitar, songwriting, recording, and more.

        Dave's Lessons on mikesmasterclasses.com

        $29.95 each

        @@ -389,4 +389,4 @@

        Category: Guitar - Jazz Repertoire and Improvisation

        So What Beginner Jazz Lesson Miles Davis Dorian Licks We discuss how to play the jazz tune "So What," how to play the D and Eb Dorian modes, and how to improvise within those positions. This incredibly popular YouTube lesson also has an accompanying lesson PDF.

        Beginner Jazz Guitar Basic Shell Chord Voicings using Autumn Leaves In this lesson, using the jazz standard Autumn Leaves, I explore basic shell voicings which are simple on the hands, make jazz tensions possible, and promote mobility across the guitar neck. These are either Root, 3rd, 7th voicings (if the 5th string is the root) or Root, 7th, 3rd voicings (if the 6th string is the root).

        Category: Guitar Warmups

        -

        Guitar Warmup - String Skipping and Stretching This guitar warmup includes the working of all combinations of the 4 left hand fingers, stretches, and inside/outside picking with string skips. It's a doozy - hope you enjoy. It is recommended for intermediate to advanced players.

        \ No newline at end of file +

        Guitar Warmup - String Skipping and Stretching This guitar warmup includes the working of all combinations of the 4 left hand fingers, stretches, and inside/outside picking with string skips. It's a doozy - hope you enjoy. It is recommended for intermediate to advanced players.

        \ No newline at end of file diff --git a/now-attending-fullstack/index.html b/now-attending-fullstack/index.html index 0e411fa..b197eb9 100644 --- a/now-attending-fullstack/index.html +++ b/now-attending-fullstack/index.html @@ -1,4 +1,4 @@ -Now Attending: Fullstack Academy | scraggo.com

        Now Attending: Fullstack Academy

        Why I’m attending Fullstack Academy

        +

        Now Attending: Fullstack Academy

        Why I’m attending Fullstack Academy

        Since discovering a love for guitar and composition in my teens, I decided to pursue a career as a freelance music teacher, composer, recording engineer, and performing guitarist. After a decade of this, I realized that the rockstar dream didn’t suit me and I was tired of chasing it. I’d be happier with a more stable career that challenged me intellectually. I’ve always enjoyed working with technology, so the field of programming piqued my interest.

        My girlfriend encouraged me to start teaching myself the basics of programming to see if I would like it. After a short amount of time doing so, I was surprised to find that I was completely hooked on it (more details to follow). I wanted to make this new career a reality as soon as possible. I began looking into formally studying computer science, coding bootcamps, and other DIY options.

        Bootcamps: The Cons

        @@ -404,4 +404,4 @@

        My background in more detail

        More

        This blog post was written as a student of Fullstack Academy.

        Resources

        -

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file +

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file diff --git a/offline-plugin-app-shell-fallback/index.html b/offline-plugin-app-shell-fallback/index.html index 298a9ab..c9b3ded 100644 --- a/offline-plugin-app-shell-fallback/index.html +++ b/offline-plugin-app-shell-fallback/index.html @@ -1,4 +1,4 @@ -
        \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}}
        \ No newline at end of file diff --git a/organizing-creativity-3-step-process/index.html b/organizing-creativity-3-step-process/index.html index 3084d6f..feb6681 100644 --- a/organizing-creativity-3-step-process/index.html +++ b/organizing-creativity-3-step-process/index.html @@ -1,4 +1,4 @@ -A 3 Step Process to Organizing Creativity | scraggo.com

        A 3 Step Process to Organizing Creativity

        It’s difficult to keep track of everything that needs to be done with your musical ideas. If you write with any frequency, these ideas can amass until there are so many that you can’t keep track of them. Your ideas might range from little snippets to near complete works. Here are some things that commonly go wrong for me:

        +

        A 3 Step Process to Organizing Creativity

        It’s difficult to keep track of everything that needs to be done with your musical ideas. If you write with any frequency, these ideas can amass until there are so many that you can’t keep track of them. Your ideas might range from little snippets to near complete works. Here are some things that commonly go wrong for me:

        1. I don’t take enough time to think about where an idea needs to go to be improved, completed, and fully fleshed out.
        2. I abandon the ideas for months or years, then become unable to find it easily (or at all) if I want to revisit it.
        3. @@ -409,4 +409,4 @@

          3. Idea Refinement and Completion

        4. Get input from musicians you respect if you’re working alone.

        Conclusion

        -

        Composition is a process that everyone discovers and refines for themselves. I hope my suggestions on generating, planning, and refining your ideas are helpful. If you have any thoughts on creativity and productivity, feel free to comment below or join the discussion on our Facebook page!

        \ No newline at end of file +

        Composition is a process that everyone discovers and refines for themselves. I hope my suggestions on generating, planning, and refining your ideas are helpful. If you have any thoughts on creativity and productivity, feel free to comment below or join the discussion on our Facebook page!

        \ No newline at end of file diff --git a/other/index.html b/other/index.html index 123404e..a4bbbec 100644 --- a/other/index.html +++ b/other/index.html @@ -1,4 +1,4 @@ -Posts - Other | scraggo.com \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index a76a924..d512968 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"8585e0a69634c301db79"} +{"webpackCompilationHash":"aa559021b0e0f2fc7b3b"} diff --git a/prepare-for-initial-screens/index.html b/prepare-for-initial-screens/index.html index b1b255a..73e4ceb 100644 --- a/prepare-for-initial-screens/index.html +++ b/prepare-for-initial-screens/index.html @@ -1,4 +1,4 @@ -How to ace your initial programming job screen | scraggo.com

        How to ace your initial programming job screen

        +

        How to ace your initial programming job screen

        Your resume and cover letter surely made a positive impact, but the most important evaluation has yet to come.

        If you’re searching for your first software development job, the process can be daunting. You may have heard that after sending your resume to a company, there’s an initial screen. This is usually done over the phone, but sometimes it happens in-person. Your resume and cover letter (the first impression) surely made a positive impact, but the most important evaluation has yet to come: making a human connection with a company recruiter. They’ll be mentally noting how you speak, your confidence level, how passionate you are, and much more.

        @@ -492,4 +492,4 @@

        Wrap up

        Do I feel confident about my technical knowledge and experience? Am I excited about the company’s culture and products? Is the phone interview going in such a way that I don’t get the impression that I’m being negatively judged? Possibly most importantly, do I feel like the company will value my contributions and pay me a fair rate?

        I realize now that all my “mistakes” during phone screens were all part of learning how to navigate this industry. Sure, I could’ve had better answers. Sure, I could’ve been more targeted about what I was looking for. But sometimes you just have to “go for it” and see what sticks.

        Resources

        -

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file +

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file diff --git a/preparing-demo-for-studio/index.html b/preparing-demo-for-studio/index.html index 1ab6666..28a1f25 100644 --- a/preparing-demo-for-studio/index.html +++ b/preparing-demo-for-studio/index.html @@ -1,4 +1,4 @@ -Preparing Your Song Demo for the Studio | scraggo.com

        Preparing Your Song Demo for the Studio

        We songwriters put a lot of work into our songs.

        +

        Preparing Your Song Demo for the Studio

        We songwriters put a lot of work into our songs.

        Putting together interesting chord voicings, refining our lyrics to perfection, and getting the form ‘just right’ can take a lot of effort, but be very gratifying. When your song is finally finished, you might want to make the investment of bringing it to a studio with a band to lay down all of the parts.

        A Final Note />

        -

        We hope this helps! Leave a comment to let us know how you prepare your demos for recording sessions.

        \ No newline at end of file +

        We hope this helps! Leave a comment to let us know how you prepare your demos for recording sessions.

        \ No newline at end of file diff --git a/programming-with-more-ease/index.html b/programming-with-more-ease/index.html index d3de15b..b83c7fc 100644 --- a/programming-with-more-ease/index.html +++ b/programming-with-more-ease/index.html @@ -1,4 +1,4 @@ -Programming with more ease | scraggo.com

        Programming with more ease

        As professional programmers, the bulk of what we do is solving problems.

        +

        Programming with more ease

        As professional programmers, the bulk of what we do is solving problems.

        A lot of the time, I’m motivated by problem-solving challenges. But sometimes I hit a wall. A given challenge can become a problem that I’m frustratingly unable to solve.

        Often, this frustration would spiral into a worse mental state. I’d imagine the problem as a scary, overwhelming, difficult to defeat monster - more difficult than it really is. I’d put a lot of pressure on myself. ”Solving problems is my job”, after all.

        You can probably see that this state of mind that isn’t conducive to problem solving.

        @@ -454,4 +454,4 @@

        Resources

      • Socratic method - Wikipedia
      • How Do Work Breaks Help Your Brain? 5 Surprising Answers | Psychology Today
      • To Become a Better Writer, Be a Frequent Walker | Psychology Today
      • -
        \ No newline at end of file +
        \ No newline at end of file diff --git a/python-classes-guess-the-number/index.html b/python-classes-guess-the-number/index.html index 6cf12f8..a64f0e0 100644 --- a/python-classes-guess-the-number/index.html +++ b/python-classes-guess-the-number/index.html @@ -1,4 +1,4 @@ -Using a Class in Python as a Code Wrapper for a Simple Game | scraggo.com

        Using a Class in Python as a Code Wrapper for a Simple Game

        Object-oriented design is a powerful programming paradigm that can be intimidating to anyone trying to learn how to use it. I worked through a number of excellent tutorials and books on the subject, but struggled to apply the concepts to my own code. I decided to convert a working program that didn’t use OOP and wrap it in a single class.

        +

        Using a Class in Python as a Code Wrapper for a Simple Game

        Object-oriented design is a powerful programming paradigm that can be intimidating to anyone trying to learn how to use it. I worked through a number of excellent tutorials and books on the subject, but struggled to apply the concepts to my own code. I decided to convert a working program that didn’t use OOP and wrap it in a single class.

        The program I chose was Guess the Number written by Al Sweigart for his book Invent Your Own Computer Games with Python. This book is an excellent way to learn Python 3 (and also a fun way!)

        After you’ve looked at the code, you’ll notice that the game doesn’t include any options. It runs only once. There are no functions, only global variables. It does well for its purpose as a program that teaches beginning concepts, but it’s not extendable as-is. You could certainly wrap it all in a single “main” function, then wrap that function in a while loop, and that would solve a few problems, but I wanted to go beyond those simple additions.

        The full code for the class-extended program is here. Below, I will explain the additions and changes from adding object-orientation.

        @@ -469,4 +469,4 @@

        More Resources on OOP in Python

      • Python OOP - Deck of Cards - YouTube
      • Python’s Program to demonstrate the use of Class, Object and Module
      • Coder’s Apprentice - see OOP chapters
      • -
        \ No newline at end of file +
        \ No newline at end of file diff --git a/reading-list/index.html b/reading-list/index.html index 6571984..8514a22 100644 --- a/reading-list/index.html +++ b/reading-list/index.html @@ -1,4 +1,4 @@ -Reading List | scraggo.com

        My favorite books and essays (most recently read listed first)

        +

        My favorite books and essays (most recently read listed first)

        Check out these reading lists for more ideas on what to read next: Derek Sivers, Ryan Holiday, James Clear

        -
        Filter by:
        Lean principles applied to business and life. "Fix what bugs you." Free download.
        Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones - by James Clear
        Goals are useful for setting a direction, but systems are best for making progress. Author link
        The central premise is that if you think better (by examining and cognitive distortions with more accurate thoughts), you'll feel better. A seminal work of Cognitive Therapy.
        Learn how to generate, recognize, voice, and champion original ideas. Better manage your emotional states, spark ideas in a team, and nurture originality.
        Quiet: The Power of Introverts in a World That Can't Stop Talking - by Susan Cain
        Quiet is an antidote for society's fixation with sociability and extroversion. The book takes a tour through the wide-ranging research on introversion, demonstrating its underestimated upside – and how we need to adapt to take advantage of it.
        Think Like a Rocket Scientist: Simple Strategies You Can Use to Make Giant Leaps in Work and Life - by Ozan Varol
        Through engaging stories to illustrate key concepts, Varol shares how to Launch, Accelerate, and Achieve. In Launch, we explore the topics of embracing uncertainty, reasoning from first principles, and thinking creatively. In Accelerate, we consider how we can improve our approach to problem solving. In Achieve, we learn how to respond to the flip-side outcomes of failure and success. Author link Notes
        Being Peace - by Thich Nhat Hanh
        This book shows how our state of mind and body can make the world a peaceful place. We learn to transform the very situations that pressure and antagonize us into opportunities for practicing mindfulness.
        Breath: The New Science of a Lost Art - by James Nestor
        This book is filled with great tips, exercises, and anecdotes. Breathing exclusively through my nose has been a game-changer for sleep, singing, and more. Author link
        Essays - by Dean Schlecht
        In addition to the essays, this psychotherapist provides meditation audio files that put your "active imagination" (a concept accredited to Carl Jung) to use. Author link
        It's Not Always Depression: Working the Change Triangle to Listen to the Body, Discover Core Emotions, and Connect to Your Authentic Self - by Hilary Jacobs Hendel
        The author teaches the "Change Triangle" methodology for processing emotions, calming, etc. Author link
        Man's Search for Meaning - by Victor Frankl
        In Man’s Search for Meaning, Viktor Frankl tells his story of surviving a concentration camp and how this experience led to his theory on the importance of meaning in one’s life (Logotherapy). You can find meaning in work (by doing something significant), in love (by caring for another person), and in courage during difficult times. Notes
        The Surrender Experiment: My Journey into Life's Perfection - by Michael Singer
        A much needed perspective shift. Why expecting reality to conform to your desires is a guaranteed path to disappointment. Instead, saying yes to opportunities presented to you and learning to be neutral (or even happy) about events you normally would be displeased with. Author is very much into meditation and being in touch with your higher mind / deeper self. Author link
        The Big Leap - by Gay Hendricks
        Find your Zone of Genius. Conquer your self-imposed Upper Limits.
        is a massive compendium of everything Tim Ferriss has learned about health, wealth and wisdom from interviewing over 200 world-class performers on his podcast, The Tim Ferriss show. All about Tim Ferriss
        Habit 1: Be Proactive. Habit 2: Begin With the End in Mind. Habit 3: Put First Things First. Habit 4: Think Win-Win. Habit 5: Seek First to Understand, Then to Be Understood. Habit 6: Synergize. Habit 7: Sharpen the Saw. Author link
        Eastern Body, Western Mind - by Anodea Judith
        Effortless Mastery - by Kenny Werner
        Through the use of humor and nearly 400 drawings, charts, and diagrams, serious philosophical topics come alive for the reader without compromising the importance of the subject matter.
        Outliers: The Story of Success - by Malcolm Gladwell
        The Advancing Guitarist - by Mick Goodrick
        The Four Agreements: A Practical Guide to Personal Freedom (A Toltec Wisdom Book) - by Don Miguel Ruiz
        The Music Lesson - by Victor Wooten
        The Tipping Point - by Malcolm Gladwell
        The War of Art - by Steven Pressfield
        The Way of Zen - by Alan Watts
        Zen Guitar - by Philip Toshio Sudo
        Lovely and very quotable. May transform how you approach guitar and music.
        Everyday decisions have become increasingly complex due to the overwhelming abundance of choice with which we are presented. TED Talk
        Astrophysics for People in a Hurry - by Neil deGrasse Tyson
        Creative Quest - by Questlove
        Using examples from scientific studies and his Mindfulness-Based Stress Reduction program, the author motivates us to engage in formal and informal meditation practices. These include sitting, scanning our bodies, gentle yoga, walking, and examining the stressors in our lives through the lens of wholeness.
        Detox Your Thoughts: Quit Negative Self-Talk for Good and Discover the Life You've Always Wanted - by Andrea Bonior
        Heart Breath Mind: Train Your Heart to Conquer Stress and Achieve Success - by Dr. Leah Lagos
        10-week program to improve overall body functioning and reduce stress. This includes increasing heart rate variability (HRV), finding your resonant breathing frequency, and using exercises to reliably work through challenging emotions. Author link Notes
        Hitchhiker's Guide to the Galaxy - by Douglas Adams
        Life Loves You: 7 Spiritual Practices to Heal Your Life - by Robert Holden and Louise Hay
        Adult Children of Emotionally Immature Parents: How to Heal from Distant, Rejecting, or Self-Involved Parents - by Lindsay C. Gibson
        Focusing - by Eugene Gendlin
        In the same vein as It’s Not Always Depression. I really like the terminology the author uses. Author link
        Can’t Hurt Me - by David Goggins
        Daring Greatly - by Brene Brown
        This strongly worded opinion piece is organized into two parts. The first part, "Lamentation", criticizes the way mathematics is typically taught in American schools and argues for an aesthetic, intuitive, and problem-oriented approach to teaching. The second part, "Exultation", gives specific examples of how to teach mathematics as an art. PDF
        The Art of Learning: An Inner Journey to Optimal Performance - by Josh Waitzkin
        Nice way to learn Python and programming. Free download.
        The Desire Map - by Danielle LaPorte
        The Story of Philosophy: The Lives and Opinions of the World's Greatest Philosophers - by Will Durant
        You Are a Badass: How to Stop Doubting Your Greatness and Start Living an Awesome Life - by Jen Sincero
        Drop Dead Healthy: One Man's Humble Quest for Bodily Perfection - by A. J. Jacobs
        Lean" strategy as demonstrated by the practices and success of the Toyota car company.
        You Can Heal Your Life - by Louise Hay
        All You Need to Know About the Music Business - by Donald S. Passman
        As a Man Thinketh - by James Allen
        Conversations with God - by Neale Donald Walsch
        Getting Things Done - by David Allen
        Introducing Jung - by Maggie Hyde, Michael McGuinness, Richard Appignanesi
        Music and the Mind - by Anthony Storr
        Narcissus and Goldmund - by Hermann Hesse
        Neuro-linguistic Programming for Dummies - by Romilla Ready and Kate Burton
        Rational Mysticism: Spirituality Meets Science in the Search for Enlightenment - by John Horgan
        Siddhartha - by Hermann Hesse
        The 4 Hour Body: An Uncommon Guide to Rapid Fat Loss, Incredible Sex and Becoming Superhuman - by Tim Ferriss
        The 4-Hour Workweek: Escape 9-5, Live Anywhere, and Join the New Rich - by Tim Ferriss
        The Meaning of Dreams - by Calvin Hall
        The Power of Habit - by Charles Duhigg
        The Power of Now: A Guide to Spiritual Enlightenment - by Eckhart Tolle
        The Prophet - by Kahlil Gibran
        The Selfish Gene - by Richard Dawkins
        The Tao of Physics: An Exploration of the Parallels between Modern Physics and Eastern Mysticism - by Fritjof Capra
        Think Better: An Innovator's Guide to Productive Thinking - by Tim Hurson
        Favorite chapter is on Divergent Thinking Tim Hurson talks about Productive Thinking | YouTube
        This is Your Brain on Music - by Daniel J. Levitin
        Thus Spoke Zarathustra - by Friederich Nietzsche
        Why Beauty Is Truth: The History of Symmetry - by Ian Stewart
        Guitar Technique - by Hector Quine
        Your job is not to be a fire-killer. Your job is to be a fire-prevention specialist. Stop expending energy in the constant repair of the bad results that have been produced by your unseen and therefore unmanaged systems. Instead, spend your days observing and then managing the systems that are creating the results. Author link
        \ No newline at end of file +
        Filter by:
        Lean principles applied to business and life. "Fix what bugs you." Free download.
        Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones - by James Clear
        Goals are useful for setting a direction, but systems are best for making progress. Author link
        The central premise is that if you think better (by examining and cognitive distortions with more accurate thoughts), you'll feel better. A seminal work of Cognitive Therapy.
        Learn how to generate, recognize, voice, and champion original ideas. Better manage your emotional states, spark ideas in a team, and nurture originality.
        Quiet: The Power of Introverts in a World That Can't Stop Talking - by Susan Cain
        Quiet is an antidote for society's fixation with sociability and extroversion. The book takes a tour through the wide-ranging research on introversion, demonstrating its underestimated upside – and how we need to adapt to take advantage of it.
        Think Like a Rocket Scientist: Simple Strategies You Can Use to Make Giant Leaps in Work and Life - by Ozan Varol
        Through engaging stories to illustrate key concepts, Varol shares how to Launch, Accelerate, and Achieve. In Launch, we explore the topics of embracing uncertainty, reasoning from first principles, and thinking creatively. In Accelerate, we consider how we can improve our approach to problem solving. In Achieve, we learn how to respond to the flip-side outcomes of failure and success. Author link Notes
        Being Peace - by Thich Nhat Hanh
        This book shows how our state of mind and body can make the world a peaceful place. We learn to transform the very situations that pressure and antagonize us into opportunities for practicing mindfulness.
        Breath: The New Science of a Lost Art - by James Nestor
        This book is filled with great tips, exercises, and anecdotes. Breathing exclusively through my nose has been a game-changer for sleep, singing, and more. Author link
        Essays - by Dean Schlecht
        In addition to the essays, this psychotherapist provides meditation audio files that put your "active imagination" (a concept accredited to Carl Jung) to use. Author link
        It's Not Always Depression: Working the Change Triangle to Listen to the Body, Discover Core Emotions, and Connect to Your Authentic Self - by Hilary Jacobs Hendel
        The author teaches the "Change Triangle" methodology for processing emotions, calming, etc. Author link
        Man's Search for Meaning - by Victor Frankl
        In Man’s Search for Meaning, Viktor Frankl tells his story of surviving a concentration camp and how this experience led to his theory on the importance of meaning in one’s life (Logotherapy). You can find meaning in work (by doing something significant), in love (by caring for another person), and in courage during difficult times. Notes
        The Surrender Experiment: My Journey into Life's Perfection - by Michael Singer
        A much needed perspective shift. Why expecting reality to conform to your desires is a guaranteed path to disappointment. Instead, saying yes to opportunities presented to you and learning to be neutral (or even happy) about events you normally would be displeased with. Author is very much into meditation and being in touch with your higher mind / deeper self. Author link
        The Big Leap - by Gay Hendricks
        Find your Zone of Genius. Conquer your self-imposed Upper Limits.
        is a massive compendium of everything Tim Ferriss has learned about health, wealth and wisdom from interviewing over 200 world-class performers on his podcast, The Tim Ferriss show. All about Tim Ferriss
        Habit 1: Be Proactive. Habit 2: Begin With the End in Mind. Habit 3: Put First Things First. Habit 4: Think Win-Win. Habit 5: Seek First to Understand, Then to Be Understood. Habit 6: Synergize. Habit 7: Sharpen the Saw. Author link
        Eastern Body, Western Mind - by Anodea Judith
        Effortless Mastery - by Kenny Werner
        Through the use of humor and nearly 400 drawings, charts, and diagrams, serious philosophical topics come alive for the reader without compromising the importance of the subject matter.
        Outliers: The Story of Success - by Malcolm Gladwell
        The Advancing Guitarist - by Mick Goodrick
        The Four Agreements: A Practical Guide to Personal Freedom (A Toltec Wisdom Book) - by Don Miguel Ruiz
        The Music Lesson - by Victor Wooten
        The Tipping Point - by Malcolm Gladwell
        The War of Art - by Steven Pressfield
        The Way of Zen - by Alan Watts
        Zen Guitar - by Philip Toshio Sudo
        Lovely and very quotable. May transform how you approach guitar and music.
        Everyday decisions have become increasingly complex due to the overwhelming abundance of choice with which we are presented. TED Talk
        Astrophysics for People in a Hurry - by Neil deGrasse Tyson
        Creative Quest - by Questlove
        Using examples from scientific studies and his Mindfulness-Based Stress Reduction program, the author motivates us to engage in formal and informal meditation practices. These include sitting, scanning our bodies, gentle yoga, walking, and examining the stressors in our lives through the lens of wholeness.
        Detox Your Thoughts: Quit Negative Self-Talk for Good and Discover the Life You've Always Wanted - by Andrea Bonior
        Heart Breath Mind: Train Your Heart to Conquer Stress and Achieve Success - by Dr. Leah Lagos
        10-week program to improve overall body functioning and reduce stress. This includes increasing heart rate variability (HRV), finding your resonant breathing frequency, and using exercises to reliably work through challenging emotions. Author link Notes
        Hitchhiker's Guide to the Galaxy - by Douglas Adams
        Life Loves You: 7 Spiritual Practices to Heal Your Life - by Robert Holden and Louise Hay
        Adult Children of Emotionally Immature Parents: How to Heal from Distant, Rejecting, or Self-Involved Parents - by Lindsay C. Gibson
        Focusing - by Eugene Gendlin
        In the same vein as It’s Not Always Depression. I really like the terminology the author uses. Author link
        Can’t Hurt Me - by David Goggins
        Daring Greatly - by Brene Brown
        This strongly worded opinion piece is organized into two parts. The first part, "Lamentation", criticizes the way mathematics is typically taught in American schools and argues for an aesthetic, intuitive, and problem-oriented approach to teaching. The second part, "Exultation", gives specific examples of how to teach mathematics as an art. PDF
        The Art of Learning: An Inner Journey to Optimal Performance - by Josh Waitzkin
        Nice way to learn Python and programming. Free download.
        The Desire Map - by Danielle LaPorte
        The Story of Philosophy: The Lives and Opinions of the World's Greatest Philosophers - by Will Durant
        You Are a Badass: How to Stop Doubting Your Greatness and Start Living an Awesome Life - by Jen Sincero
        Drop Dead Healthy: One Man's Humble Quest for Bodily Perfection - by A. J. Jacobs
        Lean" strategy as demonstrated by the practices and success of the Toyota car company.
        You Can Heal Your Life - by Louise Hay
        All You Need to Know About the Music Business - by Donald S. Passman
        As a Man Thinketh - by James Allen
        Conversations with God - by Neale Donald Walsch
        Getting Things Done - by David Allen
        Introducing Jung - by Maggie Hyde, Michael McGuinness, Richard Appignanesi
        Music and the Mind - by Anthony Storr
        Narcissus and Goldmund - by Hermann Hesse
        Neuro-linguistic Programming for Dummies - by Romilla Ready and Kate Burton
        Rational Mysticism: Spirituality Meets Science in the Search for Enlightenment - by John Horgan
        Siddhartha - by Hermann Hesse
        The 4 Hour Body: An Uncommon Guide to Rapid Fat Loss, Incredible Sex and Becoming Superhuman - by Tim Ferriss
        The 4-Hour Workweek: Escape 9-5, Live Anywhere, and Join the New Rich - by Tim Ferriss
        The Meaning of Dreams - by Calvin Hall
        The Power of Habit - by Charles Duhigg
        The Power of Now: A Guide to Spiritual Enlightenment - by Eckhart Tolle
        The Prophet - by Kahlil Gibran
        The Selfish Gene - by Richard Dawkins
        The Tao of Physics: An Exploration of the Parallels between Modern Physics and Eastern Mysticism - by Fritjof Capra
        Think Better: An Innovator's Guide to Productive Thinking - by Tim Hurson
        Favorite chapter is on Divergent Thinking Tim Hurson talks about Productive Thinking | YouTube
        This is Your Brain on Music - by Daniel J. Levitin
        Thus Spoke Zarathustra - by Friederich Nietzsche
        Why Beauty Is Truth: The History of Symmetry - by Ian Stewart
        Guitar Technique - by Hector Quine
        Your job is not to be a fire-killer. Your job is to be a fire-prevention specialist. Stop expending energy in the constant repair of the bad results that have been produced by your unseen and therefore unmanaged systems. Instead, spend your days observing and then managing the systems that are creating the results. Author link
        \ No newline at end of file diff --git a/recruiters-and-junior-devs/index.html b/recruiters-and-junior-devs/index.html index 6178d19..5c0487f 100644 --- a/recruiters-and-junior-devs/index.html +++ b/recruiters-and-junior-devs/index.html @@ -1,4 +1,4 @@ -Should junior developers work with recruiters? | scraggo.com

        Should junior developers work with recruiters?

        This is the first of a handful of posts about the 3-month search for my first full-time developer job.

        +

        Should junior developers work with recruiters?

        This is the first of a handful of posts about the 3-month search for my first full-time developer job.

        I graduated from a coding bootcamp in April. I’m a junior developer, though, I have some freelance projects on my resume that gave me about 2 years of experience. This, combined with a decently written Linkedin profile, contributed to my getting contacted by multiple recruiters daily. I wound up landing my first full-time job (a contract position) through one of those recruiters. I’ll go into that in detail later in the post.

        TL-DR;

        Resources

        -

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file +

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file diff --git a/recursive-filter-function/index.html b/recursive-filter-function/index.html index fec9e6d..831ef3c 100644 --- a/recursive-filter-function/index.html +++ b/recursive-filter-function/index.html @@ -1,4 +1,4 @@ -Using a filter function recursively | scraggo.com

        Using a filter function recursively

        The problem

        +

        Using a filter function recursively

        The problem

        Given our array data structure, we only want to include items that have an ‘age’ property and the age is greater than 17. If the person is under age, we won’t allow any of their friends to be included (even if they are old enough to be.)

        (Contrived scenario, I know, but I recently needed to do something like this for a different type of authorization.)

        \ No newline at end of file +
        \ No newline at end of file diff --git a/reflections-coding-bootcamp/index.html b/reflections-coding-bootcamp/index.html index 7455b39..ccf9607 100644 --- a/reflections-coding-bootcamp/index.html +++ b/reflections-coding-bootcamp/index.html @@ -1,4 +1,4 @@ -Reflections From a Coding Bootcamp Graduate | scraggo.com

        Reflections From a Coding Bootcamp Graduate

        I was ready for a career change. It was October of 2017. The more time I spent coding and learning computer science fundamentals, the more I realized that a programming career would fit me* better than performing and teaching music.

        +

        Reflections From a Coding Bootcamp Graduate

        I was ready for a career change. It was October of 2017. The more time I spent coding and learning computer science fundamentals, the more I realized that a programming career would fit me* better than performing and teaching music.

        After spending a fair amount of time teaching myself to code and making websites, I began researching coding bootcamps. There were optimistic statistics of people making $80,000 after graduating. There were detractors who warn strongly against bootcamps. I was skeptical, but decided I wasn’t learning fast enough.

        * Read more about my bootcamp decision: @@ -447,4 +447,4 @@

        Now What?

        Please contact me if you’d like to discuss anything in my post. Best of luck!

        Resources

        -

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file +

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file diff --git a/rss.xml b/rss.xml index 9546e26..e29613b 100644 --- a/rss.xml +++ b/rss.xml @@ -1,4 +1,4 @@ -<![CDATA[scraggo.com]]>https://www.scraggo.comGatsbyJSThu, 22 Feb 2024 04:58:39 GMT<![CDATA[Thinkertoys - Generate Art and Business Ideas]]>https://www.scraggo.com/thinkertoys-generate-art-and-business-ideas/https://www.scraggo.com/thinkertoys-generate-art-and-business-ideas/Sun, 18 Feb 2024 00:00:00 GMT<p>I’ve been on a quest to be more creative, to understand the creative process more deeply. <a href="/meta-ideas-generating-creative-content">I wrote about the difference between <strong>concrete ideas</strong>, the building blocks of finished products, and <strong>meta ideas</strong>, the blueprints that generate them</a>.</p> +<![CDATA[scraggo.com]]>https://www.scraggo.comGatsbyJSSat, 14 Sep 2024 19:58:55 GMT<![CDATA[Thinkertoys - Generate Art and Business Ideas]]>https://www.scraggo.com/thinkertoys-generate-art-and-business-ideas/https://www.scraggo.com/thinkertoys-generate-art-and-business-ideas/Sun, 18 Feb 2024 00:00:00 GMT<p>I’ve been on a quest to be more creative, to understand the creative process more deeply. <a href="/meta-ideas-generating-creative-content">I wrote about the difference between <strong>concrete ideas</strong>, the building blocks of finished products, and <strong>meta ideas</strong>, the blueprints that generate them</a>.</p> <p>Using meta ideas, I would have no problem generating new ideas. More often than not, though, I wouldn’t know what to do with them. I’d get stuck, put the idea away for a while, hoping inspiration might hit me another way. Clearly, something was missing. A book called <strong><a href="https://www.amazon.com/Thinkertoys-Handbook-Creative-Thinking-Techniques-2nd/dp/1580087736" target="_blank" rel="nofollow noopener noreferrer">Thinkertoys</a></strong> filled in the gaps and has become absolutely indispensable to me.</p> <p><img src="https://m.media-amazon.com/images/I/71xXjHd2I+L._SY522_.jpg" alt="Thinkertoys cover"></p> <p><strong>Thinkertoys</strong> is a definitive guide to all things creative; from mindset, to defining challenges, to generating ideas, and putting them through the wringer. The book is the culmination of the author’s quest to gather every known creative technique. <strong>Linear techniques</strong> like <em>SCAMPER</em> and <em>Lotus Blossom</em>, and <strong>intuitive techniques</strong> like <em>Hypnagogic analysis</em> will put you on your way to becoming the creative powerhouse you dream to be.</p> diff --git a/songwriting-and-serendipity/index.html b/songwriting-and-serendipity/index.html index fa09f83..3e7e5f8 100644 --- a/songwriting-and-serendipity/index.html +++ b/songwriting-and-serendipity/index.html @@ -1,4 +1,4 @@ -Songwriting and Serendipity | scraggo.com

        Songwriting and Serendipity

        Why start a composition with a blank slate? Jam on a cover tune then take it in a different direction.

        +

        Songwriting and Serendipity

        Why start a composition with a blank slate? Jam on a cover tune then take it in a different direction.

        Sometimes, the less experience you have figuring out songs, the better. When I was first learning guitar and had much less skill, I tried to figure out songs that I heard. I was usually unsuccessful at transcribing them accurately, but there were many occasions that I enjoyed what I was playing (despite it being wrong) and wrote a song based on it. I call that Serendipity.

        What is “serendipity?”

        @@ -377,4 +377,4 @@

        My starting points

        I chose songs from the following 5 decades as my starting points: the 60’s, 70’s, 80’s, 90’s, and 2000’s. Can you identify what songs I’m using?

        A word of CAUTION: Make sure your idea is different enough from your inspiration to avoid getting sued over copyright issues!

        Compositional devices

        -

        As an exercise to the student, can you pick out how I’m changing the music that I’m using as a starting point? In future lessons, I will talk in more detail about variation techniques and how to use them in your songs.

        \ No newline at end of file +

        As an exercise to the student, can you pick out how I’m changing the music that I’m using as a starting point? In future lessons, I will talk in more detail about variation techniques and how to use them in your songs.

        \ No newline at end of file diff --git a/songwriting-simplicity-complexity/index.html b/songwriting-simplicity-complexity/index.html index 2570f4d..ca3a117 100644 --- a/songwriting-simplicity-complexity/index.html +++ b/songwriting-simplicity-complexity/index.html @@ -1,4 +1,4 @@ -Songwriting Tutorial: Simplicity and Complexity | scraggo.com

        Songwriting Tutorial: Simplicity and Complexity

        How to begin writing a song by choosing a lyrical theme and a musical mood.

        +

        Songwriting Tutorial: Simplicity and Complexity

        How to begin writing a song by choosing a lyrical theme and a musical mood.

        The Keys to Simplicity

        Selecting a mood / topic for the song

        @@ -392,4 +392,4 @@

        Plug into song forms and lyric templates.

        Knowledge of Diatonic Music Theory

        Knowing the difference between major and minor helps serve the message of the song. There are other modes besides these 2 that we’ll explore later. You can change keys globally and locally to add complexity, but only if that serves the song’s central message.

        Your foundation depends on simplicity.

        -

        It’s easy to fall in love with bending the rules for it’s own sake (as evidenced by my own stylistic quirks), but you can write a great song by remaining simple in your message and form.

        \ No newline at end of file +

        It’s easy to fall in love with bending the rules for it’s own sake (as evidenced by my own stylistic quirks), but you can write a great song by remaining simple in your message and form.

        \ No newline at end of file diff --git a/songwriting-snippet-challenge/index.html b/songwriting-snippet-challenge/index.html index 29352be..ee761d2 100644 --- a/songwriting-snippet-challenge/index.html +++ b/songwriting-snippet-challenge/index.html @@ -1,4 +1,4 @@ -Songwriting Tutorial: Snippet Challenge | scraggo.com

        Songwriting Tutorial: Snippet Challenge

        +

        Songwriting Tutorial: Snippet Challenge

        Have lots of unfinished ideas? Learn how to take a short instrumental idea and finish writing your song in one day.

        Over the years, I’ve written tons and tons of short musical ideas. I had been putting off turning them into real pieces until now. Inspired by my research on speed composing, I decided to make a challenge out of my problem.

        The Snippet Challenge & Simple Instrumental Song Forms

        @@ -395,4 +395,4 @@

        Ternary Form with a Bridge (ABACBA)

        Here, the B section has to flow from the A section and the C section later. Make sure that these parts connect well.

        As mentioned, the C section is the second contrast of the piece. When writing the C section, it should lead nicely from A and flow smoothly into B. Once again, I urge you to read http://music.tutsplus.com/tutorials/an-introduction-to-form-in-instrumental-music—audio-23381 to hear examples of how this is done.

        Conclusion

        -

        Taking this challenge has been very helpful to me in many ways. It forces one to make musical decisions, no more putting them off for months while waiting for divine inspiration! It allows one to explore harmonic, melodic, and rhythmic variations in a non-judgemental setting. Please share your thoughts in a comment below or on the youtube video.

        \ No newline at end of file +

        Taking this challenge has been very helpful to me in many ways. It forces one to make musical decisions, no more putting them off for months while waiting for divine inspiration! It allows one to explore harmonic, melodic, and rhythmic variations in a non-judgemental setting. Please share your thoughts in a comment below or on the youtube video.

        \ No newline at end of file diff --git a/styles.121e72dfc03c35250d48.css b/styles.42609693aaa912e24b07.css similarity index 99% rename from styles.121e72dfc03c35250d48.css rename to styles.42609693aaa912e24b07.css index 82fed6a..f3ad7a0 100644 --- a/styles.121e72dfc03c35250d48.css +++ b/styles.42609693aaa912e24b07.css @@ -359,4 +359,4 @@ * Released under the MIT license * http://opensource.org/licenses/MIT * - */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:16px auto;max-width:768px;padding:0 16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/sw.js b/sw.js index 65cfe5b..141e233 100644 --- a/sw.js +++ b/sw.js @@ -27,10 +27,10 @@ workbox.core.clientsClaim(); */ self.__precacheManifest = [ { - "url": "webpack-runtime-db781169b9b54e74a1f3.js" + "url": "webpack-runtime-f8fcd4bc74519b65168a.js" }, { - "url": "styles.121e72dfc03c35250d48.css" + "url": "styles.42609693aaa912e24b07.css" }, { "url": "styles-f3e9059f8c2a75df70f2.js" @@ -39,11 +39,11 @@ self.__precacheManifest = [ "url": "framework-e5e95b94de229fe789b2.js" }, { - "url": "app-eac1380cd8916e998c4f.js" + "url": "app-dd8e35d448b2c1e30855.js" }, { "url": "offline-plugin-app-shell-fallback/index.html", - "revision": "e312c4a3851778e08cbd26f3523cb468" + "revision": "cb01be7ac46d36dba1fc0bedf8ba4b95" }, { "url": "component---cache-caches-gatsby-plugin-offline-app-shell-js-d949a7cd525de9463f1c.js" @@ -145,7 +145,7 @@ const navigationRoute = new NavigationRoute(async ({ event }) => { // Check for resources + the app bundle // The latter may not exist if the SW is updating to a new version const resources = await idbKeyval.get(`resources:${pathname}`) - if (!resources || !(await caches.match(`/app-eac1380cd8916e998c4f.js`))) { + if (!resources || !(await caches.match(`/app-dd8e35d448b2c1e30855.js`))) { return await fetch(event.request) } diff --git a/tags/ava/index.html b/tags/ava/index.html index 39ec751..31aea6f 100644 --- a/tags/ava/index.html +++ b/tags/ava/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/bands/index.html b/tags/bands/index.html index 55edc79..35fbb76 100644 --- a/tags/bands/index.html +++ b/tags/bands/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/career/index.html b/tags/career/index.html index e8c7a7d..54aee8b 100644 --- a/tags/career/index.html +++ b/tags/career/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/coding-bootcamps/index.html b/tags/coding-bootcamps/index.html index 1d11834..7903dfb 100644 --- a/tags/coding-bootcamps/index.html +++ b/tags/coding-bootcamps/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/composition/index.html b/tags/composition/index.html index 952fed0..9bc9529 100644 --- a/tags/composition/index.html +++ b/tags/composition/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/computer-science/index.html b/tags/computer-science/index.html index bbe400f..d62b939 100644 --- a/tags/computer-science/index.html +++ b/tags/computer-science/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/creativity/index.html b/tags/creativity/index.html index a4361d5..6db9cac 100644 --- a/tags/creativity/index.html +++ b/tags/creativity/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/design-patterns/index.html b/tags/design-patterns/index.html index d599582..dda6b08 100644 --- a/tags/design-patterns/index.html +++ b/tags/design-patterns/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/electron/index.html b/tags/electron/index.html index 9b58b22..918395c 100644 --- a/tags/electron/index.html +++ b/tags/electron/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/ergonomics/index.html b/tags/ergonomics/index.html index 204c87e..696a4ea 100644 --- a/tags/ergonomics/index.html +++ b/tags/ergonomics/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/gatsbyjs/index.html b/tags/gatsbyjs/index.html index 08c9da8..31cc026 100644 --- a/tags/gatsbyjs/index.html +++ b/tags/gatsbyjs/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/git/index.html b/tags/git/index.html index b417c14..d2afc4d 100644 --- a/tags/git/index.html +++ b/tags/git/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/immerjs/index.html b/tags/immerjs/index.html index 43b4f7f..d995072 100644 --- a/tags/immerjs/index.html +++ b/tags/immerjs/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/immutablejs/index.html b/tags/immutablejs/index.html index 1d3c25e..9793bc6 100644 --- a/tags/immutablejs/index.html +++ b/tags/immutablejs/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 72b3941..9b35a45 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,4 +1,4 @@ -scraggo.com | scraggo.com \ No newline at end of file + \ No newline at end of file diff --git a/tags/javascript/index.html b/tags/javascript/index.html index 2046f6f..f678559 100644 --- a/tags/javascript/index.html +++ b/tags/javascript/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/jest/index.html b/tags/jest/index.html index d2a5446..2cd2c56 100644 --- a/tags/jest/index.html +++ b/tags/jest/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/mental-health/index.html b/tags/mental-health/index.html index d9c3c8d..f4cb97f 100644 --- a/tags/mental-health/index.html +++ b/tags/mental-health/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/mocha/index.html b/tags/mocha/index.html index 9818f9b..e5ec1e3 100644 --- a/tags/mocha/index.html +++ b/tags/mocha/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/music-education/index.html b/tags/music-education/index.html index 92eecf8..f2b0521 100644 --- a/tags/music-education/index.html +++ b/tags/music-education/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/node/index.html b/tags/node/index.html index a4c07ff..da64505 100644 --- a/tags/node/index.html +++ b/tags/node/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/oop/index.html b/tags/oop/index.html index 1efa5aa..46db3fb 100644 --- a/tags/oop/index.html +++ b/tags/oop/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/open-source/index.html b/tags/open-source/index.html index 635c704..e2cf53f 100644 --- a/tags/open-source/index.html +++ b/tags/open-source/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/practicing/index.html b/tags/practicing/index.html index 85c175b..3e36259 100644 --- a/tags/practicing/index.html +++ b/tags/practicing/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/productivity/index.html b/tags/productivity/index.html index ced1aaf..b5f6209 100644 --- a/tags/productivity/index.html +++ b/tags/productivity/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/promotion/index.html b/tags/promotion/index.html index c130cd6..419eafe 100644 --- a/tags/promotion/index.html +++ b/tags/promotion/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/python/index.html b/tags/python/index.html index 5bc55e8..028beed 100644 --- a/tags/python/index.html +++ b/tags/python/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/random-music-generators/index.html b/tags/random-music-generators/index.html index fe70a57..e395c2b 100644 --- a/tags/random-music-generators/index.html +++ b/tags/random-music-generators/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/react/index.html b/tags/react/index.html index a547a6b..096f46f 100644 --- a/tags/react/index.html +++ b/tags/react/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/recording/index.html b/tags/recording/index.html index e834477..d84812c 100644 --- a/tags/recording/index.html +++ b/tags/recording/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/redux/index.html b/tags/redux/index.html index 84c47fd..2851190 100644 --- a/tags/redux/index.html +++ b/tags/redux/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/sinon/index.html b/tags/sinon/index.html index 966adb4..7f56fbb 100644 --- a/tags/sinon/index.html +++ b/tags/sinon/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/songwriting/index.html b/tags/songwriting/index.html index 9476ccf..e5f88aa 100644 --- a/tags/songwriting/index.html +++ b/tags/songwriting/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/tech-talk/index.html b/tags/tech-talk/index.html index 51560ad..195c06e 100644 --- a/tags/tech-talk/index.html +++ b/tags/tech-talk/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/test-runners/index.html b/tags/test-runners/index.html index 71422a6..eb9c2e3 100644 --- a/tags/test-runners/index.html +++ b/tags/test-runners/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/testing/index.html b/tags/testing/index.html index 06454c1..f97b3c2 100644 --- a/tags/testing/index.html +++ b/tags/testing/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/type-script/index.html b/tags/type-script/index.html index 59f577c..6b9321b 100644 --- a/tags/type-script/index.html +++ b/tags/type-script/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tags/typescript/index.html b/tags/typescript/index.html index b30640e..7a8af0d 100644 --- a/tags/typescript/index.html +++ b/tags/typescript/index.html @@ -1,4 +1,4 @@ - \ No newline at end of file + */.transition{animation-iteration-count:1;animation-duration:.3s;animation-timing-function:ease;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{animation-play-state:paused}.looping.transition{animation-iteration-count:infinite}.transition.browse{animation-duration:.5s}.transition.browse.in{animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{animation-name:browseOutLeft}.transition.browse.right.out{animation-name:browseOutRight}@keyframes browseIn{0%{transform:scale(.8) translateZ(0);z-index:-1}10%{transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{transform:scale(1.05) translateZ(0);opacity:1;z-index:999}to{transform:scale(1) translateZ(0);z-index:999}}@keyframes browseOutLeft{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:-1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}to{z-index:1;transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{transform-origin:top center;animation-duration:.4s;animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{animation-name:dropIn}.drop.transition.out{animation-name:dropOut}@keyframes dropIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes dropOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.transition.fade.in{animation-name:fadeIn}.transition[class*="fade up"].in{animation-name:fadeInUp}.transition[class*="fade down"].in{animation-name:fadeInDown}.transition[class*="fade left"].in{animation-name:fadeInLeft}.transition[class*="fade right"].in{animation-name:fadeInRight}.transition.fade.out{animation-name:fadeOut}.transition[class*="fade up"].out{animation-name:fadeOutUp}.transition[class*="fade down"].out{animation-name:fadeOutDown}.transition[class*="fade left"].out{animation-name:fadeOutLeft}.transition[class*="fade right"].out{animation-name:fadeOutRight}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-10%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(5%)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5%)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(5%)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{animation-duration:.6s}.horizontal.flip.transition.in{animation-name:horizontalFlipIn}.horizontal.flip.transition.out{animation-name:horizontalFlipOut}.vertical.flip.transition.in{animation-name:verticalFlipIn}.vertical.flip.transition.out{animation-name:verticalFlipOut}@keyframes horizontalFlipIn{0%{transform:perspective(2000px) rotateY(-90deg);opacity:0}to{transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes verticalFlipIn{0%{transform:perspective(2000px) rotateX(-90deg);opacity:0}to{transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes horizontalFlipOut{0%{transform:perspective(2000px) rotateY(0);opacity:1}to{transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes verticalFlipOut{0%{transform:perspective(2000px) rotateX(0);opacity:1}to{transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{animation-name:scaleIn}.scale.transition.out{animation-name:scaleOut}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.transition.fly{animation-duration:.6s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{animation-name:flyIn}.transition[class*="fly up"].in{animation-name:flyInUp}.transition[class*="fly down"].in{animation-name:flyInDown}.transition[class*="fly left"].in{animation-name:flyInLeft}.transition[class*="fly right"].in{animation-name:flyInRight}.transition.fly.out{animation-name:flyOut}.transition[class*="fly up"].out{animation-name:flyOutUp}.transition[class*="fly down"].out{animation-name:flyOutDown}.transition[class*="fly left"].out{animation-name:flyOutLeft}.transition[class*="fly right"].out{animation-name:flyOutRight}@keyframes flyIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}@keyframes flyInUp{0%{opacity:0;transform:translate3d(0,1500px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes flyInDown{0%{opacity:0;transform:translate3d(0,-1500px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes flyInLeft{0%{opacity:0;transform:translate3d(1500px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes flyInRight{0%{opacity:0;transform:translate3d(-1500px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes flyOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes flyOutUp{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes flyOutDown{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes flyOutRight{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{animation-name:slideInY;transform-origin:top center}.transition[class*="slide up"].in{animation-name:slideInY;transform-origin:bottom center}.transition[class*="slide left"].in{animation-name:slideInX;transform-origin:center right}.transition[class*="slide right"].in{animation-name:slideInX;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{animation-name:slideOutY;transform-origin:top center}.transition[class*="slide up"].out{animation-name:slideOutY;transform-origin:bottom center}.transition[class*="slide left"].out{animation-name:slideOutX;transform-origin:center right}.transition[class*="slide right"].out{animation-name:slideOutX;transform-origin:center left}@keyframes slideInY{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes slideInX{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes slideOutY{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes slideOutX{0%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}.transition.swing{animation-duration:.8s}.transition[class*="swing down"].in{animation-name:swingInX;transform-origin:top center}.transition[class*="swing up"].in{animation-name:swingInX;transform-origin:bottom center}.transition[class*="swing left"].in{animation-name:swingInY;transform-origin:center right}.transition[class*="swing right"].in{animation-name:swingInY;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{animation-name:swingOutX;transform-origin:top center}.transition[class*="swing up"].out{animation-name:swingOutX;transform-origin:bottom center}.transition[class*="swing left"].out{animation-name:swingOutY;transform-origin:center right}.transition[class*="swing right"].out{animation-name:swingOutY;transform-origin:center left}@keyframes swingInX{0%{transform:perspective(1000px) rotateX(90deg);opacity:0}40%{transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{transform:perspective(1000px) rotateX(15deg)}80%{transform:perspective(1000px) rotateX(-7.5deg)}to{transform:perspective(1000px) rotateX(0)}}@keyframes swingInY{0%{transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{transform:perspective(1000px) rotateY(30deg);opacity:1}60%{transform:perspective(1000px) rotateY(-17.5deg)}80%{transform:perspective(1000px) rotateY(7.5deg)}to{transform:perspective(1000px) rotateY(0)}}@keyframes swingOutX{0%{transform:perspective(1000px) rotateX(0)}40%{transform:perspective(1000px) rotateX(-7.5deg)}60%{transform:perspective(1000px) rotateX(17.5deg)}80%{transform:perspective(1000px) rotateX(-30deg);opacity:1}to{transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutY{0%{transform:perspective(1000px) rotateY(0)}40%{transform:perspective(1000px) rotateY(7.5deg)}60%{transform:perspective(1000px) rotateY(-10deg)}80%{transform:perspective(1000px) rotateY(30deg);opacity:1}to{transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{animation-name:zoomIn}.transition.zoom.out{animation-name:zoomOut}@keyframes zoomIn{0%{opacity:1;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(0)}}.flash.transition{animation-duration:.75s;animation-name:flash}.shake.transition{animation-duration:.75s;animation-name:shake}.bounce.transition{animation-duration:.75s;animation-name:bounce}.tada.transition{animation-duration:.75s;animation-name:tada}.pulse.transition{animation-duration:.5s;animation-name:pulse}.jiggle.transition{animation-duration:.75s;animation-name:jiggle}.transition.glow{animation-duration:2s;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-name:glow}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}to{transform:scale(1) rotate(0)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(.9);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes jiggle{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}to{background-color:#fcfcfd}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.flex-wrap{flex-wrap:wrap}.flex-jc-center{justify-content:center}.flex-ai-center{align-items:center}.site-header{margin-bottom:1.5rem}.site-header .site-title-nav-container{display:flex}.site-header .site-title-nav-container img{width:100%}.site-header .site-logo{width:100px;flex-shrink:0}.site-header .site-banner-nav{padding-top:8px}.site-header .site-banner-nav .site-banner{width:200px}.site-header nav{margin:-4px 0 0 6px}.site-header nav ul{list-style-type:none;margin:0;padding:0}.site-header nav .category-label{margin-right:16px}.site-header nav .dropdown-list-link{margin:8px;display:block;min-width:90px}.site-layout{margin:0 auto;max-width:768px;padding:16px}.site-footer{margin-top:32px}.site-footer .copyright,.site-footer .footer-social{margin-right:6px}.site-footer .footer-social{color:grey;font-size:14px;font-style:italic}.list-link{display:inline-block;margin:0 16px 8px 0;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.list-link,.list-link a{color:#450000}.list-link .ui.dropdown>.dropdown.icon{margin-left:6px}.post-info-sm{font-size:14px;font-family:Montserrat,Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 0 8px;color:#450000}.post-info-sm a{color:#450000}.post-excerpt{color:#000}.post-categories{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif}.post-tag{background-color:#fff6e1;border-radius:4px;box-shadow:2px 2px 1px 0 #f1f1f1;color:#6d6767;margin:0 4px;padding:2px 4px}.posts-list .posts-category{margin:16px 0}.posts-list .posts-category h2{display:inline-block;padding:0;margin:0 4px 0 0}.posts-list .posts-category span{font-size:14px;vertical-align:text-bottom}.posts-list h4{margin:8px 0 16px}.posts-list .post-wrapper{margin:8px 0 32px}.posts-list .post-title{margin:0 0 8px}.posts-list .post-title h3{font-size:24px;text-transform:capitalize}.posts-list .post-excerpt{margin:0}.posts-list .v-divider{margin:0 4px}.blog-post-template .post-categories,.blog-post-template .post-tag{text-transform:none}.blog-post-template .nav-prev-next{margin-top:32px}.blog-post-template .nav-prev-next ul{display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0}.text-wrapper blockquote,.text-wrapper ol,.text-wrapper ul{margin:0 0 12px}.text-wrapper li,.text-wrapper ol,.text-wrapper ul{padding:0}.text-wrapper ul li{margin-left:28px;margin-bottom:0}.text-wrapper ol li{margin-left:24px;padding-left:4px}.text-wrapper li{margin-bottom:4px}.text-wrapper li p,.text-wrapper li ul{margin-bottom:0}.text-wrapper h2{color:#450000}.text-wrapper h3{font-size:1.35rem}.text-wrapper blockquote{font-style:italic;border-left:.32813rem solid #dedbaf;padding-left:12px}.text-wrapper header{text-transform:uppercase;text-align:center;margin-bottom:24px}.text-wrapper header h1{font-weight:500;letter-spacing:1.5px;font-size:40px}.text-wrapper header h1 a{color:#000}.text-wrapper header h1 a:hover{text-decoration:underline}.text-wrapper header p{margin-bottom:12px}.text-wrapper header .color-grey{color:grey}.text-wrapper table{margin-bottom:16px;table-layout:fixed;width:100%;border-collapse:collapse}.text-wrapper td,.text-wrapper th{border:1px solid grey;margin:0;padding:2px 6px}.text-wrapper img{max-width:100%}html{background-color:transparent}body{font-size:16px}@font-face{font-family:Montserrat;src:url(/assets/font/Montserrat-Regular.woff)}.gatsby-highlight{background-color:#f6fbff;border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}.gatsby-highlight pre[class*=language-]{background-color:transparent;margin:0;padding:0;overflow:initial;float:left;min-width:100%}.gatsby-highlight-code-line{background-color:#fefdc4;display:block;margin-right:-1em;margin-left:-1em;padding-right:1em;padding-left:.75em;border-left:.25em solid #f99}.icon{display:inline-block;max-height:16px;margin-right:8px}.music-discography-page .feature{margin-bottom:32px}.music-discography-page .feature .featured-image,.music-discography-page .feature .featured-image-back{display:inline-block;margin:auto;width:50%}.music-discography-page .feature .featured-links{margin-top:8px}.music-discography-page .feature .icon{max-height:24px}.music-discography-page .album-link-button{border:1px solid rgba(0,0,0,.87);border-radius:5px;color:rgba(0,0,0,.87);font-size:1rem;padding:2px 6px;margin:0 1px 1px}.music-discography-page .album-link-button:hover{border:1px solid #1e70bf;color:#1e70bf}.music-discography-page .album-link,.music-discography-page .album-link-small{text-decoration:underline;padding:0 4px}.music-discography-page .album-link-small{font-size:1rem}.music-discography-page .artist-releases{margin-bottom:24px}.music-discography-page .artist-releases h4{font-weight:400}.music-discography-page .album-li{list-style:none;margin-bottom:8px;font-weight:700;font-size:1rem}.music-discography-page .album-li a{font-weight:400}.music-discography-page .support-message{border:1px solid #37378a;padding:6px;background-color:#fbfbe5}.music-discography-page .support-message h3,.music-discography-page .support-message p{font-size:.8rem}@media screen and (max-width:520px){.music-discography-page .feature .featured-image{width:100%}.music-discography-page .feature .featured-image-back{display:none}}.book{margin-bottom:24px}.book-title{font-size:18px;font-weight:700;margin-bottom:6px}.book-favorite{margin-left:4px}.reading-list-filter{margin:24px 0}.flex{display:flex}.margin-top-lg{margin-top:1.5rem}.margin-top-md{margin-top:8px}h3{font-size:1.6rem}.portfolio-text{width:50%}.portfolio-img{margin-left:50px;max-width:750px}.portfolio-img img{width:100%;max-width:750px}.project hr{border:0;border-top:1px solid #ccc;margin:2rem 2rem 2rem 0}@media screen and (min-width:0px){.portfolio-wrapper{display:block}.portfolio-img{margin:0 auto;padding-top:10px}.portfolio-text{width:100%}} \ No newline at end of file diff --git a/tech-career-resources/index.html b/tech-career-resources/index.html index 64d56af..49fbaab 100644 --- a/tech-career-resources/index.html +++ b/tech-career-resources/index.html @@ -1,4 +1,4 @@ -Are You Ready to be a Professional Software Engineer? | scraggo.com

        Are You Ready to be a Professional Software Engineer?

        Updated March 21, 2021

        + \ No newline at end of file +
        \ No newline at end of file diff --git a/tech-talk-improving-capstone-project/index.html b/tech-talk-improving-capstone-project/index.html index 4e01777..c25b11b 100644 --- a/tech-talk-improving-capstone-project/index.html +++ b/tech-talk-improving-capstone-project/index.html @@ -1,4 +1,4 @@ -Tech Talk - How I'd Improve My Capstone Project | scraggo.com

        Tech Talk - How I'd Improve My Capstone Project

        In February 2020, I returned to my bootcamp to give a tech talk on what I’d do to improve my Capstone project. (I also answer career and other questions from the audience at the end.)

        + \ No newline at end of file +

        Considering a career in tech? I’ve collected my thoughts and resources here.

        \ No newline at end of file diff --git a/tech/index.html b/tech/index.html index aa53348..e6fe9c6 100644 --- a/tech/index.html +++ b/tech/index.html @@ -1,4 +1,4 @@ -Posts - Technology | scraggo.com

        Tech Posts

        (33)

        Introduction to Design Patterns: Why they're worth learning

        As developers, we’re constantly learning - and there’s a lot to learn in general because the tech industry is broad and fast-paced. We want to have all the main bases covered so that we can be ready for any situation. We often hear about design patterns and how they can enable us to write well-architected software using object-oriented programming. If you’re like me, you might file that away as a…

        Tech Talk - How I'd Improve My Capstone Project

        In February 2020, I returned to my bootcamp to give a tech talk on what I’d do to improve my Capstone project. (I also answer career and other questions from the audience at the end.) Download the slides here (PDF) I’m excited to share what I’ve learned so far from working on enterprise software for almost 2 years. The talk is a deep dive into the codebase that myself and three others worked on…

        Using question-prompter for study, self-reflection, and more

        I recently created a node command line app called question-prompter. It prompts you at your terminal to answer questions that you come up with. After you answer them, it saves them to a or file in a directory of your choosing. Background I find a lot of benefit from regularly checking in with myself. While many authors have written about this kind of reflection, Tim Ferriss comes to mind first…

        Contributing a New Feature to Open Source: @sindresorhus/is

        This post is a recount of my recent experience contributing to is, a JavaScript open source type checking library. https://github.com/sindresorhus/is https://www.npmjs.com/package/@sindresorhus/is I’ll outline the process from beginning to end: the initial filing of the feature request, implementing the feature, collaborating on the pull request, and getting the feature released. Some of the open…

        Testing immutable js with sinon custom matchers

        Problems with unexpected assertion failures can arise while testing immutablejs with sinon. This post is a brief guide on how to create a custom matcher that will correctly calculate the equivalence between a mock/stub/spy call with an immutable parameter. The way I’ll be making the assertion is with calledWith from sinon-chai (a plugin for chai that helps with making should or expect assertions for sinon mocks). This github issue on sinonjs outlines the problem...

        How to Squash All Commits Related to a Single Issue into a Single Commit

        Updated Sep 3, 2020 This article outlines how to use the “squash” feature of an interactive . What does “squashing” do? It allows you to take changes that are spread amongst multiple commits and consolidate them into one. Why should one consider squashing commits? A clean history makes tracking changes to a large codebase across time much easier. Many commits are small and unimportant in the grand…

        Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC

        The goal of this blog-series is to explain what frameworks do, why they’re used, and demonstrate with examples across many different frameworks. The series is aimed at those familiar with JavaScript syntax, accessing the DOM, functions, and classes (object-oriented programming). Further reading can be found at the bottom of this post. What is a JavaScript Framework? A framework is an imported…

        \ No newline at end of file +

        Tech Posts

        (33)

        Introduction to Design Patterns: Why they're worth learning

        As developers, we’re constantly learning - and there’s a lot to learn in general because the tech industry is broad and fast-paced. We want to have all the main bases covered so that we can be ready for any situation. We often hear about design patterns and how they can enable us to write well-architected software using object-oriented programming. If you’re like me, you might file that away as a…

        Tech Talk - How I'd Improve My Capstone Project

        In February 2020, I returned to my bootcamp to give a tech talk on what I’d do to improve my Capstone project. (I also answer career and other questions from the audience at the end.) Download the slides here (PDF) I’m excited to share what I’ve learned so far from working on enterprise software for almost 2 years. The talk is a deep dive into the codebase that myself and three others worked on…

        Using question-prompter for study, self-reflection, and more

        I recently created a node command line app called question-prompter. It prompts you at your terminal to answer questions that you come up with. After you answer them, it saves them to a or file in a directory of your choosing. Background I find a lot of benefit from regularly checking in with myself. While many authors have written about this kind of reflection, Tim Ferriss comes to mind first…

        Contributing a New Feature to Open Source: @sindresorhus/is

        This post is a recount of my recent experience contributing to is, a JavaScript open source type checking library. https://github.com/sindresorhus/is https://www.npmjs.com/package/@sindresorhus/is I’ll outline the process from beginning to end: the initial filing of the feature request, implementing the feature, collaborating on the pull request, and getting the feature released. Some of the open…

        Testing immutable js with sinon custom matchers

        Problems with unexpected assertion failures can arise while testing immutablejs with sinon. This post is a brief guide on how to create a custom matcher that will correctly calculate the equivalence between a mock/stub/spy call with an immutable parameter. The way I’ll be making the assertion is with calledWith from sinon-chai (a plugin for chai that helps with making should or expect assertions for sinon mocks). This github issue on sinonjs outlines the problem...

        How to Squash All Commits Related to a Single Issue into a Single Commit

        Updated Sep 3, 2020 This article outlines how to use the “squash” feature of an interactive . What does “squashing” do? It allows you to take changes that are spread amongst multiple commits and consolidate them into one. Why should one consider squashing commits? A clean history makes tracking changes to a large codebase across time much easier. Many commits are small and unimportant in the grand…

        Intro to JavaScript Frameworks Part 1: The Vanilla JavaScript Version of TodoMVC

        The goal of this blog-series is to explain what frameworks do, why they’re used, and demonstrate with examples across many different frameworks. The series is aimed at those familiar with JavaScript syntax, accessing the DOM, functions, and classes (object-oriented programming). Further reading can be found at the bottom of this post. What is a JavaScript Framework? A framework is an imported…

        \ No newline at end of file diff --git a/tech/projects/index.html b/tech/projects/index.html index 31a7ed9..9edff2f 100644 --- a/tech/projects/index.html +++ b/tech/projects/index.html @@ -1,4 +1,4 @@ -Tech Projects | scraggo.com

        Tech Projects

        Random Music Generators

        Generate unlimited unique melodies with easily changed parameters including tonality, rhythm, and interval jumps. These melodies can be previewed in-browser and downloaded as MIDI.

        Technology: React, Redux, Express, PostgreSQL, Semantic UI, MIDIwriterJS, ToneJS

        Random Music Generators

        scraggo.com

        Technology: Gatsby, React, scss, markdown


        Tone Rhythm

        As a musician developing music applications, I wanted an API that would allow me to put rhythms along with a melody into Tone.Part. The example on Tone's docs shows how this is expected and it's far from ideal. With the help of this small library, the developer-musician can generate an array of Tone.Transport times given an array of musical rhythms in various formats that Tone.js understands.

        Technology: JavaScript (Mocha, Chai, Babel, Webpack, Tone.js)


        Comparing JavaScript Test Runners

        Article and companion app that compares AVA, Jest, Mocha, and mocha-parallel-tests testing frameworks.

        Technology: AVA, Jest, Mocha


        Design patterns

        TypeScript runner for all design patterns on refactoring.guru. Accompanying blog posts for students of design patterns.

        Technology: TypeScript, node, oclif, mocha


        Question Prompter

        CLI tool to prompt for user configured questions and notes

        Technology: node (commander, inquirer)


        ImmutableJS Tutorial

        Centralized ImmutableJS tutorial and sandbox

        Technology: React, ImmutableJS


        Vocode

        Vocode is a desktop application that allows users to perform a number of useful commands with their voice. The app can populate a user's clipboard with a snippet (a text template) which can be pasted into any text editor. Users can add other user snippets, create new snippets, and manage all this information in one central place. The app also provides a user the ability to display websites in the app with a voice command.

        Technology: Electron JS, WebAudio API, Google Cloud Speech Service, Ant, React, Redux, Express, PostgreSQL


        Bookmarks to Markdown Utilities

        Collection of command-line tools for Chrome bookmark management. (There is some functionality for OneTab, Evernote, and FireFox.) Designed for personal use and other users who may dislike managing a large bookmark collection inside of Chrome, use Chrome for both Desktop and Mobile bookmarking (and mainly use the "Mobile Bookmarks" folder), want to convert bookmarks into individual markdown files, want a way to visit a site and tag the bookmark with minimal mouse movement, and more.

        Technology: Python (pytest, pyperclip, argparse)


        Subnotes - Organize Your Notes

        Web adaptation of a productivity app originally written in Python. Users can input their notes in a certain format and can easily sort, filter, and copy the result to their clipboard.

        Technology: Python, Javascript, Bootstrap, clipboard.js, Gulp, Babel


        ScragMark: Markdown Notes/Bookmarks

        Chrome Extension that allows a user to write notes in markdown format and easily put current tab link in notes. User can display their notes rendered in a separate tab. Notes save persistently.

        Technology: Chrome API, Chrome local storage, Javascript, highlight.js, markdown-it.js


        GitHub User Search

        Web app that allows the user to retrieve data based on a search for a GitHub user name. For example, if you search for `scraggo` (my username) you can easily find my contribution activity (pull requests on others' repositories.)

        Technology: AureliaJS, Gulp, GitHub API


        Open Source Contributions

        \ No newline at end of file diff --git a/testing-immutable-js-with-sinon-custom-matchers/index.html b/testing-immutable-js-with-sinon-custom-matchers/index.html index 8c90784..a83815c 100644 --- a/testing-immutable-js-with-sinon-custom-matchers/index.html +++ b/testing-immutable-js-with-sinon-custom-matchers/index.html @@ -1,4 +1,4 @@ -Testing immutable js with sinon custom matchers | scraggo.com

        Testing immutable js with sinon custom matchers

        Problems with unexpected assertion failures can arise while testing immutablejs with sinon. This post is a brief guide on how to create a custom matcher that will correctly calculate the equivalence between a mock/stub/spy call with an immutable parameter.

        +

        Testing immutable js with sinon custom matchers

        Problems with unexpected assertion failures can arise while testing immutablejs with sinon. This post is a brief guide on how to create a custom matcher that will correctly calculate the equivalence between a mock/stub/spy call with an immutable parameter.

        The way I’ll be making the assertion is with calledWith from sinon-chai (a plugin for chai that helps with making should or expect assertions for sinon mocks).

        This github issue on sinonjs outlines the problem. It’s a very easy one to run into. This post is one solution to it.

        @@ -466,4 +466,4 @@

        Read more

      • https://sinonjs.org/releases/v7.5.0/matchers/
      • https://changelog.com/posts/this-week-i-learned-about-sinon-matchers
      • https://stackoverflow.com/questions/41231496/how-to-match-an-array-of-objects-with-sinon-js
      • -
        \ No newline at end of file +
        \ No newline at end of file diff --git a/thinkertoys-generate-art-and-business-ideas/index.html b/thinkertoys-generate-art-and-business-ideas/index.html index 538cdb2..038670c 100644 --- a/thinkertoys-generate-art-and-business-ideas/index.html +++ b/thinkertoys-generate-art-and-business-ideas/index.html @@ -1,4 +1,4 @@ -Thinkertoys - Generate Art and Business Ideas | scraggo.com

        Thinkertoys - Generate Art and Business Ideas

        I’ve been on a quest to be more creative, to understand the creative process more deeply. I wrote about the difference between concrete ideas, the building blocks of finished products, and meta ideas, the blueprints that generate them.

        +

        Thinkertoys - Generate Art and Business Ideas

        I’ve been on a quest to be more creative, to understand the creative process more deeply. I wrote about the difference between concrete ideas, the building blocks of finished products, and meta ideas, the blueprints that generate them.

        Using meta ideas, I would have no problem generating new ideas. More often than not, though, I wouldn’t know what to do with them. I’d get stuck, put the idea away for a while, hoping inspiration might hit me another way. Clearly, something was missing. A book called Thinkertoys filled in the gaps and has become absolutely indispensable to me.

        Thinkertoys cover

        Thinkertoys is a definitive guide to all things creative; from mindset, to defining challenges, to generating ideas, and putting them through the wringer. The book is the culmination of the author’s quest to gather every known creative technique. Linear techniques like SCAMPER and Lotus Blossom, and intuitive techniques like Hypnagogic analysis will put you on your way to becoming the creative powerhouse you dream to be.

        @@ -489,4 +489,4 @@

        Resources

      • Thinkertoys: A Handbook of Creative-Thinking Techniques (2nd Edition): Michalko, Michael: Amazon.com
      • PPT slides of all the Thinkertoys
      • Meta-ideas
      • -
        \ No newline at end of file +
        \ No newline at end of file diff --git a/type-check-jsdocs-typescript/index.html b/type-check-jsdocs-typescript/index.html index 5ab5137..d52ee6c 100644 --- a/type-check-jsdocs-typescript/index.html +++ b/type-check-jsdocs-typescript/index.html @@ -1,4 +1,4 @@ -TypeScript-lite: JSDoc for type-checking js files | scraggo.com

        TypeScript-lite: JSDoc for type-checking js files

        Overview

        +

        TypeScript-lite: JSDoc for type-checking js files

        Overview

        Did you know that you can use TypeScript features in JavaScript projects? When I discovered this and tried it out, I really enjoyed the results. Let’s go a bit into how it works.

        With a few simple ingredients:

        \ No newline at end of file +
        \ No newline at end of file diff --git a/using-question-prompter/index.html b/using-question-prompter/index.html index a0bfdd6..78ffabe 100644 --- a/using-question-prompter/index.html +++ b/using-question-prompter/index.html @@ -1,4 +1,4 @@ -Using question-prompter for study, self-reflection, and more | scraggo.com

        Using question-prompter for study, self-reflection, and more

        I recently created a node command line app called question-prompter. It prompts you at your terminal to answer questions that you come up with. After you answer them, it saves them to a json or yaml file in a directory of your choosing.

        +

        Using question-prompter for study, self-reflection, and more

        I recently created a node command line app called question-prompter. It prompts you at your terminal to answer questions that you come up with. After you answer them, it saves them to a json or yaml file in a directory of your choosing.

        Architecture

        src/utils

        I find that wrapping utilities makes my life easier. When I call the wrappers inside business logic files (like io-handlers or inquirer), it clearly separates the file-system handling from the app-specific processing.

        Conclusion

        -

        Let me know if you found the app useful!

        \ No newline at end of file +

        Let me know if you found the app useful!

        \ No newline at end of file diff --git a/webpack-runtime-db781169b9b54e74a1f3.js b/webpack-runtime-f8fcd4bc74519b65168a.js similarity index 92% rename from webpack-runtime-db781169b9b54e74a1f3.js rename to webpack-runtime-f8fcd4bc74519b65168a.js index afbbee2..2409604 100644 --- a/webpack-runtime-db781169b9b54e74a1f3.js +++ b/webpack-runtime-f8fcd4bc74519b65168a.js @@ -1,2 +1,2 @@ -!function(e){function c(c){for(var n,a,s=c[0],d=c[1],f=c[2],p=0,u=[];pWebsite Makeover: Moving from Jekyll to Gatsby | scraggo.com

        Website Makeover: Moving from Jekyll to Gatsby

        Happy 2020! One of my new year’s resolutions is to redo my website with a lot of new things in mind. Here I’ll outline the changes I’m in the process of making. EDIT Jan 18, 2020: Gatsby makeover complete!

        +

        Website Makeover: Moving from Jekyll to Gatsby

        Happy 2020! One of my new year’s resolutions is to redo my website with a lot of new things in mind. Here I’ll outline the changes I’m in the process of making. EDIT Jan 18, 2020: Gatsby makeover complete!

        Now live: custom domain name scraggo.com

        An important step in the whole makeover was getting an official domain name - I’m now live at scraggo.com! I’m using namecheap as the provider. The site has been hosted with github pages since its inception and I’ll probably continue to host it here.

        New year, new static site generator

        @@ -416,4 +416,4 @@

        What’s remaining

        Signing off

        I’m really looking forward to the unveiling of my new site once all the updates are to complete.

        -

        I hope you’re having a great new year. Here’s to achieving your goals in 2020! 🥂

        \ No newline at end of file +

        I hope you’re having a great new year. Here’s to achieving your goals in 2020! 🥂

        \ No newline at end of file