<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[8005] sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks: WordCamp: Add blocks infrastructure, Speakers block</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://meta.trac.wordpress.org/changeset/8005">8005</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://meta.trac.wordpress.org/changeset/8005","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>coreymckrill</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2018-12-21 00:33:44 +0000 (Fri, 21 Dec 2018)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>WordCamp: Add blocks infrastructure, Speakers block</pre>

<h3>Added Paths</h3>
<ul>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblockseslintrcjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/.eslintrc.js</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetsblocksmincss">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.css</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetsblocksminjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.js</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcblocksjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/blocks.js</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/</li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedavatarindexjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar/index.js</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedavatarsizeindexjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/index.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedavatarsizestylescss">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/style.scss</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedimagealignmentindexjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/index.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedimagealignmentstylescss">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/style.scss</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedversatileselectindexjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/index.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedversatileselectstylescss">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/style.scss</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersblockcontentjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersblockcontentscss">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.scss</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersblockcontrolsjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-controls.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakerseditjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakerseditscss">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.scss</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersindexjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/index.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersinspectorcontrolsjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/inspector-controls.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersspeakersselectjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/speakers-select.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakerstoolbarjs">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/toolbar.js</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksblocksphp">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/blocks.php</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/includes/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksincludesspeakersphp">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/includes/speakers.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksreadmemd">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/readme.md</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/view/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksviewspeakersphp">sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/view/speakers.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks    2018-12-20 23:34:12 UTC (rev 8004)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks     2018-12-21 00:33:44 UTC (rev 8005)
</ins><a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocks"></a>
<div class="propset"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Property changes: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svnignore"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:ignore</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+node_modules
</ins><a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblockseslintrcjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/.eslintrc.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/.eslintrc.js                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/.eslintrc.js      2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,277 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+module.exports = {
+       parser: 'babel-eslint',
+
+       env: {
+               browser : true,
+               es6     : true,
+       },
+
+       extends: [
+               'wordpress',
+               'plugin:react/recommended',
+               'plugin:jsx-a11y/recommended',
+       ],
+
+       parserOptions: {
+               ecmaFeatures: {
+                       jsx: true,
+               },
+
+               ecmaVersion : 2018,
+               sourceType  : 'module',
+       },
+
+       settings: {
+               react: {
+                       // This should equal the version of React that ships with Core.
+                       version: '16.4.1',
+               },
+       },
+
+       globals: {
+               document       : true,
+               module         : true,
+               window         : true,
+               WordCampBlocks : true,
+       },
+
+       plugins: [
+               'react',
+               'jsx-a11y',
+       ],
+
+       /*
+        * Rules that aren't enforced yet:
+        *
+        * - Consecutive assignment statements should be aligned on the `=` operator. See https://github.com/eslint/eslint/issues/11025.
+        * - Consecutive import statements should be aligned on the `from` keyword. See https://github.com/eslint/eslint/issues/11025.
+        * - Attributes within multi-line JSX elements should be aligned on the `=` operator. See https://github.com/yannickcr/eslint-plugin-react/issues/2030.
+        */
+       rules: {
+               /* eslint-disable quote-props, no-console *//*
+                *
+                * Most of the rule names contain dashes, and therefore have to be quoted. Because of that, it's more readable
+                * if all of the rule names are quoted, rather than shifting back and forth based.
+                */
+
+               'array-bracket-spacing' : [ 'error', 'always' ],
+               'arrow-parens'          : [ 'error', 'always' ],
+               'arrow-spacing'         : 'error',
+               'brace-style'           : [ 'error', '1tbs' ],
+
+               'camelcase': [
+                       'error', {
+                               allow: [
+                                       // Whitelisting REST API parameters like this is not very elegant. There may be a better solution.
+                                       'avatar_size', 'per_page', 'posts_per_page', 'show_all_posts', 'speaker_link', 'show_avatars',
+                               ],
+                       },
+               ],
+
+               'comma-dangle'  : [ 'error', 'always-multiline' ],
+               'comma-spacing' : 'error',
+               'comma-style'   : 'error',
+
+               /*
+                * Technically this violates WP's JS standard, but `computed-property-spacing` doesn't allow exceptions for
+                * strings. The JS rule only exists for consistency w/ PHP's rule, but IMO there should be a space around
+                * string values in PHP too.
+                */
+               'computed-property-spacing' : [ 'error', 'always' ],
+               'dot-notation'              : 'error',
+               'eol-last'                  : 'error',
+               'eqeqeq'                    : 'error',
+               'func-call-spacing'         : 'error',
+               'indent'                    : [ 'error', 'tab', { SwitchCase: 1 } ],
+
+               'jsx-a11y/label-has-for'                : [ 'error', { required: 'id' } ],
+               'jsx-a11y/media-has-caption'            : 'off',
+               'jsx-a11y/no-noninteractive-tabindex'   : 'off',
+               'jsx-a11y/role-has-required-aria-props' : 'off',
+               'jsx-quotes'                            : 'error',
+
+               'key-spacing': [ 'error', {
+                       'align': {
+                               'beforeColon' : true,
+                               'afterColon'  : true,
+                               'on'          : 'colon',
+                       },
+               } ],
+
+               'keyword-spacing'      : 'error',
+               'lines-around-comment' : [ 'error', {
+                       beforeBlockComment : true,
+                       beforeLineComment  : true,
+                       allowBlockStart    : true,
+                       allowObjectStart   : true,
+                       allowArrayStart    : true,
+                       allowClassStart    : true,
+               } ],
+
+               'no-alert'                 : 'error',
+               'no-bitwise'               : 'error',
+               'no-caller'                : 'error',
+               'no-console'               : 'error',
+               'no-debugger'              : 'error',
+               'no-dupe-args'             : 'error',
+               'no-dupe-keys'             : 'error',
+               'no-duplicate-case'        : 'error',
+               'no-else-return'           : 'error',
+               'no-eval'                  : 'error',
+               'no-extra-semi'            : 'error',
+               'no-fallthrough'           : 'error',
+               'no-lonely-if'             : 'error',
+               'no-mixed-operators'       : 'error',
+               'no-mixed-spaces-and-tabs' : 'error',
+               'no-multiple-empty-lines'  : [ 'error', { max: 1 } ],
+
+               /*
+                * Ideally this should be on, because we don't want to allow things like `const foo  == bar;`, but the rule
+                * currently isn't flexible enough to allow all the exceptions we need. Specifically, there are times where
+                * readability is vastly improved by aligning attributes in consecutive lines, like the
+                * `padding-line-between-statements` objects in this file.
+                *
+                * Alternate configuration if we ever want to re-enable this:
+                *
+                * 'no-multi-spaces': [ 'error', {
+                *      // Use the `type` value from the parser demo to find these properties: https://eslint.org/parser/.
+                *          exceptions: {
+                *                  VariableDeclarator : true,
+                *                  ImportDeclaration  : true,
+                *                  JSXAttribute       : true,
+                *          },
+                * } ],
+                */
+               'no-multi-space': 'off',
+
+               'no-multi-str'      : 'off',
+               'no-negated-in-lhs' : 'error',
+               'no-nested-ternary' : 'error',
+               'no-redeclare'      : 'error',
+
+               'no-restricted-syntax': [
+                       'error',
+                       {
+                               selector : 'CallExpression[callee.name=/^__|_n|_x$/]:not([arguments.0.type=/^Literal|BinaryExpression$/])',
+                               message  : 'Translate function arguments must be string literals.',
+                       },
+
+                       {
+                               selector : 'CallExpression[callee.name=/^_n|_x$/]:not([arguments.1.type=/^Literal|BinaryExpression$/])',
+                               message  : 'Translate function arguments must be string literals.',
+                       },
+
+                       {
+                               selector : 'CallExpression[callee.name=_nx]:not([arguments.2.type=/^Literal|BinaryExpression$/])',
+                               message  : 'Translate function arguments must be string literals.',
+                       },
+               ],
+
+               'no-shadow'                     : 'error',
+               'no-undef'                      : 'error',
+               'no-undef-init'                 : 'error',
+               'no-unreachable'                : 'error',
+               'no-unsafe-negation'            : 'error',
+               'no-unused-expressions'         : 'error',
+               'no-unused-vars'                : 'error',
+               'no-useless-return'             : 'error',
+               'no-whitespace-before-property' : 'error',
+               'object-curly-spacing'          : [ 'error', 'always' ],
+
+               'padded-blocks'                   : [ 'error', 'never' ],
+               'padding-line-between-statements' : [ 'error',
+                       { blankLine: 'always', prev: '*',          next: 'block-like' },
+                       { blankLine: 'always', prev: 'block-like', next: '*'          },
+                       { blankLine: 'always', prev: '*',          next: 'class'      },
+                       { blankLine: 'always', prev: '*',          next: 'continue'   },
+                       { blankLine: 'always', prev: 'const',      next: 'import'     },
+                       { blankLine: 'always', prev: 'import',     next: 'const'      },
+                       { blankLine: 'always', prev: '*',          next: 'return'     },
+
+                       { blankLine: 'always', prev: 'break', next: '*'        }, // This should be requiring blank line after break, but it's not.
+                       { blankLine: 'always', prev: '*',     next: 'function' }, // This should be requiring blank line before function, but it's not.
+               ],
+
+               'quote-props' : [ 'error', 'as-needed' ],
+               'quotes'      : [ 'error', 'single', {
+                       allowTemplateLiterals : true,
+                       avoidEscape           : true,
+               } ],
+
+               'react/display-name'       : 'off',
+               'react/no-children-prop'   : 'off',
+               'react/prop-types'         : 'off',
+               'react/react-in-jsx-scope' : 'off',
+
+               // Disabled because it doesn't support our style: https://github.com/yannickcr/eslint-plugin-react/issues/2030
+               'react/jsx-equals-spacing' : 'off',
+               'react/jsx-indent'         : [ 'error', 'tab' ],
+               'react/jsx-indent-props'   : [ 'error', 'tab' ],
+               'react/jsx-key'            : 'error',
+               'react/jsx-tag-spacing'    : 'error',
+               'react/jsx-curly-spacing'  : [ 'error', {
+                       when     : 'always',
+                       children : true,
+               } ],
+
+               'require-jsdoc': [ 'error', {
+                       'require': {
+                               FunctionDeclaration     : true,
+                               MethodDefinition        : true,
+                               ClassDeclaration        : true,
+                               ArrowFunctionExpression : true,
+                               FunctionExpression      : true,
+                       },
+               } ],
+
+               'semi'                : 'error',
+               'semi-spacing'        : 'error',
+               'space-before-blocks' : [ 'error', 'always' ],
+
+               'space-before-function-paren': [ 'error', {
+                       anonymous  : 'never',
+                       named      : 'never',
+                       asyncArrow : 'always',
+               } ],
+
+               'space-in-parens' : [ 'error', 'always' ],
+               'space-infix-ops' : [ 'error', { int32Hint: false } ],
+               'space-unary-ops' : [ 'error', {
+                       overrides: {
+                               '!'   : true,
+                               yield : true,
+                       },
+               } ],
+
+               'valid-jsdoc': [ 'error', {
+                       prefer: {
+                               arg      : 'param',
+                               argument : 'param',
+                               extends  : 'augments',
+                               returns  : 'return',
+                       },
+
+                       preferType: {
+                               array   : 'Array',
+                               bool    : 'boolean',
+                               Boolean : 'boolean',
+                               Float   : 'float',
+                               int     : 'integer',
+                               Int     : 'integer',
+                               Integer : 'integer',
+                               Number  : 'number',
+                               object  : 'Object',
+                               String  : 'string',
+                               Void    : 'void',
+                       },
+
+                       requireParamDescription  : false,
+                       requireReturnDescription : false,
+               } ],
+
+               'valid-typeof' : 'error',
+               'yoda'         : 'error',
+
+               /* eslint-enable quote-props, no-console */
+       },
+};
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetsblocksmincss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.css                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.css     2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,97 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.wordcamp-speakers-block,
+.editor-styles-wrapper .wordcamp-speakers-block {
+  list-style: none; }
+
+.wordcamp-speakers-block.layout-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  grid-column-gap: 1em;
+  grid-row-gap: 1em; }
+  .wordcamp-speakers-block.layout-grid.grid-columns-3 {
+    grid-template-columns: repeat(3, 1fr); }
+  .wordcamp-speakers-block.layout-grid.grid-columns-4 {
+    grid-template-columns: repeat(4, 1fr); }
+
+.wordcamp-speakers-block .wordcamp-speaker:after {
+  content: "";
+  display: table;
+  clear: both; }
+
+.wordcamp-speaker-session-list,
+.editor-styles-wrapper .wordcamp-speaker-session-list {
+  list-style: none; }
+
+.wordcamp-speaker-avatar.align-left, .wordcamp-speaker-avatar.align-center, .wordcamp-speaker-avatar.align-right {
+  display: block; }
+
+.wordcamp-speaker-avatar.align-left {
+  float: left;
+  margin-right: 1em; }
+
+.wordcamp-speaker-avatar.align-center {
+  margin-left: auto;
+  margin-right: auto; }
+
+.wordcamp-speaker-avatar.align-right {
+  float: right;
+  margin-left: 1em; }
+
+.wordcamp-components-versatile-select-inner {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  text-align: left; }
+
+.wordcamp-components-versatile-select-select {
+  flex-grow: 2;
+  margin-right: 1em; }
+  .rtl .wordcamp-components-versatile-select-select {
+    margin-left: 1em;
+    margin-right: 0; }
+  .wordcamp-components-versatile-select-select input[type="text"]:focus {
+    box-shadow: none; }
+
+.wordcamp-components-avatar-size-buttons {
+  display: flex;
+  justify-content: space-between; }
+
+.edit-post-settings-sidebar__panel-block .components-panel__body .wordcamp-components-avatar-size-range {
+  margin-top: 1em; }
+
+.wordcamp-components-image-alignment .components-icon-button {
+  display: inline-flex; }
+
+.wordcamp-block-speakers-mode-option {
+  flex-basis: 100%;
+  padding: 0.5em; }
+
+.wordcamp-speakers-select-option {
+  display: flex;
+  align-items: center; }
+
+.wordcamp-speakers-select-option-icon-container {
+  background-color: #f3f3f4;
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  width: 24px;
+  height: 24px; }
+
+.wordcamp-speakers-select-option-label {
+  margin: 0 0.5em; }
+
+.wordcamp-speakers-select-option-label-term-count {
+  font-size: 0.6em;
+  display: inline-block;
+  border-radius: 50%;
+  background-color: #f3f3f4;
+  width: 2.2em;
+  height: 2.2em;
+  margin: 0 0.5em;
+  text-align: center;
+  line-height: 2.2em;
+  vertical-align: text-top; }
+
+.wordcamp-components-versatile-select {
+  width: 100%; }
+
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetsblocksminjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.js                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.js      2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,1006 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/******/ (function(modules) { // webpackBootstrap
+/******/       // The module cache
+/******/       var installedModules = {};
+/******/
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/
+/******/               // Check if module is in cache
+/******/               if(installedModules[moduleId]) {
+/******/                       return installedModules[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = installedModules[moduleId] = {
+/******/                       i: moduleId,
+/******/                       l: false,
+/******/                       exports: {}
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/               // Flag the module as loaded
+/******/               module.l = true;
+/******/
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/
+/******/
+/******/       // expose the modules object (__webpack_modules__)
+/******/       __webpack_require__.m = modules;
+/******/
+/******/       // expose the module cache
+/******/       __webpack_require__.c = installedModules;
+/******/
+/******/       // define getter function for harmony exports
+/******/       __webpack_require__.d = function(exports, name, getter) {
+/******/               if(!__webpack_require__.o(exports, name)) {
+/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/               }
+/******/       };
+/******/
+/******/       // define __esModule on exports
+/******/       __webpack_require__.r = function(exports) {
+/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/               }
+/******/               Object.defineProperty(exports, '__esModule', { value: true });
+/******/       };
+/******/
+/******/       // create a fake namespace object
+/******/       // mode & 1: value is a module id, require it
+/******/       // mode & 2: merge all properties of value into the ns
+/******/       // mode & 4: return value when already ns object
+/******/       // mode & 8|1: behave like require
+/******/       __webpack_require__.t = function(value, mode) {
+/******/               if(mode & 1) value = __webpack_require__(value);
+/******/               if(mode & 8) return value;
+/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/               var ns = Object.create(null);
+/******/               __webpack_require__.r(ns);
+/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/               if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/               return ns;
+/******/       };
+/******/
+/******/       // getDefaultExport function for compatibility with non-harmony modules
+/******/       __webpack_require__.n = function(module) {
+/******/               var getter = module && module.__esModule ?
+/******/                       function getDefault() { return module['default']; } :
+/******/                       function getModuleExports() { return module; };
+/******/               __webpack_require__.d(getter, 'a', getter);
+/******/               return getter;
+/******/       };
+/******/
+/******/       // Object.prototype.hasOwnProperty.call
+/******/       __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/       // __webpack_public_path__
+/******/       __webpack_require__.p = "";
+/******/
+/******/
+/******/       // Load entry module and return exports
+/******/       return __webpack_require__(__webpack_require__.s = "./assets/src/blocks.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./assets/src/blocks.js":
+/*!******************************!*\
+  !*** ./assets/src/blocks.js ***!
+  \******************************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _speakers___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./speakers/ */ \"./assets/src/speakers/index.js\");\n/**\n * WordPress dependencies\n */\nvar registerBlockType = wp.blocks.registerBlockType;\n/**\n * Internal dependencies\n */\n\n\n[_speakers___WEBPACK_IMPORTED_MODULE_0__].forEach(function (_ref) {\n  var name = _ref.name,\n      settings = _ref.settings;\n  registerBlockType(name, settings);\n});\n\n//# sourceURL=webpack:///./assets/src/blocks.js?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/avatar-size/index.js":
+/*!************************************************!*\
+  !*** ./assets/src/shared/avatar-size/index.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _wordpress_element__WEBPACK_
 IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style.scss */ \"./assets/src/shared/avatar-size/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar _wp$components = wp.components,\n    BaseControl = _wp$components.BaseControl,\n    Button = _wp$components.Button,\n    ButtonGroup =
  _wp$components.ButtonGroup,\n    RangeControl = _wp$components.RangeControl;\nvar withInstanceId = wp.compose.withInstanceId;\nvar _wp$i18n = wp.i18n,\n    __ = _wp$i18n.__,\n    _x = _wp$i18n._x;\n/**\n * Internal dependencies\n */\n\n\nvar sizePresets = [{\n  name: __('Small', 'wordcamporg'),\n  shortName: _x('S', 'size small', 'wordcamporg'),\n  size: 90,\n  slug: 'small'\n}, {\n  name: __('Regular', 'wordcamporg'),\n  shortName: _x('M', 'size medium', 'wordcamporg'),\n  size: 150,\n  slug: 'regular'\n}, {\n  name: __('Large', 'wordcamporg'),\n  shortName: _x('L', 'size large', 'wordcamporg'),\n  size: 300,\n  slug: 'large'\n}, {\n  name: __('Larger', 'wordcamporg'),\n  shortName: _x('XL', 'size extra large', 'wordcamporg'),\n  size: 500,\n  slug: 'larger'\n}];\n\nfunction AvatarSizeControl(_ref) {\n  var className = _ref.className,\n      label = _ref.label,\n      help = _ref.help,\n      value = _ref.value,\n      instanceId = _ref.instanceId,\n      onChange = _ref.onChange,
 \n      initialPosition = _ref.initialPosition,\n      props = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, [\"className\", \"label\", \"help\", \"value\", \"instanceId\", \"onChange\", \"initialPosition\"]);\n\n  var id = \"wordcamp-inspector-avatar-size-control-\".concat(instanceId);\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(BaseControl, {\n    id: id,\n    className: classnames__WEBPACK_IMPORTED_MODULE_3___default()('wordcamp-components-avatar-size', className),\n    label: label,\n    help: help\n  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(\"div\", {\n    className: 'wordcamp-components-avatar-size-buttons'\n  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(ButtonGroup, null, sizePresets.map(function (preset
 ) {\n    var name = preset.name,\n        shortName = preset.shortName,\n        size = preset.size,\n        slug = preset.slug;\n    var isCurrent = value === size;\n    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(Button, {\n      key: slug,\n      isLarge: true,\n      isPrimary: isCurrent,\n      \"aria-pressed\": isCurrent,\n      onClick: function onClick() {\n        return onChange(Number(size));\n      }\n    }, shortName || name);\n  })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(Button, {\n    className: 'wordcamp-components-avatar-size-button-reset',\n    isLarge: true,\n    isDefault: true,\n    onClick: function onClick() {\n      return onChange(Number(initialPosition));\n    }\n  }, __('Reset', 'wordcamporg'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(RangeControl, _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__
 _default()({\n    className: 'wordcamp-components-avatar-size-range',\n    value: value,\n    initialPosition: initialPosition,\n    onChange: onChange,\n    beforeIcon: 'format-image',\n    afterIcon: 'format-image'\n  }, props)));\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (withInstanceId(AvatarSizeControl));\n\n//# sourceURL=webpack:///./assets/src/shared/avatar-size/index.js?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/avatar-size/style.scss":
+/*!**************************************************!*\
+  !*** ./assets/src/shared/avatar-size/style.scss ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./assets/src/shared/avatar-size/style.scss?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/avatar/index.js":
+/*!*******************************************!*\
+  !*** ./assets/src/shared/avatar/index.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar _wp$i18n = wp.i18n,\n    __ = _wp$i18n.__,\n    sprintf = _wp$i18n.sprintf;\nvar addQueryArgs = wp.url.addQueryArgs;\n\nfunction AvatarImage(_ref) {\n  var className = _ref.className,\n      name = _ref.name,\n      size = _ref.size,\n      url = _ref.url;\n\n  var getSizedURL = function getSizedURL(avatar_url, avatar_size) {\n    return addQueryArgs
 (avatar_url, {\n      s: avatar_size\n    });\n  };\n\n  var alt = name ? sprintf(__('Avatar of %s', 'wordcamporg'), name) : '';\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"img\", {\n    className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('avatar', 'avatar-' + size, 'photo', className),\n    src: getSizedURL(url, size),\n    srcSet: getSizedURL(url, size * 2) + ' 2x',\n    alt: alt,\n    width: size,\n    height: size\n  });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AvatarImage);\n\n//# sourceURL=webpack:///./assets/src/shared/avatar/index.js?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/image-alignment/index.js":
+/*!****************************************************!*\
+  !*** ./assets/src/shared/image-alignment/index.js ***!
+  \****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style.scss */ \"./assets/src/shared/image-alignment/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_2__);\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar _wp$components = wp.compo
 nents,\n    BaseControl = _wp$components.BaseControl,\n    ButtonGroup = _wp$components.ButtonGroup,\n    IconButton = _wp$components.IconButton;\nvar withInstanceId = wp.compose.withInstanceId;\n/**\n * Internal dependencies\n */\n\n\nvar data = window.WordCampBlocks.speakers || {};\n\nfunction ImageAlignmentControl(_ref) {\n  var className = _ref.className,\n      label = _ref.label,\n      help = _ref.help,\n      value = _ref.value,\n      instanceId = _ref.instanceId,\n      onChange = _ref.onChange;\n  var options = data.options;\n  var id = \"wordcamp-inspector-image-alignment-control-\".concat(instanceId);\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(BaseControl, {\n    id: id,\n    className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('wordcamp-components-image-alignment', className),\n    label: label,\n    help: help\n  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])
 (ButtonGroup, null, options.align.map(function (alignment) {\n    var optLabel = alignment.label;\n    var optValue = alignment.value;\n    var isCurrent = value === optValue;\n    var iconSlug = \"align-\".concat(optValue);\n    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(IconButton, {\n      key: optValue,\n      isLarge: true,\n      isPrimary: isCurrent,\n      \"aria-pressed\": isCurrent,\n      onClick: function onClick() {\n        return onChange(optValue);\n      },\n      icon: iconSlug,\n      label: optLabel\n    });\n  })));\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (withInstanceId(ImageAlignmentControl));\n\n//# sourceURL=webpack:///./assets/src/shared/image-alignment/index.js?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/image-alignment/style.scss":
+/*!******************************************************!*\
+  !*** ./assets/src/shared/image-alignment/style.scss ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./assets/src/shared/image-alignment/style.scss?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/versatile-select/index.js":
+/*!*****************************************************!*\
+  !*** ./assets/src/shared/versatile-select/index.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpa
 ck_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modu
 les/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WE
 BPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-select */ \"./node_modules/react-select/dist/react-select.esm.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./style.scss */ \"./assets/src/shared/versatile-select/style.scss\&q
 uot;);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n/**\n * External dependencies\n */\n\n\n/**\n * WordPress dependencies\n */\n\nvar _wp$components = wp.components,\n    BaseControl = _wp$components.BaseControl,\n    Button = _wp$components.Button;\nvar Component = wp.element.Component;\nvar __ = wp.i18n.__;\n/**\n * Internal dependencies\n */\n\n\n\nvar VersatileSelect =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(VersatileSelect, _Component);\n\n  function VersatileSelect(props) {\n    var _this;\n\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, VersatileSelect);\n\n    _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___defaul
 t()(VersatileSelect).call(this, props));\n    _this.state = {\n      selectedOptions: null\n    };\n    _this.render = _this.render.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6___default()(_this)));\n    return _this;\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(VersatileSelect, [{\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          className = _this$props.className,\n          label = _this$props.label,\n          help = _this$props.help,\n          instanceId = _this$props.instanceId,\n          onChange = _this$props.onChange,\n          submitLabel = _this$props.submitLabel;\n      var id = \"wordcamp-block-versatile-select-control-\".concat(instanceId);\n      var value = this.state.selectedOptions || this.props.value;\n      ret
 urn Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(BaseControl, {\n        id: id,\n        className: classnames__WEBPACK_IMPORTED_MODULE_9___default()('wordcamp-components-versatile-select', className),\n        label: label,\n        help: help\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"div\", {\n        className: 'wordcamp-components-versatile-select-inner'\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(react_select__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({\n        isMulti: true\n      }, this.props, {\n        value: value,\n        className: 'wordcamp-components-versatile-select-select',\n        onChange: function onChange(selectedOptions) {\n          _this2.setState({\n            selectedOptions: selectedOptions\n          });\n        }\n  
     })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(Button, {\n        className: 'wordcamp-components-versatile-select-button',\n        isLarge: true,\n        isDefault: true,\n        onClick: function onClick() {\n          var selectedOptions = _this2.state.selectedOptions;\n          onChange(selectedOptions);\n        }\n      }, submitLabel || __('Select', 'wordcamporg'))));\n    }\n  }]);\n\n  return VersatileSelect;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (VersatileSelect);\n\n//# sourceURL=webpack:///./assets/src/shared/versatile-select/index.js?");
+
+/***/ }),
+
+/***/ "./assets/src/shared/versatile-select/style.scss":
+/*!*******************************************************!*\
+  !*** ./assets/src/shared/versatile-select/style.scss ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./assets/src/shared/versatile-select/style.scss?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/block-content.js":
+/*!**********************************************!*\
+  !*** ./assets/src/speakers/block-content.js ***!
+  \**********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEB
 PACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherit
 s */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(cla
 ssnames__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _shared_avatar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../shared/avatar */ \"./assets/src/shared/avatar/index.js\");\n/* harmony import */ var _block_content_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./block-content.scss */ \"./assets/src/speakers/block-content.scss\");\n/* harmony import */ var _block_content_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_block_content_scss__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n/**\n * External dependencies\n */\n\n\n/**\n * WordPress dependencies\n */\n\nvar Disabled = wp.components.Disabled;\nvar _wp$element = wp.element,\n    Component = _wp$element.Component,\n    Fragment = _wp$element.Fragment,\n    RawHTML = _wp$element.RawHTML;\nvar decodeEntities = wp.htmlEntities.decodeEntities;\nvar _wp$i18n = wp.i18n,\n    __ = _wp$i18n.__,\n    _n = _wp$i18n._n,\n    sprintf = _wp$i18n.sprintf;\n
 /**\n * Internal dependencies\n */\n\n\n\n\nvar SpeakersBlockContent =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(SpeakersBlockContent, _Component);\n\n  function SpeakersBlockContent() {\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, SpeakersBlockContent);\n\n    return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(SpeakersBlockContent).apply(this, arguments));\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(SpeakersBlockContent, [{\n    key: \"render\",\n    value: function render() {\n      var _this = this;\n\n      var _this$props = this.props,\n          attributes = _this$props.attributes,\n          speakerPosts = _this$props.speakerPosts,\n          tracks = _this$props.tracks;\n      var layout 
 = attributes.layout,\n          grid_columns = attributes.grid_columns,\n          className = attributes.className,\n          show_avatars = attributes.show_avatars,\n          avatar_size = attributes.avatar_size,\n          avatar_align = attributes.avatar_align,\n          content = attributes.content,\n          speaker_link = attributes.speaker_link,\n          show_session = attributes.show_session;\n      var containerClasses = ['wordcamp-speakers-block', 'layout-' + layout, className];\n\n      if ('grid' === layout) {\n        containerClasses.push('grid-columns-' + Number(grid_columns));\n      }\n\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"ul\", {\n        className: classnames__WEBPACK_IMPORTED_MODULE_7___default()(containerClasses)\n      }, speakerPosts.map(function (post, i) {\n        return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"li\", {\n  
         key: i,\n          className: classnames__WEBPACK_IMPORTED_MODULE_7___default()('wordcamp-speaker', 'wordcamp-speaker-' + post.slug)\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"h3\", {\n          className: 'wordcamp-speaker-name-heading'\n        }, decodeEntities(post.title.rendered.trim()) || __('(Untitled)', 'wordcamporg')), show_avatars && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(_shared_avatar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n          className: classnames__WEBPACK_IMPORTED_MODULE_7___default()('wordcamp-speaker-avatar', 'align-' + avatar_align),\n          name: decodeEntities(post.title.rendered.trim()) || '',\n          size: avatar_size,\n          url: post['avatar_urls']['24']\n        }), ('none' !== content || true === speaker_link) && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\&quo
 t;])(\"div\", {\n          className: 'wordcamp-speaker-content'\n        }, 'full' === content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(RawHTML, null, _this.constructor.maybeAddMoreLink(post.content.rendered.trim(), speaker_link).trim())), 'excerpt' === content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(RawHTML, null, _this.constructor.maybeAddMoreLink(post.excerpt.rendered.trim(), speaker_link).trim())), 'none' === content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(RawHTML, null, _this.constructor.maybeAddMoreLink('
 ', speaker_link).trim()))), true === show_session && post._embedded.sessions.length && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"h4\", {\n          className: 'wordcamp-speaker-session-heading'\n        }, _n('Session', 'Sessions', post._embedded.sessions.length, 'wordcamporg')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"ul\", {\n          className: 'wordcamp-speaker-session-list'\n        }, post._embedded.sessions.map(function (session, x) {\n          return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"li\", {\n            key: x,\n            className: 'wordcamp-speaker-session-content'\n          }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Disabled, null, Obj
 ect(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"a\", {\n            className: 'wordcamp-speaker-session-link',\n            href: session.link\n          }, decodeEntities(session.title.rendered.trim()) || __('(Untitled)', 'wordcamporg')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"br\", null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(\"span\", {\n            className: 'wordcamp-speaker-session-info'\n          }, session.session_track.length && sprintf(\n          /* translators: 1: A date; 2: A time; 3: A location; */\n          __('%1$s at %2$s in %3$s', 'wordcamporg'), session.session_date_time.date, session.session_date_time.time, Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"get\"])(Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"find\"])(tracks, function (value) {\n            return parseInt(value.
 id) === Object(lodash__WEBPACK_IMPORTED_MODULE_6__[\"head\"])(session.session_track);\n          }), 'name')), !session.session_track.length && sprintf(\n          /* translators: 1: A date; 2: A time; */\n          __('%1$s at %2$s', 'wordcamporg'), session.session_date_time.date, session.session_date_time.time))));\n        }))));\n      }));\n    }\n  }], [{\n    key: \"maybeAddMoreLink\",\n    value: function maybeAddMoreLink(content, add) {\n      if (add) {\n        var more = sprintf('<a href=\"#\" class=\"wordcamp-speaker-more-link\">%s</a>', __('Read more', 'wordcamporg'));\n        var pattern = /<\\/p>$/;\n\n        if (Array.isArray(content.match(pattern))) {\n          content = content.replace(pattern, ' ' + more + '</p>');\n        } else {\n          content += ' ' + more;\n        }\n      }\n\n      return content;\n    }\n  }]);\n\n  return SpeakersBlockContent;\n}(Component);\n\n/* harmony de
 fault export */ __webpack_exports__[\"default\"] = (SpeakersBlockContent);\n\n//# sourceURL=webpack:///./assets/src/speakers/block-content.js?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/block-content.scss":
+/*!************************************************!*\
+  !*** ./assets/src/speakers/block-content.scss ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./assets/src/speakers/block-content.scss?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/block-controls.js":
+/*!***********************************************!*\
+  !*** ./assets/src/speakers/block-controls.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpa
 ck_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modu
 les/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony 
 import */ var lodash__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _block_content__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./block-content */ \"./assets/src/speakers/block-content.js\");\n/* harmony import */ var _speakers_select__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./speakers-select */ \"./assets/src/speakers/speakers-select.js\");\n\n\n\n\n\n\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar _wp$components = wp.components,\n    Button = _wp$components.Button,\n    Placeholder = _wp$components.Placeholder,\n    Spinner = _wp$components.Spinner;\nvar _wp$element = wp.element,\n    Component = _wp$element.Component,\n    Fragment = _wp$element.Fragment;\nvar __ = wp.i18n.__;\n/**\n * Internal dependencies\n */\n\n\n\nvar data = window.WordCampBlocks.speakers || {};\n\nvar SpeakersBlockControls =\n/*#__PURE_
 _*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(SpeakersBlockControls, _Component);\n\n  function SpeakersBlockControls() {\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SpeakersBlockControls);\n\n    return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(SpeakersBlockControls).apply(this, arguments));\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(SpeakersBlockControls, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          attributes = _this$props.attributes,\n          setAttributes = _this$props.setAttributes,\n          speakerPosts = _this$props.speakerPosts;\n      var mode = attributes.mode;\n      var options = data.options;\n      var hasPosts = Array.isArray(sp
 eakerPosts) && speakerPosts.length;\n\n      if (mode && !hasPosts) {\n        return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Placeholder, {\n          icon: \"megaphone\",\n          label: __('Speakers', 'wordcamporg')\n        }, !Array.isArray(speakerPosts) ? Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Spinner, null) : __('No posts found.', 'wordcamporg'));\n      }\n\n      switch (mode) {\n        case 'all':\n          return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_block_content__WEBPACK_IMPORTED_MODULE_8__[\"default\"], this.props);\n\n        case 'specific_posts':\n          var postsLabel = Object(lodash__WEBPACK_IMPORTED_MODULE_7__[\"find\"])(options.mode, function (modeOption) {\n            return 'specific_posts' === modeOption.value;\n          }).label;\n          return Object(_wordpress_el
 ement__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_block_content__WEBPACK_IMPORTED_MODULE_8__[\"default\"], this.props), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Placeholder, {\n            icon: \"megaphone\",\n            label: postsLabel\n          }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_speakers_select__WEBPACK_IMPORTED_MODULE_9__[\"default\"], this.props)));\n\n        case 'specific_terms':\n          var termsLabel = Object(lodash__WEBPACK_IMPORTED_MODULE_7__[\"find\"])(options.mode, function (modeOption) {\n            return 'specific_terms' === modeOption.value;\n          }).label;\n          return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Fragment, null, Object(_wordpress_element__W
 EBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_block_content__WEBPACK_IMPORTED_MODULE_8__[\"default\"], this.props), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Placeholder, {\n            icon: \"megaphone\",\n            label: termsLabel\n          }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_speakers_select__WEBPACK_IMPORTED_MODULE_9__[\"default\"], this.props)));\n      }\n\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Placeholder, {\n        icon: 'megaphone',\n        label: __('Speakers', 'wordcamporg')\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(\"div\", {\n        className: 'wordcamp-block-speakers-mode-option'\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Button, {\n        isDefault: tr
 ue,\n        isLarge: true,\n        onClick: function onClick() {\n          setAttributes({\n            mode: 'all'\n          });\n        }\n      }, Object(lodash__WEBPACK_IMPORTED_MODULE_7__[\"find\"])(options.mode, function (modeOption) {\n        return 'all' === modeOption.value;\n      }).label)), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(\"div\", {\n        className: 'wordcamp-block-speakers-mode-option'\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_speakers_select__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({\n        label: __('Choose specific speakers or groups', 'wordcamporg')\n      }, this.props))));\n    }\n  }]);\n\n  return SpeakersBlockControls;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SpeakersBlockControls);\n\n//# sour
 ceURL=webpack:///./assets/src/speakers/block-controls.js?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/edit.js":
+/*!*************************************!*\
+  !*** ./assets/src/speakers/edit.js ***!
+  \*************************************/
+/*! exports provided: edit */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"edit\", function() { return edit; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtim
 e_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ v
 ar _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-mod
 ule/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _block_controls__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./block-controls */ \"./assets/src/speakers/block-controls.js\");\n/* harmony import */ var _inspector_controls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./inspector-controls */ \"./assets/src/speakers/inspector-controls.js\");\n/* harmony import */ var _toolbar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./toolbar */ \"./assets/src/speakers/toolbar.js\");\n/* harmony import */ var _edit_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./edit.scss */ \"./assets/src/speakers/edit.scss\");\n/* harmony import */ var _edit_scss__WEBP
 ACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_edit_scss__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar withSelect = wp.data.withSelect;\nvar _wp$element = wp.element,\n    Component = _wp$element.Component,\n    Fragment = _wp$element.Fragment;\n/**\n * Internal dependencies\n */\n\n\n\n\n\nvar MAX_POSTS = 100;\n\nvar SpeakersEdit =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(SpeakersEdit, _Component);\n\n  function SpeakersEdit() {\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SpeakersEdit);\n\n    return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(SpeakersEdit).apply(this, arguments));\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_I
 MPORTED_MODULE_2___default()(SpeakersEdit, [{\n    key: \"render\",\n    value: function render() {\n      var mode = this.props.attributes.mode;\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_block_controls__WEBPACK_IMPORTED_MODULE_8__[\"default\"], this.props), mode && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_inspector_controls__WEBPACK_IMPORTED_MODULE_9__[\"default\"], this.props), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__[\"createElement\"])(_toolbar__WEBPACK_IMPORTED_MODULE_10__[\"default\"], this.props)));\n    }\n  }]);\n\n  return SpeakersEdit;\n}(Component);\n\nvar speakersSelect = function speakersSelect(sele
 ct, props) {\n  var _props$attributes = props.attributes,\n      mode = _props$attributes.mode,\n      post_ids = _props$attributes.post_ids,\n      term_ids = _props$attributes.term_ids,\n      sort = _props$attributes.sort;\n\n  var _select = select('core'),\n      getEntityRecords = _select.getEntityRecords;\n\n  var _split = Object(lodash__WEBPACK_IMPORTED_MODULE_7__[\"split\"])(sort, '_', 2),\n      _split2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_split, 2),\n      orderby = _split2[0],\n      order = _split2[1];\n\n  var args = {\n    orderby: orderby,\n    order: order,\n    per_page: MAX_POSTS,\n    // -1 is not allowed for per_page.\n    _embed: true,\n    context: 'view'\n  };\n\n  if ('specific_posts' === mode && Array.isArray(post_ids)) {\n    args.include = post_ids;\n  }\n\n  if ('specific_terms' === mode && Array.isArray(term_ids)) {\n    args['speaker_group'] = term_ids;\n  }\n\n  var speakersQuery = Obj
 ect(lodash__WEBPACK_IMPORTED_MODULE_7__[\"pickBy\"])(args, function (value) {\n    return !Object(lodash__WEBPACK_IMPORTED_MODULE_7__[\"isUndefined\"])(value);\n  });\n  return {\n    speakerPosts: getEntityRecords('postType', 'wcb_speaker', speakersQuery),\n    tracks: getEntityRecords('taxonomy', 'wcb_track', {\n      per_page: MAX_POSTS\n    })\n  };\n};\n\nvar edit = withSelect(speakersSelect)(SpeakersEdit);\n\n//# sourceURL=webpack:///./assets/src/speakers/edit.js?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/edit.scss":
+/*!***************************************!*\
+  !*** ./assets/src/speakers/edit.scss ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./assets/src/speakers/edit.scss?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/index.js":
+/*!**************************************!*\
+  !*** ./assets/src/speakers/index.js ***!
+  \**************************************/
+/*! exports provided: name, settings */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"name\", function() { return name; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"settings\", function() { return settings; });\n/* harmony import */ var _edit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./edit.js */ \"./assets/src/speakers/edit.js\");\n/**\n * WordPress dependencies\n */\nvar __ = wp.i18n.__;\n/**\n * Internal dependencies\n */\n\n\nvar name = 'wordcamp/speakers';\nvar settings = {\n  title: __('Speakers', 'wordcamporg'),\n  description: __('Add a list of speakers.', 'wordcamporg'),\n  icon: 'megaphone',\n  category: 'wordcamp',\n  edit: _edit_js__WEBPACK_IMPORTED_MODULE_0__[\"edit\"],\n  save: function save() {\n    return null;\n  }\n};\n\n//# sourceURL=webpack:///./assets/src/speakers/index.js?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/inspector-controls.js":
+/*!***************************************************!*\
+  !*** ./assets/src/speakers/inspector-controls.js ***!
+  \***************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEB
 PACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherit
 s */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var _shared_avatar_size__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shared/avatar-size */ \"./assets/src/shared/avatar-size/index.js\");\n/* harmony import */ var _shared_image_alignment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../shared/image-alignment */ \"./assets/src/shared/image-alignment/index.js\");\n\n\n\n\n\n\n\n/**\n * WordPress dependencies\n */\nvar _wp$components = wp.components,\n    PanelBody = _wp$components.PanelBody,\n    PanelRow = _wp$componen
 ts.PanelRow,\n    RangeControl = _wp$components.RangeControl,\n    SelectControl = _wp$components.SelectControl,\n    ToggleControl = _wp$components.ToggleControl;\nvar InspectorControls = wp.editor.InspectorControls;\nvar _wp$element = wp.element,\n    Component = _wp$element.Component,\n    Fragment = _wp$element.Fragment;\nvar __ = wp.i18n.__;\n/**\n * Internal dependencies\n */\n\n\n\nvar data = window.WordCampBlocks.speakers || {};\n\nvar SpeakerInspectorControls =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(SpeakerInspectorControls, _Component);\n\n  function SpeakerInspectorControls() {\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, SpeakerInspectorControls);\n\n    return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(SpeakerInspectorControls).
 apply(this, arguments));\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(SpeakerInspectorControls, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          attributes = _this$props.attributes,\n          setAttributes = _this$props.setAttributes;\n      var layout = attributes.layout,\n          grid_columns = attributes.grid_columns,\n          show_avatars = attributes.show_avatars,\n          avatar_size = attributes.avatar_size,\n          avatar_align = attributes.avatar_align,\n          content = attributes.content,\n          speaker_link = attributes.speaker_link,\n          show_session = attributes.show_session,\n          sort = attributes.sort;\n      var schema = data.schema,\n          options = data.options;\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(InspectorControls, null, 'grid' === layout && Object(_wordpres
 s_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelBody, {\n        title: __('Layout', 'wordcamporg'),\n        initialOpen: true\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(RangeControl, {\n        label: __('Grid Columns', 'wordcamporg'),\n        value: Number(grid_columns),\n        min: Number(schema['grid_columns'].minimum),\n        max: Number(schema['grid_columns'].maximum),\n        initialPosition: Number(schema['grid_columns'].default),\n        onChange: function onChange(value) {\n          return setAttributes({\n            grid_columns: value\n          });\n        }\n      }))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelBody, {\n        title: __('Avatar Settings', 'wordcamporg'),\n        initialOpen: true\n      }, Object(_wordpress_element__
 WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(ToggleControl, {\n        label: __('Show avatars', 'wordcamporg'),\n        checked: show_avatars,\n        onChange: function onChange(value) {\n          return setAttributes({\n            show_avatars: value\n          });\n        }\n      })), show_avatars && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(_shared_avatar_size__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n        label: __('Size', 'wordcamporg'),\n        value: Number(avatar_size),\n        min: Number(schema['avatar_size'].minimum),\n        max: Number(schema['avatar_size'].maximum),\n        initia
 lPosition: Number(schema['avatar_size'].default),\n        onChange: function onChange(value) {\n          return setAttributes({\n            avatar_size: value\n          });\n        }\n      })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(_shared_image_alignment__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n        label: __('Alignment', 'wordcamporg'),\n        value: avatar_align,\n        onChange: function onChange(value) {\n          return setAttributes({\n            avatar_align: value\n          });\n        }\n      })))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelBody, {\n        title: __('Content Settings', 'wordcamporg'),\n        initialOpen: false\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_w
 ordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(SelectControl, {\n        label: __('Biography Length', 'wordcamporg'),\n        value: content,\n        options: options.content,\n        onChange: function onChange(value) {\n          return setAttributes({\n            content: value\n          });\n        }\n      })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(ToggleControl, {\n        label: __('Speaker Link', 'wordcamporg'),\n        help: __(\"Link to a speaker's biography page\", 'wordcamporg'),\n        checked: speaker_link,\n        onChange: function onChange(value) {\n          return setAttributes({\n            speaker_link: value\n          });\n        }\n      })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_ele
 ment__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(ToggleControl, {\n        label: __('Session Information', 'wordcamporg'),\n        help: __(\"Show speaker's session name, time, and track\", 'wordcamporg'),\n        checked: show_session,\n        onChange: function onChange(value) {\n          return setAttributes({\n            show_session: value\n          });\n        }\n      }))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelBody, {\n        title: __('Sorting & Filtering', 'wordcamporg'),\n        initialOpen: false\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(SelectControl, {\n        label: __('Sort by', 'wordcamporg'),\n        value: sort,\n        options: options.sort,\n        onChange: function onChange(value) {\n          return setAttributes({
 \n            sort: value\n          });\n        }\n      }))));\n    }\n  }]);\n\n  return SpeakerInspectorControls;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SpeakerInspectorControls);\n\n//# sourceURL=webpack:///./assets/src/speakers/inspector-controls.js?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/speakers-select.js":
+/*!************************************************!*\
+  !*** ./assets/src/speakers/speakers-select.js ***!
+  \************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpa
 ck_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modu
 les/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WE
 BPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _shared_avatar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../shared/avatar */ \"./assets/src/shared/avatar/index.js\");\n/* harmony import */ var _shared_versatile_select__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shared/versatile-select */ \"./assets/src/shared/versatile-select/index.js\");\n\n\n\n\n\n\n\n\n\n/**\
 n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar Dashicon = wp.components.Dashicon;\nvar withSelect = wp.data.withSelect;\nvar Component = wp.element.Component;\nvar decodeEntities = wp.htmlEntities.decodeEntities;\nvar __ = wp.i18n.__;\n/**\n * Internal dependencies\n */\n\n\n\n\nvar SpeakersSelect =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(SpeakersSelect, _Component);\n\n  function SpeakersSelect(props) {\n    var _this;\n\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SpeakersSelect);\n\n    _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(SpeakersSelect).call(this, props));\n    _this.optionDisabled = _this.optionDisabled.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6___default()(_b
 abel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6___default()(_this)));\n    _this.render = _this.render.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6___default()(_this)));\n    return _this;\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(SpeakersSelect, [{\n    key: \"optionDisabled\",\n    value: function optionDisabled(option, selected) {\n      var mode = this.props.attributes.mode;\n      var chosen;\n\n      if (Array.isArray(selected) && selected.length) {\n        chosen = selected[0].type;\n      }\n\n      if ('specific_terms' === mode && 'post' === option.type) {\n        return true;\n      }\n\n      if ('specific_posts' === mode && 'term' === option.type) {\n        return true;\n      }\n\n      return chosen && chosen !== option.type;\n    }\n  }, {\n    ke
 y: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          label = _this$props.label,\n          attributes = _this$props.attributes,\n          setAttributes = _this$props.setAttributes,\n          selectOptions = _this$props.selectOptions;\n      var mode = attributes.mode,\n          post_ids = attributes.post_ids,\n          term_ids = attributes.term_ids;\n      var currentValue, ids;\n\n      switch (mode) {\n        case 'specific_posts':\n          ids = post_ids;\n          break;\n\n        case 'specific_terms':\n          ids = term_ids;\n          break;\n      }\n\n      if (ids) {\n        currentValue = Object(lodash__WEBPACK_IMPORTED_MODULE_8__[\"filter\"])(selectOptions[0].options, function (o) {\n          return Object(lodash__WEBPACK_IMPORTED_MODULE_8__[\"includes\"])(ids, o.value);\n        });\n      }\n\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE
 _7__[\"createElement\"])(_shared_versatile_select__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({\n        label: label,\n        value: currentValue,\n        options: selectOptions,\n        isOptionDisabled: this.optionDisabled,\n        formatGroupLabel: function formatGroupLabel(groupData) {\n          return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"span\", {\n            className: 'wordcamp-speakers-select-option-group-label'\n          }, groupData.label);\n        },\n        formatOptionLabel: function formatOptionLabel(optionData) {\n          return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"div\", {\n            className: 'wordcamp-speakers-select-option'\n          }, _this2.constructor.optionImage(optionData), _this2.constructor.optionLabel(optionData));\n        },\n     
    onChange: function onChange(selectedOptions) {\n          var value = Object(lodash__WEBPACK_IMPORTED_MODULE_8__[\"map\"])(selectedOptions, 'value');\n\n          if (!value.length) {\n            setAttributes({\n              mode: '',\n              post_ids: [],\n              term_ids: []\n            });\n          } else {\n            var chosen = selectedOptions[0].type;\n\n            switch (chosen) {\n              case 'post':\n                setAttributes({\n                  mode: 'specific_posts',\n                  post_ids: value\n                });\n                break;\n\n              case 'term':\n                setAttributes({\n                  mode: 'specific_terms',\n                  term_ids: value\n                });\n                break;\n            }\n          }\n        }\n      }, this.props));\n    }\n  }], [{\n    key: \"optionImage\",\n    value: function optionImage(optionData) {\n      var type = optionData.type;
 \n      var image;\n\n      switch (type) {\n        case 'post':\n          image = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(_shared_avatar__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n            className: 'wordcamp-speakers-select-option-avatar',\n            name: optionData.label,\n            size: 24,\n            url: optionData.avatar\n          });\n          break;\n\n        case 'term':\n          image = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"div\", {\n            className: 'wordcamp-speakers-select-option-icon-container'\n          }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(Dashicon, {\n            className: 'wordcamp-speakers-select-option-icon',\n            icon: 'megaphone',\n            size: 16\n          }));\n          break;\n      }\n\n      return image;\n    }\n  }, {\n    key: \"optionLabel\&
 quot;,\n    value: function optionLabel(optionData) {\n      var type = optionData.type;\n      var label;\n\n      switch (type) {\n        case 'post':\n          label = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"span\", {\n            className: 'wordcamp-speakers-select-option-label'\n          }, optionData.label);\n          break;\n\n        case 'term':\n          label = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"span\", {\n            className: 'wordcamp-speakers-select-option-label'\n          }, optionData.label, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__[\"createElement\"])(\"span\", {\n            className: 'wordcamp-speakers-select-option-label-term-count'\n          }, optionData.count));\n          break;\n      }\n\n      return label;\n    }\n  }]);\n\n  return SpeakersSelect;\n}(Component);\n\nvar optionsSelect = function 
 optionsSelect(select, props) {\n  var mode = props.attributes.mode;\n\n  var _select = select('core'),\n      getEntityRecords = _select.getEntityRecords;\n\n  var options = [];\n\n  if (!mode || 'specific_terms' === mode) {\n    var terms = getEntityRecords('taxonomy', 'wcb_speaker_group', {\n      orderby: 'name',\n      order: 'asc',\n      per_page: 100\n    });\n    options.push({\n      label: __('Groups', 'wordcamporg'),\n      options: Object(lodash__WEBPACK_IMPORTED_MODULE_8__[\"map\"])(terms || [], function (term) {\n        return {\n          label: decodeEntities(term.name) || __('(Untitled)', 'wordcamporg'),\n          value: term.id,\n          type: 'term',\n          count: term.count\n        };\n      })\n    });\n  }\n\n  if (!mode || 'specific_posts' === mode) {\n    var posts = getEntityRecords('postType', 'wcb_speaker', {\n      orderby: 'title',\n      order: 'asc',\n      per_page: 100,\n      _embed: true\n    });\n    options.push({\n      label:
  __('Speakers', 'wordcamporg'),\n      options: Object(lodash__WEBPACK_IMPORTED_MODULE_8__[\"map\"])(posts || [], function (post) {\n        return {\n          label: decodeEntities(post.title.rendered.trim()) || __('(Untitled)', 'wordcamporg'),\n          value: post.id,\n          type: 'post',\n          avatar: post['avatar_urls']['24']\n        };\n      })\n    });\n  }\n\n  return {\n    selectOptions: options\n  };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (withSelect(optionsSelect)(SpeakersSelect));\n\n//# sourceURL=webpack:///./assets/src/speakers/speakers-select.js?");
+
+/***/ }),
+
+/***/ "./assets/src/speakers/toolbar.js":
+/*!****************************************!*\
+  !*** ./assets/src/speakers/toolbar.js ***!
+  \****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEB
 PACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherit
 s */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n\n\n\n\n\n\n\n/**\n * WordPress dependencies\n */\nvar Toolbar = wp.components.Toolbar;\nvar BlockControls = wp.editor.BlockControls;\nvar Component = wp.element.Component;\nvar data = window.WordCampBlocks.speakers || {};\n\nvar SpeakersToolbar =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(SpeakersToolbar, _Component);\n\n  function SpeakersToolbar() {\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, SpeakersToolbar);\n\n 
    return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(SpeakersToolbar).apply(this, arguments));\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(SpeakersToolbar, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          attributes = _this$props.attributes,\n          setAttributes = _this$props.setAttributes;\n      var layout = attributes.layout;\n      var options = data.options;\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(BlockControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__[\"createElement\"])(Toolbar, {\n        controls: options.layout.map(function (option) {\n          var icon = \"\".concat(option.value, \"-view\");\n          var isActive = layout === op
 tion.value;\n          return {\n            icon: icon,\n            title: option.label,\n            isActive: isActive,\n            onClick: function onClick() {\n              setAttributes({\n                layout: option.value\n              });\n            }\n          };\n        })\n      }));\n    }\n  }]);\n\n  return SpeakersToolbar;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SpeakersToolbar);\n\n//# sourceURL=webpack:///./assets/src/speakers/toolbar.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/arrayWithHoles.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/createClass.js":
+/*!************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/createClass.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***!
+  \*******************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _defineProperty; });\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/esm/objectSpread.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/esm/objectSpread.js ***!
+  \*****************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _objectSpread; });\n/* harmony import */ var _defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      Object(_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]);\n    });\n  }\n\n  return
  target;\n}\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js ***!
+  \****************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _objectWithoutProperties; });\n/* harmony import */ var _objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = Object(_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue
 ;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
+/*!*********************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
+  \*********************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _objectWithoutPropertiesLoose; });\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/esm/typeof.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/esm/typeof.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _typeof; });\nfunction _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return _typeof2(obj);\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symb
 ol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n    };\n  }\n\n  return _typeof(obj);\n}\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/extends.js":
+/*!********************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/extends.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/extends.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/inherits.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/inherits.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/nonIterableRest.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js":
+/*!*****************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
+  \**************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _typeof = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/slicedToArray.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles */ \"./node_modules/@babel/runtime/helpers/arrayWithHoles.js\");\n\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit */ \"./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\");\n\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest */ \"./node_modules/@babel/runtime/helpers/nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return _typeof2(obj);\n    };\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n    };\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _
 typeof;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/typeof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@emotion/hash/dist/hash.esm.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/@emotion/hash/dist/hash.esm.js ***!
+  \*****************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n  var l = str.length,\n      h = l ^ l,\n      i = 0,\n      k;\n\n  while (l >= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    k ^= k >>> 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n    l -= 4;\n    ++i;\n  }\n\n  switch (l) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xf
 f) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  }\n\n  h ^= h >>> 13;\n  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  h ^= h >>> 15;\n  return (h >>> 0).toString(36);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (murmurhash2_32_gc);\n\n\n//# sourceURL=webpack:///./node_modules/@emotion/hash/dist/hash.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@emotion/memoize/dist/memoize.esm.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/@emotion/memoize/dist/memoize.esm.js ***!
+  \***********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\nfunction memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (memoize);\n\n\n//# sourceURL=webpack:///./node_modules/@emotion/memoize/dist/memoize.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@emotion/stylis/dist/stylis.esm.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/@emotion/stylis/dist/stylis.esm.js ***!
+  \*********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\nfunction stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (
 t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n            
                   }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                
     break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));
 \n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              def
 ault:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n
 \n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n  
           case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 
 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:
 \n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e, m).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e, m).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim
 () + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        ret
 urn '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !=
 = a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) 
 : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n 
        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c)
  {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        switch (d.constructor) {\n          case Array:\n            for (var c = 0, e = d.length; c < e; ++c) {\n              T(d[c]);\n            }\n\n            break;\n\n          case Function:\n            S[A++] = d;\n            break;\n\n          case Boolean:\n            Y = !!d | 0;\n        }\n\n    }\n\n    return T;\n  }\n\n  
 function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /
 ([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (stylis_min);\n\n\n//# sourceURL=webpack:///./node_modules/@emotion/stylis/dist/stylis.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@emotion/unitless/dist/unitless.esm.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/@emotion/unitless/dist/unitless.esm.js ***!
+  \*************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\nvar unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (unitlessKeys);\n\n\n//# sourc
 eURL=webpack:///./node_modules/@emotion/unitless/dist/unitless.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/element/build-module/index.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@wordpress/element/build-module/index.js ***!
+  \***************************************************************/
+/*! exports provided: renderToString, RawHTML, Children, cloneElement, Component, createContext, createElement, createRef, forwardRef, Fragment, isValidElement, StrictMode, concatChildren, switchChildrenNodeName, createPortal, findDOMNode, render, unmountComponentAtNode, isEmptyElement */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./react */ \"./node_modules/@wordpress/element/build-module/react.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Children\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"Children\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cloneElement\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"cloneElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"createContext\"]; });\n\n/* harmony
  reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createElement\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createRef\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"createRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forwardRef\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValidElement\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"isValidElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__
 webpack_exports__, \"StrictMode\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"StrictMode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"concatChildren\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"concatChildren\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchChildrenNodeName\", function() { return _react__WEBPACK_IMPORTED_MODULE_0__[\"switchChildrenNodeName\"]; });\n\n/* harmony import */ var _react_platform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./react-platform */ \"./node_modules/@wordpress/element/build-module/react-platform.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createPortal\", function() { return _react_platform__WEBPACK_IMPORTED_MODULE_1__[\"createPortal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(
 __webpack_exports__, \"findDOMNode\", function() { return _react_platform__WEBPACK_IMPORTED_MODULE_1__[\"findDOMNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _react_platform__WEBPACK_IMPORTED_MODULE_1__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unmountComponentAtNode\", function() { return _react_platform__WEBPACK_IMPORTED_MODULE_1__[\"unmountComponentAtNode\"]; });\n\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./node_modules/@wordpress/element/build-module/utils.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEmptyElement\", function() { return _utils__WEBPACK_IMPORTED_MODULE_2__[\"isEmptyElement\"]; });\n\n/* harmony import */ var _serialize__WEBPACK_IMPORTED_MODULE_3__ = __
 webpack_require__(/*! ./serialize */ \"./node_modules/@wordpress/element/build-module/serialize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToString\", function() { return _serialize__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _raw_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./raw-html */ \"./node_modules/@wordpress/element/build-module/raw-html.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RawHTML\", function() { return _raw_html__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/@wordpress/element/build-module/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/element/build-module/raw-html.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/@wordpress/element/build-module/raw-html.js ***!
+  \******************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return RawHTML; });\n/* harmony import */ var _babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./react */ \"./node_modules/@wordpress/element/build-module/react.js\");\n\n\n\n/**\n * External dependencies\n */\n\n/**\n * Component used as equivalent of Fragment with unescaped HTML, in cases where\n
  * it is desirable to render dangerous HTML without needing a wrapper element.\n * To preserve additional props, a `div` wrapper _will_ be created if any props\n * aside from `children` are passed.\n *\n * @param {string} props.children HTML to render.\n *\n * @return {WPElement} Dangerously-rendering element.\n */\n\nfunction RawHTML(_ref) {\n  var children = _ref.children,\n      props = Object(_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, [\"children\"]);\n\n  // The DIV wrapper will be stripped by serializer, unless there are\n  // non-children props present.\n  return Object(_react__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])('div', Object(_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n    dangerouslySetInnerHTML: {\n      __html: children\n    }\n  }, props));\n}\n//# sourceMappingURL=raw-html.js.map\n\n//# sourceURL=webpack:///./node_modules
 /@wordpress/element/build-module/raw-html.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/element/build-module/react-platform.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/@wordpress/element/build-module/react-platform.js ***!
+  \************************************************************************/
+/*! exports provided: createPortal, findDOMNode, render, unmountComponentAtNode */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createPortal\", function() { return react_dom__WEBPACK_IMPORTED_MODULE_0__[\"createPortal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDOMNode\", function() { return react_dom__WEBPACK_IMPORTED_MODULE_0__[\"findDOMNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return react_dom__WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unmoun
 tComponentAtNode\", function() { return react_dom__WEBPACK_IMPORTED_MODULE_0__[\"unmountComponentAtNode\"]; });\n\n/**\n * External dependencies\n */\n\n/**\n * Creates a portal into which a component can be rendered.\n *\n * @see https://github.com/facebook/react/issues/10309#issuecomment-318433235\n *\n * @param {Component} component Component\n * @param {Element}   target    DOM node into which element should be rendered\n */\n\n\n/**\n * Finds the dom node of a React component\n *\n * @param {Component} component component's instance\n * @param {Element}   target    DOM node into which element should be rendered\n */\n\n\n/**\n * Renders a given element into the target DOM node.\n *\n * @param {WPElement} element Element to render\n * @param {Element}   target  DOM node into which element should be rendered\n */\n\n\n/**\n * Removes any mounted element from the target DOM node.\n *\n * @param {Element} target DOM node in which element is to be removed\n */\n\n\n//
 # sourceMappingURL=react-platform.js.map\n\n//# sourceURL=webpack:///./node_modules/@wordpress/element/build-module/react-platform.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/element/build-module/react.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@wordpress/element/build-module/react.js ***!
+  \***************************************************************/
+/*! exports provided: Children, cloneElement, Component, createContext, createElement, createRef, forwardRef, Fragment, isValidElement, StrictMode, concatChildren, switchChildrenNodeName */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"concatChildren\", function() { return concatChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchChildrenNodeName\", function() { return switchChildrenNodeName; });\n/* harmony import */ var _babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmo
 ny import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Children\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"Children\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cloneElement\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"cloneElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"Component\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"createContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createElement\", func
 tion() { return react__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createRef\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"createRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forwardRef\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"forwardRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"Fragment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValidElement\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\"isValidElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StrictMode\", function() { return react__WEBPACK_IMPORTED_MODULE_2__[\
 "StrictMode\"]; });\n\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n/**\n * External dependencies\n */\n\n\n\n/**\n * Creates a copy of an element with extended props.\n *\n * @param {WPElement} element Element\n * @param {?Object}   props   Props to apply to cloned element\n *\n * @return {WPElement} Cloned element.\n */\n\n\n/**\n * A base class to create WordPress Components (Refs, state and lifecycle hooks)\n */\n\n\n/**\n * Creates a context object containing two components: a provider and consumer.\n *\n * @param {Object} defaultValue A default data stored in the context.\n *\n * @return {Object} Context object.\n */\n\n\n/**\n * Returns a new element of given type. Type can be either a string tag name or\n * another function which itself retur
 ns an element.\n *\n * @param {?(string|Function)} type     Tag name or element creator\n * @param {Object}             props    Element properties, either attribute\n *                                       set to apply to DOM node or values to\n *                                       pass through to element creator\n * @param {...WPElement}       children Descendant elements\n *\n * @return {WPElement} Element.\n */\n\n\n/**\n * Returns an object tracking a reference to a rendered element via its\n * `current` property as either a DOMElement or Element, dependent upon the\n * type of element rendered with the ref attribute.\n *\n * @return {Object} Ref object.\n */\n\n\n/**\n * Component enhancer used to enable passing a ref to its wrapped component.\n * Pass a function argument which receives `props` and `ref` as its arguments,\n * returning an element using the forwarded ref. The return value is a new\n * component which forwards its ref.\n *\n * @param {Function} forwarder Fun
 ction passed `props` and `ref`, expected to\n *                             return an element.\n *\n * @return {WPComponent} Enhanced component.\n */\n\n\n/**\n * A component which renders its children without any wrapping element.\n */\n\n\n/**\n * Checks if an object is a valid WPElement\n *\n * @param {Object} objectToCheck The object to be checked.\n *\n * @return {boolean} true if objectToTest is a valid WPElement and false otherwise.\n */\n\n\n\n/**\n * Concatenate two or more React children objects.\n *\n * @param {...?Object} childrenArguments Array of children arguments (array of arrays/strings/objects) to concatenate.\n *\n * @return {Array} The concatenated value.\n */\n\nfunction concatChildren() {\n  for (var _len = arguments.length, childrenArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n    childrenArguments[_key] = arguments[_key];\n  }\n\n  return childrenArguments.reduce(function (memo, children, i) {\n    react__WEBPACK_IMPORTED_MODULE_2__[\&quot
 ;Children\"].forEach(children, function (child, j) {\n      if (child && 'string' !== typeof child) {\n        child = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"cloneElement\"])(child, {\n          key: [i, j].join()\n        });\n      }\n\n      memo.push(child);\n    });\n    return memo;\n  }, []);\n}\n/**\n * Switches the nodeName of all the elements in the children object.\n *\n * @param {?Object} children Children object.\n * @param {string}  nodeName Node name.\n *\n * @return {?Object} The updated children object.\n */\n\nfunction switchChildrenNodeName(children, nodeName) {\n  return children && react__WEBPACK_IMPORTED_MODULE_2__[\"Children\"].map(children, function (elt, index) {\n    if (Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(elt)) {\n      return Object(react__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(nodeName, {\n        key: index\n      }, elt);\n    }\n\n    var _elt$props = elt.
 props,\n        childrenProp = _elt$props.children,\n        props = Object(_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_elt$props, [\"children\"]);\n\n    return Object(react__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(nodeName, Object(_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n      key: index\n    }, props), childrenProp);\n  });\n}\n//# sourceMappingURL=react.js.map\n\n//# sourceURL=webpack:///./node_modules/@wordpress/element/build-module/react.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/element/build-module/serialize.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/@wordpress/element/build-module/serialize.js ***!
+  \*******************************************************************/
+/*! exports provided: hasPrefix, renderElement, renderNativeComponent, renderComponent, renderAttributes, renderStyle, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasPrefix\", function() { return hasPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderElement\", function() { return renderElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderNativeComponent\", function() { return renderNativeComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderComponent\", function() { return renderComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderAttributes\", function() { return renderAttributes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderStyle\", function() { return renderStyle; });\n/* harmony import */ var _babel_runtime_helpers_esm_objectSpread__WEB
 PACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/typeof */ \"./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _wordpress_escape_html__WEBPACK_IMPORTED_MODUL
 E_4__ = __webpack_require__(/*! @wordpress/escape-html */ \"./node_modules/@wordpress/escape-html/build-module/index.js\");\n/* harmony import */ var _react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./react */ \"./node_modules/@wordpress/element/build-module/react.js\");\n/* harmony import */ var _raw_html__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./raw-html */ \"./node_modules/@wordpress/element/build-module/raw-html.js\");\n\n\n\n\n/**\n * Parts of this source were derived and modified from fast-react-render,\n * released under the MIT license.\n *\n * https://github.com/alt-j/fast-react-render\n *\n * Copyright (c) 2016 Andrey Morozov\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, pu
 blish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n/**\n * Internal dependencies\n */\n\n\n\n\nvar _createContext = Object(_react__WEBPACK_
 IMPORTED_MODULE_5__[\"createContext\"])(),\n    Provider = _createContext.Provider,\n    Consumer = _createContext.Consumer;\n/**\n * Valid attribute types.\n *\n * @type {Set}\n */\n\n\nvar ATTRIBUTES_TYPES = new Set(['string', 'boolean', 'number']);\n/**\n * Element tags which can be self-closing.\n *\n * @type {Set}\n */\n\nvar SELF_CLOSING_TAGS = new Set(['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']);\n/**\n * Boolean attributes are attributes whose presence as being assigned is\n * meaningful, even if only empty.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( [ ...document.querySelectorAll( '#attributes-1 > tbody > tr' ) ]\n *     .filter( ( tr ) => tr.lastChild.textContent.indexOf( 'Boolean attribute' ) !== -1 )\n *    
  .reduce( ( result, tr ) => Object.assign( result, {\n *         [ tr.firstChild.textContent.trim() ]: true\n *     } ), {} ) ).sort();\n *\n * @type {Set}\n */\n\nvar BOOLEAN_ATTRIBUTES = new Set(['allowfullscreen', 'allowpaymentrequest', 'allowusermedia', 'async', 'autofocus', 'autoplay', 'checked', 'controls', 'default', 'defer', 'disabled', 'formnovalidate', 'hidden', 'ismap', 'itemscope', 'loop', 'multiple', 'muted', 'nomodule', 'novalidate', 'open', 'playsinline', 'readonly', 'required', 'reversed', 'selected', 'typemustmatch']);\n/**\n * Enumerated attributes are attributes which must be of a specific value form.\n * Like boolean attributes, these are meaningful if specified, even if not of a\n * valid enumerated value.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( [ ...document.querySelectorAll( '#attributes-1 > 
 tbody > tr' ) ]\n *     .filter( ( tr ) => /^(\"(.+?)\";?\\s*)+/.test( tr.lastChild.textContent.trim() ) )\n *     .reduce( ( result, tr ) => Object.assign( result, {\n *         [ tr.firstChild.textContent.trim() ]: true\n *     } ), {} ) ).sort();\n *\n * Some notable omissions:\n *\n *  - `alt`: https://blog.whatwg.org/omit-alt\n *\n * @type {Set}\n */\n\nvar ENUMERATED_ATTRIBUTES = new Set(['autocapitalize', 'autocomplete', 'charset', 'contenteditable', 'crossorigin', 'decoding', 'dir', 'draggable', 'enctype', 'formenctype', 'formmethod', 'http-equiv', 'inputmode', 'kind', 'method', 'preload', 'scope', 'shape', 'spellcheck', 'translate', 'type', 'wrap']);\n/**\n * Set of CSS style properties which support assignment of unitless numbers.\n * Used in rendering of style properties, where `px` unit is assumed unless\n * property is included in this set or value is zero.\n *\n * Generated via:\n *\n * Object.entries( document.createElement( 'div' ).style )\n *     
 .filter( ( [ key ] ) => (\n *         ! /^(webkit|ms|moz)/.test( key ) &&\n *         ( e.style[ key ] = 10 ) &&\n *         e.style[ key ] === '10'\n *     ) )\n *     .map( ( [ key ] ) => key )\n *     .sort();\n *\n * @type {Set}\n */\n\nvar CSS_PROPERTIES_SUPPORTS_UNITLESS = new Set(['animation', 'animationIterationCount', 'baselineShift', 'borderImageOutset', 'borderImageSlice', 'borderImageWidth', 'columnCount', 'cx', 'cy', 'fillOpacity', 'flexGrow', 'flexShrink', 'floodOpacity', 'fontWeight', 'gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart', 'lineHeight', 'opacity', 'order', 'orphans', 'r', 'rx', 'ry', 'shapeImageThreshold', 'stopOpacity', 'strokeDasharray', 'strokeDashoffset', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'tabSize', 'widows', 'x', 'y', 'zIndex', 'zoom']);\n/**\n * Returns true if the specified string is prefixed by one of an array of\n * possible prefixes.\n *\n * @param {string}   string   String to check.\n * @pa
 ram {string[]} prefixes Possible prefixes.\n *\n * @return {boolean} Whether string has prefix.\n */\n\nfunction hasPrefix(string, prefixes) {\n  return prefixes.some(function (prefix) {\n    return string.indexOf(prefix) === 0;\n  });\n}\n/**\n * Returns true if the given prop name should be ignored in attributes\n * serialization, or false otherwise.\n *\n * @param {string} attribute Attribute to check.\n *\n * @return {boolean} Whether attribute should be ignored.\n */\n\nfunction isInternalAttribute(attribute) {\n  return 'key' === attribute || 'children' === attribute;\n}\n/**\n * Returns the normal form of the element's attribute value for HTML.\n *\n * @param {string} attribute Attribute name.\n * @param {*}      value     Non-normalized attribute value.\n *\n * @return {string} Normalized attribute value.\n */\n\n\nfunction getNormalAttributeValue(attribute, value) {\n  switch (attribute) {\n    case 'style':\n      return renderStyle(value);\n  }\n\n  return value;\n}\n/**\
 n * Returns the normal form of the element's attribute name for HTML.\n *\n * @param {string} attribute Non-normalized attribute name.\n *\n * @return {string} Normalized attribute name.\n */\n\n\nfunction getNormalAttributeName(attribute) {\n  switch (attribute) {\n    case 'htmlFor':\n      return 'for';\n\n    case 'className':\n      return 'class';\n  }\n\n  return attribute.toLowerCase();\n}\n/**\n * Returns the normal form of the style property name for HTML.\n *\n * - Converts property names to kebab-case, e.g. 'backgroundColor' → 'background-color'\n * - Leaves custom attributes alone, e.g. '--myBackgroundColor' → '--myBackgroundColor'\n * - Converts vendor-prefixed property names to -kebab-case, e.g. 'MozTransform' → '-moz-transform'\n *\n * @param {string} property Property name.\n *\n * @return {string} Normalized property name.\n */\n\n\nfunction getNormalStylePropertyName(property) {\n  if (Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"startsWith\"])(pro
 perty, '--')) {\n    return property;\n  }\n\n  if (hasPrefix(property, ['ms', 'O', 'Moz', 'Webkit'])) {\n    return '-' + Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"kebabCase\"])(property);\n  }\n\n  return Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"kebabCase\"])(property);\n}\n/**\n * Returns the normal form of the style property value for HTML. Appends a\n * default pixel unit if numeric, not a unitless property, and not zero.\n *\n * @param {string} property Property name.\n * @param {*}      value    Non-normalized property value.\n *\n * @return {*} Normalized property value.\n */\n\n\nfunction getNormalStylePropertyValue(property, value) {\n  if (typeof value === 'number' && 0 !== value && !CSS_PROPERTIES_SUPPORTS_UNITLESS.has(property)) {\n    return value + 'px';\n  }\n\n  return value;\n}\n/**\n * Serializes a React element to string.\n *\n * @param {WPElement} element       Element to serialize.\n * @param {?Object}   context       
 Context object.\n * @param {?Object}   legacyContext Legacy context object.\n *\n * @return {string} Serialized element.\n */\n\n\nfunction renderElement(element, context) {\n  var legacyContext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (null === element || undefined === element || false === element) {\n    return '';\n  }\n\n  if (Array.isArray(element)) {\n    return renderChildren(element, context, legacyContext);\n  }\n\n  switch (Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element)) {\n    case 'string':\n      return Object(_wordpress_escape_html__WEBPACK_IMPORTED_MODULE_4__[\"escapeHTML\"])(element);\n\n    case 'number':\n      return element.toString();\n  }\n\n  var type = element.type,\n      props = element.props;\n\n  switch (type) {\n    case _react__WEBPACK_IMPORTED_MODULE_5__[\"StrictMode\"]:\n    case _react__WEBPACK_IMPORTED_MODULE_5__[\"Fra
 gment\"]:\n      return renderChildren(props.children, context, legacyContext);\n\n    case _raw_html__WEBPACK_IMPORTED_MODULE_6__[\"default\"]:\n      var children = props.children,\n          wrapperProps = Object(_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, [\"children\"]);\n\n      return renderNativeComponent(Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isEmpty\"])(wrapperProps) ? null : 'div', Object(_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, wrapperProps, {\n        dangerouslySetInnerHTML: {\n          __html: children\n        }\n      }), context, legacyContext);\n  }\n\n  switch (Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type)) {\n    case 'string':\n      return renderNativeComponent(type, props, context, legacyContext);\n\n    case 'function':\n      if (type.prototy
 pe && typeof type.prototype.render === 'function') {\n        return renderComponent(type, props, context, legacyContext);\n      }\n\n      return renderElement(type(props, legacyContext), context, legacyContext);\n  }\n\n  switch (type && type.$$typeof) {\n    case Provider.$$typeof:\n      return renderChildren(props.children, props.value, legacyContext);\n\n    case Consumer.$$typeof:\n      return renderElement(props.children(context || type._currentValue), context, legacyContext);\n  }\n\n  return '';\n}\n/**\n * Serializes a native component type to string.\n *\n * @param {?string} type          Native component type to serialize, or null if\n *                                rendering as fragment of children content.\n * @param {Object}  props         Props object.\n * @param {?Object} context       Context object.\n * @param {?Object} legacyContext Legacy context object.\n *\n * @return {string} Serialized element.\n */\n\nfunction renderNativeComponent(type
 , props, context) {\n  var legacyContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var content = '';\n\n  if (type === 'textarea' && props.hasOwnProperty('value')) {\n    // Textarea children can be assigned as value prop. If it is, render in\n    // place of children. Ensure to omit so it is not assigned as attribute\n    // as well.\n    content = renderChildren(props.value, context, legacyContext);\n    props = Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"omit\"])(props, 'value');\n  } else if (props.dangerouslySetInnerHTML && typeof props.dangerouslySetInnerHTML.__html === 'string') {\n    // Dangerous content is left unescaped.\n    content = props.dangerouslySetInnerHTML.__html;\n  } else if (typeof props.children !== 'undefined') {\n    content = renderChildren(props.children, context, legacyContext);\n  }\n\n  if (!type) {\n    return content;\n  }\n\n  var attributes = renderAttributes(props);\n\n  if (
 SELF_CLOSING_TAGS.has(type)) {\n    return '<' + type + attributes + '/>';\n  }\n\n  return '<' + type + attributes + '>' + content + '</' + type + '>';\n}\n/**\n * Serializes a non-native component type to string.\n *\n * @param {Function} Component     Component type to serialize.\n * @param {Object}   props         Props object.\n * @param {?Object}  context       Context object.\n * @param {?Object}  legacyContext Legacy context object.\n *\n * @return {string} Serialized element\n */\n\nfunction renderComponent(Component, props, context) {\n  var legacyContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var instance = new Component(props, legacyContext);\n\n  if (typeof instance.getChildContext === 'function') {\n    Object.assign(legacyContext, instance.getChildContext());\n  }\n\n  var html = renderElement(instance.render(), context, legacyContext);\n  return html;\n}\n/**\n * Serializes an array of children to str
 ing.\n *\n * @param {Array}   children      Children to serialize.\n * @param {?Object} context       Context object.\n * @param {?Object} legacyContext Legacy context object.\n *\n * @return {string} Serialized children.\n */\n\nfunction renderChildren(children, context) {\n  var legacyContext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var result = '';\n  children = Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"castArray\"])(children);\n\n  for (var i = 0; i < children.length; i++) {\n    var child = children[i];\n    result += renderElement(child, context, legacyContext);\n  }\n\n  return result;\n}\n/**\n * Renders a props object as a string of HTML attributes.\n *\n * @param {Object} props Props object.\n *\n * @return {string} Attributes string.\n */\n\n\nfunction renderAttributes(props) {\n  var result = '';\n\n  for (var key in props) {\n    var attribute = getNormalAttributeName(key);\n\n    if (!Object(_wordpress_esca
 pe_html__WEBPACK_IMPORTED_MODULE_4__[\"isValidAttributeName\"])(attribute)) {\n      continue;\n    }\n\n    var value = getNormalAttributeValue(key, props[key]); // If value is not of serializeable type, skip.\n\n    if (!ATTRIBUTES_TYPES.has(Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value))) {\n      continue;\n    } // Don't render internal attribute names.\n\n\n    if (isInternalAttribute(key)) {\n      continue;\n    }\n\n    var isBooleanAttribute = BOOLEAN_ATTRIBUTES.has(attribute); // Boolean attribute should be omitted outright if its value is false.\n\n    if (isBooleanAttribute && value === false) {\n      continue;\n    }\n\n    var isMeaningfulAttribute = isBooleanAttribute || hasPrefix(key, ['data-', 'aria-']) || ENUMERATED_ATTRIBUTES.has(attribute); // Only write boolean value as attribute if meaningful.\n\n    if (typeof value === 'boolean' && !isMeaningfulAttribute) {\n      continue;\n   
  }\n\n    result += ' ' + attribute; // Boolean attributes should write attribute name, but without value.\n    // Mere presence of attribute name is effective truthiness.\n\n    if (isBooleanAttribute) {\n      continue;\n    }\n\n    if (typeof value === 'string') {\n      value = Object(_wordpress_escape_html__WEBPACK_IMPORTED_MODULE_4__[\"escapeAttribute\"])(value);\n    }\n\n    result += '=\"' + value + '\"';\n  }\n\n  return result;\n}\n/**\n * Renders a style object as a string attribute value.\n *\n * @param {Object} style Style object.\n *\n * @return {string} Style attribute value.\n */\n\nfunction renderStyle(style) {\n  // Only generate from object, e.g. tolerate string value.\n  if (!Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style)) {\n    return style;\n  }\n\n  var result;\n\n  for (var property in style) {\n    var value = style[property];\n\n    if (null === value || undefined === value) {\n      continue;\n    }\n
 \n    if (result) {\n      result += ';';\n    } else {\n      result = '';\n    }\n\n    var normalName = getNormalStylePropertyName(property);\n    var normalValue = getNormalStylePropertyValue(property, value);\n    result += normalName + ':' + normalValue;\n  }\n\n  return result;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (renderElement);\n//# sourceMappingURL=serialize.js.map\n\n//# sourceURL=webpack:///./node_modules/@wordpress/element/build-module/serialize.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/element/build-module/utils.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@wordpress/element/build-module/utils.js ***!
+  \***************************************************************/
+/*! exports provided: isEmptyElement */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmptyElement\", function() { return isEmptyElement; });\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ \"lodash\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * External dependencies\n */\n\n/**\n * Checks if the provided WP element is empty.\n *\n * @param {*} element WP element to check.\n * @return {boolean} True when an element is considered empty.\n */\n\nvar isEmptyElement = function isEmptyElement(element) {\n  if (Object(lodash__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(element)) {\n    return false;\n  }\n\n  if (Object(lodash__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(element) || Object(lodash__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"
 ])(element)) {\n    return !element.length;\n  }\n\n  return !element;\n};\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack:///./node_modules/@wordpress/element/build-module/utils.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@wordpress/escape-html/build-module/index.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/@wordpress/escape-html/build-module/index.js ***!
+  \*******************************************************************/
+/*! exports provided: escapeAmpersand, escapeQuotationMark, escapeLessThan, escapeAttribute, escapeHTML, isValidAttributeName */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeAmpersand\", function() { return escapeAmpersand; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeQuotationMark\", function() { return escapeQuotationMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeLessThan\", function() { return escapeLessThan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeAttribute\", function() { return escapeAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeHTML\", function() { return escapeHTML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidAttributeName\", function() { return isValidAttributeName; });\n/**\n * Regular expression matching invalid attribute
  names.\n *\n * \"Attribute names must consist of one or more characters other than controls,\n * U+0020 SPACE, U+0022 (\"), U+0027 ('), U+003E (>), U+002F (/), U+003D (=),\n * and noncharacters.\"\n *\n * @link https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n *\n * @type {RegExp}\n */\nvar REGEXP_INVALID_ATTRIBUTE_NAME = /[\\u007F-\\u009F \"'>/=\"\\uFDD0-\\uFDEF]/;\n/**\n * Returns a string with ampersands escaped. Note that this is an imperfect\n * implementation, where only ampersands which do not appear as a pattern of\n * named, decimal, or hexadecimal character references are escaped. Invalid\n * named references (i.e. ambiguous ampersand) are are still permitted.\n *\n * @link https://w3c.github.io/html/syntax.html#character-references\n * @link https://w3c.github.io/html/syntax.html#ambiguous-ampersand\n * @link https://w3c.github.io/html/syntax.html#named-character-references\n *\n * @param {string} value Original string.\n *\
 n * @return {string} Escaped string.\n */\n\nfunction escapeAmpersand(value) {\n  return value.replace(/&(?!([a-z0-9]+|#[0-9]+|#x[a-f0-9]+);)/gi, '&amp;');\n}\n/**\n * Returns a string with quotation marks replaced.\n *\n * @param {string} value Original string.\n *\n * @return {string} Escaped string.\n */\n\nfunction escapeQuotationMark(value) {\n  return value.replace(/\"/g, '&quot;');\n}\n/**\n * Returns a string with less-than sign replaced.\n *\n * @param {string} value Original string.\n *\n * @return {string} Escaped string.\n */\n\nfunction escapeLessThan(value) {\n  return value.replace(/</g, '&lt;');\n}\n/**\n * Returns an escaped attribute value.\n *\n * @link https://w3c.github.io/html/syntax.html#elements-attributes\n *\n * \"[...] the text cannot contain an ambiguous ampersand [...] must not contain\n * any literal U+0022 QUOTATION MARK characters (\")\"\n *\n * @param {string} value Attribute value.\n *\n * @return {string} Esca
 ped attribute value.\n */\n\nfunction escapeAttribute(value) {\n  return escapeQuotationMark(escapeAmpersand(value));\n}\n/**\n * Returns an escaped HTML element value.\n *\n * @link https://w3c.github.io/html/syntax.html#writing-html-documents-elements\n *\n * \"the text must not contain the character U+003C LESS-THAN SIGN (<) or an\n * ambiguous ampersand.\"\n *\n * @param {string} value Element value.\n *\n * @return {string} Escaped HTML element value.\n */\n\nfunction escapeHTML(value) {\n  return escapeLessThan(escapeAmpersand(value));\n}\n/**\n * Returns true if the given attribute name is valid, or false otherwise.\n *\n * @param {string} name Attribute name to test.\n *\n * @return {boolean} Whether attribute is valid.\n */\n\nfunction isValidAttributeName(name) {\n  return !REGEXP_INVALID_ATTRIBUTE_NAME.test(name);\n}\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/@wordpress/escape-html/build-module/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/classnames/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/classnames/index.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join('
  ');\n\t}\n\n\tif ( true && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n//# sourceURL=webpack:///./node_modules/classnames/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/create-emotion/dist/index.esm.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/create-emotion/dist/index.esm.js ***!
+  \*******************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/memoize */ \"./node_modules/@emotion/memoize/dist/memoize.esm.js\");\n/* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @emotion/unitless */ \"./node_modules/@emotion/unitless/dist/unitless.esm.js\");\n/* harmony import */ var _emotion_hash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @emotion/hash */ \"./node_modules/@emotion/hash/dist/hash.esm.js\");\n/* harmony import */ var _emotion_stylis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/stylis */ \"./node_modules/@emotion/stylis/dist/stylis.esm.js\");\n/* harmony import */ var stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! stylis-rule-sheet */ \"./node_modules/stylis-rule-sheet/index.js\");\n/* harmony import */ var stylis
 _rule_sheet__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar processStyleName = Object(_emotion_memoize__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function (styleName) {\n  return styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\nvar processStyleValue = function processStyleValue(key, value) {\n  if (value == null || typeof value === 'boolean') {\n    return '';\n  }\n\n  if (_emotion_unitless__WEBPACK_IMPORTED_MODULE_1__[\"default\"][key] !== 1 && key.charCodeAt(1) !== 45 && // custom properties\n  !isNaN(value) && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (true) {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'uns
 et'];\n  var oldProcessStyleValue = processStyleValue;\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    return oldProcessStyleValue(key, value);\n  };\n}\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'function':\n        if (true)
  {\n          console.error('Passing functions to cx is deprecated and will be removed in the next major version of Emotion.\\n' + 'Please call the function before passing it to cx.');\n        }\n\n        toAdd = classnames([arg()]);\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\nvar isBrowser = typeof document !== 'undefined';\n\n/*\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rul
 es\n- uses `insertRule` for appending in production for *much* faster performance\n- 'polyfills' on server side\n\n// usage\n\nimport StyleSheet from 'glamor/lib/sheet'\nlet styleSheet = new StyleSheet()\n\nstyleSheet.inject()\n- 'injects' the stylesheet into the page (or into memory if on server)\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction makeStyleTag(opts) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', opts.key || '');\n\n  if (opts.nonce !== undefined) {\n    ta
 g.setAttribute('nonce', opts.nonce);\n  }\n\n  tag.appendChild(document.createTextNode('')) // $FlowFixMe\n  ;\n  (opts.container !== undefined ? opts.container : document.head).appendChild(tag);\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = \"development\" === 'production'; // the big drawback here is that the css won't be editable in devtools\n\n    this.tags = [];\n    this.ctr = 0;\n    this.opts = options;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.inject = function inject() {\n    if (this.injected) {\n      throw new Error('already injected!');\n    }\n\n    this.tags[0] = makeStyleTag(this.opts);\n    this.injected = true;\n  };\n\n  _proto.speedy = function speedy(bool) {\n    if (this.ctr !== 0) {\n      // cannot change speedy mode after inserting any rule to sheet. Either call speedy(${bool}) earlier in your app, or call flush() before speedy(${bool})\n      throw new Err
 or(\"cannot change speedy now\");\n    }\n\n    this.isSpeedy = !!bool;\n  };\n\n  _proto.insert = function insert(rule, sourceMap) {\n    // this is the ultrafast version, works across browsers\n    if (this.isSpeedy) {\n      var tag = this.tags[this.tags.length - 1];\n      var sheet = sheetForTag(tag);\n\n      try {\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (true) {\n          console.warn('illegal rule', rule); // eslint-disable-line no-console\n        }\n      }\n    } else {\n      var _tag = makeStyleTag(this.opts);\n\n      this.tags.push(_tag);\n\n      _tag.appendChild(document.createTextNode(rule + (sourceMap || '')));\n    }\n\n    this.ctr++;\n\n    if (this.ctr % 65000 === 0) {\n      this.tags.push(makeStyleTag(this.opts));\n    }\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\
 n    this.ctr = 0; // todo - look for remnants in document.styleSheets\n\n    this.injected = false;\n  };\n\n  return StyleSheet;\n}();\n\nfunction createEmotion(context, options) {\n  if (context.__SECRET_EMOTION__ !== undefined) {\n    return context.__SECRET_EMOTION__;\n  }\n\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n\n  if (true) {\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var current;\n\n  function insertRule(rule) {\n    current += rule;\n\n    if (isBrowser) {\n      sheet.insert(rule, currentSourceMap);\n    }\n  }\n\n  var insertionPlugin = stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_4___default()(insertRule);\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var caches = {\n    regi
 stered: {},\n    inserted: {},\n    nonce: options.nonce,\n    key: key\n  };\n  var sheet = new StyleSheet(options);\n\n  if (isBrowser) {\n    // 🚀\n    sheet.inject();\n  }\n\n  var stylis = new _emotion_stylis__WEBPACK_IMPORTED_MODULE_3__[\"default\"](stylisOptions);\n  stylis.use(options.stylisPlugins)(insertionPlugin);\n  var currentSourceMap = '';\n\n  function handleInterpolation(interpolation, couldBeSelectorInterpolation) {\n    if (interpolation == null) {\n      return '';\n    }\n\n    switch (typeof interpolation) {\n      case 'boolean':\n        return '';\n\n      case 'function':\n        if (interpolation.__emotion_styles !== undefined) {\n          var selector = interpolation.toString();\n\n          if (selector === 'NO_COMPONENT_SELECTOR' && \"development\" !== 'production') {\n            throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n          }\n\n          return selector;\
 n        }\n\n        if (this === undefined && \"development\" !== 'production') {\n          console.error('Interpolating functions in css calls is deprecated and will be removed in the next major version of Emotion.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        return handleInterpolation.call(this, this === undefined ? interpolation() : // $FlowFixMe\n        interpolation(this.mergedProps, this.context), couldBeSelectorInterpolation);\n\n      case 'object':\n        return createStringFromObject.call(this, interpolation);\n\n      default:\n        var cached = caches.registered[interpolation];\n        return couldBeSelectorInterpolation === false &&am
 p; cached !== undefined ? cached : interpolation;\n    }\n  }\n\n  var objectToStringCache = new WeakMap();\n\n  function createStringFromObject(obj) {\n    if (objectToStringCache.has(obj)) {\n      // $FlowFixMe\n      return objectToStringCache.get(obj);\n    }\n\n    var string = '';\n\n    if (Array.isArray(obj)) {\n      obj.forEach(function (interpolation) {\n        string += handleInterpolation.call(this, interpolation, false);\n      }, this);\n    } else {\n      Object.keys(obj).forEach(function (key) {\n        if (typeof obj[key] !== 'object') {\n          if (caches.registered[obj[key]] !== undefined) {\n            string += key + \"{\" + caches.registered[obj[key]] + \"}\";\n          } else {\n            string += processStyleName(key) + \":\" + processStyleValue(key, obj[key]) + \";\";\n          }\n        } else {\n          if (key === 'NO_COMPONENT_SELECTOR' && \"development\" !== 'production') {\n    
         throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n          }\n\n          if (Array.isArray(obj[key]) && typeof obj[key][0] === 'string' && caches.registered[obj[key][0]] === undefined) {\n            obj[key].forEach(function (value) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value) + \";\";\n            });\n          } else {\n            string += key + \"{\" + handleInterpolation.call(this, obj[key], false) + \"}\";\n          }\n        }\n      }, this);\n    }\n\n    objectToStringCache.set(obj, string);\n    return string;\n  }\n\n  var name;\n  var stylesWithLabel;\n  var labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\n\n  var createClassName = function createClassName(styles, identifierName) {\n    return Object(_emotion_hash__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(styles + identifierName) + identifierName
 ;\n  };\n\n  if (true) {\n    var oldCreateClassName = createClassName;\n    var sourceMappingUrlPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n\n    createClassName = function createClassName(styles, identifierName) {\n      return oldCreateClassName(styles.replace(sourceMappingUrlPattern, function (sourceMap) {\n        currentSourceMap = sourceMap;\n        return '';\n      }), identifierName);\n    };\n  }\n\n  var createStyles = function createStyles(strings) {\n    var stringMode = true;\n    var styles = '';\n    var identifierName = '';\n\n    if (strings == null || strings.raw === undefined) {\n      stringMode = false;\n      styles += handleInterpolation.call(this, strings, false);\n    } else {\n      styles += strings[0];\n    }\n\n    for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      interpolations[_key - 1] = arguments[_key];\n    }\n\n    interpolatio
 ns.forEach(function (interpolation, i) {\n      styles += handleInterpolation.call(this, interpolation, styles.charCodeAt(styles.length - 1) === 46 // .\n      );\n\n      if (stringMode === true && strings[i + 1] !== undefined) {\n        styles += strings[i + 1];\n      }\n    }, this);\n    stylesWithLabel = styles;\n    styles = styles.replace(labelPattern, function (match, p1) {\n      identifierName += \"-\" + p1;\n      return '';\n    });\n    name = createClassName(styles, identifierName);\n    return styles;\n  };\n\n  if (true) {\n    var oldStylis = stylis;\n\n    stylis = function stylis(selector, styles) {\n      oldStylis(selector, styles);\n      currentSourceMap = '';\n    };\n  }\n\n  function insert(scope, styles) {\n    if (caches.inserted[name] === undefined) {\n      current = '';\n      stylis(scope, styles);\n      caches.inserted[name] = current;\n    }\n  }\n\n  var css = function css() {\n    var styles = createStyles.apply(this, argument
 s);\n    var selector = key + \"-\" + name;\n\n    if (caches.registered[selector] === undefined) {\n      caches.registered[selector] = stylesWithLabel;\n    }\n\n    insert(\".\" + selector, styles);\n    return selector;\n  };\n\n  var keyframes = function keyframes() {\n    var styles = createStyles.apply(this, arguments);\n    var animation = \"animation-\" + name;\n    insert('', \"@keyframes \" + animation + \"{\" + styles + \"}\");\n    return animation;\n  };\n\n  var injectGlobal = function injectGlobal() {\n    var styles = createStyles.apply(this, arguments);\n    insert('', styles);\n  };\n\n  function getRegisteredStyles(registeredStyles, classNames) {\n    var rawClassName = '';\n    classNames.split(' ').forEach(function (className) {\n      if (caches.registered[className] !== undefined) {\n        registeredStyles.push(className);\n      } else {\n        rawClassName += className + \" \";\n     
  }\n    });\n    return rawClassName;\n  }\n\n  function merge(className, sourceMap) {\n    var registeredStyles = [];\n    var rawClassName = getRegisteredStyles(registeredStyles, className);\n\n    if (registeredStyles.length < 2) {\n      return className;\n    }\n\n    return rawClassName + css(registeredStyles, sourceMap);\n  }\n\n  function cx() {\n    for (var _len2 = arguments.length, classNames = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      classNames[_key2] = arguments[_key2];\n    }\n\n    return merge(classnames(classNames));\n  }\n\n  function hydrateSingleId(id) {\n    caches.inserted[id] = true;\n  }\n\n  function hydrate(ids) {\n    ids.forEach(hydrateSingleId);\n  }\n\n  function flush() {\n    if (isBrowser) {\n      sheet.flush();\n      sheet.inject();\n    }\n\n    caches.inserted = {};\n    caches.registered = {};\n  }\n\n  if (isBrowser) {\n    var chunks = document.querySelectorAll(\"[data-emotion-\" + key + \"]\");\
 n    Array.prototype.forEach.call(chunks, function (node) {\n      // $FlowFixMe\n      sheet.tags[0].parentNode.insertBefore(node, sheet.tags[0]); // $FlowFixMe\n\n      node.getAttribute(\"data-emotion-\" + key).split(' ').forEach(hydrateSingleId);\n    });\n  }\n\n  var emotion = {\n    flush: flush,\n    hydrate: hydrate,\n    cx: cx,\n    merge: merge,\n    getRegisteredStyles: getRegisteredStyles,\n    injectGlobal: injectGlobal,\n    keyframes: keyframes,\n    css: css,\n    sheet: sheet,\n    caches: caches\n  };\n  context.__SECRET_EMOTION__ = emotion;\n  return emotion;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createEmotion);\n\n\n//# sourceURL=webpack:///./node_modules/create-emotion/dist/index.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/class/addClass.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dom-helpers/class/addClass.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(/*! ./hasClass */ \"./node_modules/dom-helpers/class/hasClass.js\"));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/class/addClass.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/class/hasClass.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dom-helpers/class/hasClass.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/class/hasClass.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/class/removeClass.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/dom-helpers/class/removeClass.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/class/removeClass.js?");
+
+/***/ }),
+
+/***/ "./node_modules/emotion/dist/index.esm.js":
+/*!************************************************!*\
+  !*** ./node_modules/emotion/dist/index.esm.js ***!
+  \************************************************/
+/*! exports provided: flush, hydrate, cx, merge, getRegisteredStyles, injectGlobal, keyframes, css, sheet, caches */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hydrate\", function() { return hydrate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cx\", function() { return cx; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRegisteredStyles\", function() { return getRegisteredStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"injectGlobal\", function() { return injectGlobal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyframes\&q
 uot;, function() { return keyframes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sheet\", function() { return sheet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"caches\", function() { return caches; });\n/* harmony import */ var create_emotion__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! create-emotion */ \"./node_modules/create-emotion/dist/index.esm.js\");\n\n\nvar context = typeof global !== 'undefined' ? global : {};\n\nvar _createEmotion = Object(create_emotion__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(context),\n    flush = _createEmotion.flush,\n    hydrate = _createEmotion.hydrate,\n    cx = _createEmotion.cx,\n    merge = _createEmotion.merge,\n    getRegisteredStyles = _createEmotion.getRegisteredStyles,\n    injectGlobal = _crea
 teEmotion.injectGlobal,\n    keyframes = _createEmotion.keyframes,\n    css = _createEmotion.css,\n    sheet = _createEmotion.sheet,\n    caches = _createEmotion.caches;\n\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/emotion/dist/index.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/memoize-one/dist/memoize-one.esm.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/memoize-one/dist/memoize-one.esm.js ***!
+  \**********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n  return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n  if (isEqual === void 0) {\n    isEqual = simpleIsEqual;\n  }\n\n  var lastThis;\n  var lastArgs = [];\n  var lastResult;\n  var calledOnce = false;\n\n  var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n    return isEqual(newArg, lastArgs[index]);\n  };\n\n  var result = function result() {\n    for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n      newArgs[_key] = arguments[_key];\n    }\n\n    if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n      return lastResult;\n    }\n\n    lastResult = resultFn.apply(this, newArgs);\n    calledOnce = true;\n    lastThis = this;\n    lastArgs = newArgs;\n    return lastResult;\n  };\n\n  return result;\n}\n\n/* 
 harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n\n//# sourceURL=webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object-assign/index.js":
+/*!*********************************************!*\
+  !*** ./node_modules/object-assign/index.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i <
  10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, ke
 y)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack:///./node_modules/object-assign/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/performance-now/lib/performance-now.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/performance-now/lib/performance-now.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now(
 );\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/performance-now/lib/performance-now.js?");
+
+/***/ }),
+
+/***/ "./node_modules/process/browser.js":
+/*!*****************************************!*\
+  !*** ./node_modules/process/browser.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clear
 Timeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a
  version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, mar
 ker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue
  = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string
  to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack:///./node_modules/process/browser.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/checkPropTypes.js":
+/*!***************************************************!*\
+  !*** ./node_modules/prop-types/checkPropTypes.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\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\n\nvar printWarning = function() {};\n\nif (true) {\n  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n  var loggedTypeFailures = {};\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @para
 m {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (true) {\n    for (var typeSpecName in typeSpecs) {\n      if (typeSpecs.hasOwnProperty(typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n   
        if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pa
 ss an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          )\n\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = checkPropTypes;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/checkPropTypes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
+/*!************************************************************!*\
+  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\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\n\nvar assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\n\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\nvar printWarning = function() {};\n\nif (true) {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to f
 ire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn ==
 = 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   
 * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: c
 reatePrimitiveTypeChecker('array'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // Sa
 meValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (true) {\n      var manualPropTypeCallCache = {};\n      var
  manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if ( true && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\
 n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + 
 ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of
  type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' +
  location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChe
 cker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n       true ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : undefined;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) 
 {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues);\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return 
 new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (propValue.hasOwnProperty(key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : undefined;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        
 printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeEr
 ror('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    
 }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from\n      // props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n 
            '\\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propVal
 ue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyf
 illed.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n  
   var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropType
 s = checkPropTypes;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/prop-types/index.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/**\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\nif (true) {\n  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n    Symbol.for &&\n    Symbol.for('react.element')) ||\n    0xeac7;\n\n  var isValidElement = function(object) {\n    return typeof object === 'object' &&\n      object !== null &&\n      object.$$typeof === REACT_ELEMENT_TYPE;\n  };\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ \"./node_modules/prop-types/factoryWithTypeCheckers.js\")(isValidElement, throwOnDirectAccess);\n} else {}\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\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\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js?");
+
+/***/ }),
+
+/***/ "./node_modules/raf/index.js":
+/*!***********************************!*\
+  !*** ./node_modules/raf/index.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(global) {var now = __webpack_require__(/*! performance-now */ \"./node_modules/performance-now/lib/performance-now.js\")\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue
 .slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments
 )\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/raf/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-input-autosize/lib/AutosizeInput.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/react-input-autosize/lib/AutosizeInput.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"
 react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\&
 quot;) ? 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\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\
 treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeIn
 put);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillReceiveProps',\n\t\tvalue: function componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) 
 {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {
 \n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\
 t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {
 display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ classN
 ame: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for co
 nsistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = 
 {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;\n\n//# sourceURL=webpack:///./node_modules/react-input-autosize/lib/AutosizeInput.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js ***!
+  \****************************************************************************/
+/*! exports provided: polyfill */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyfill\", function() { return polyfill; });\n/**\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\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !=
 = undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isRe
 actComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (ty
 peof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycl
 es:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecy
 cle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \&
 quot;prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\n\n\n\n//# sourceURL=webpack:///./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-select/dist/react-select.esm.js":
+/*!************************************************************!*\
+  !*** ./node_modules/react-select/dist/react-select.esm.js ***!
+  \************************************************************/
+/*! exports provided: default, SelectBase, Async, AsyncCreatable, Creatable, createFilter, makeAnimated, components, mergeStyles, defaultTheme */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SelectBase\", function() { return Select; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Async\", function() { return Async; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AsyncCreatable\", function() { return AsyncCreatable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Creatable\", function() { return Creatable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFilter\", function() { return createFilter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeAnimated\", function() { return index; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"components\", function() { return compon
 ents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeStyles\", function() { return mergeStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTheme\", function() { return defaultTheme; });\n/* harmony import */ var raf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! raf */ \"./node_modules/raf/index.js\");\n/* harmony import */ var raf__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(raf__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var emotion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! emotion */ \"./node_modules/emotion/dist/index.esm.js\");\n/* harmony im
 port */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react_input_autosize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-input-autosize */ \"./node_modules/react-input-autosize/lib/AutosizeInput.js\");\n/* harmony import */ var react_input_autosize__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_input_autosize__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var memoize_one__WEBPACK_I
 MPORTED_MODULE_6__ = __webpack_require__(/*! memoize-one */ \"./node_modules/memoize-one/dist/memoize-one.esm.js\");\n/* harmony import */ var react_transition_group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-transition-group */ \"./node_modules/react-transition-group/index.js\");\n/* harmony import */ var react_transition_group__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_transition_group__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new Type
 Error(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n
 };\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n  var target = 
 {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\&q
 uot;]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\n// ==============================\n// NO OP\n// ==============================\n\nvar noop = function noop() {};\n\n// ==============================\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pa
 ir:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\n\nfunction classNames(prefix, cssKey, state, className) {\n  var arr = [cssKey, className];\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push('' + applyPrefixToName(prefix, key));\n      }\n    }\n  }\n\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n}\n// ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(va
 lue) {\n  if (Array.isArray(value)) return value.filter(Boolean);\n  if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null) return [value];\n  return [];\n};\n\n// ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var newValue = onInputChange(inputValue, actionMeta);\n    if (typeof newValue === 'string') return newValue;\n  }\n  return inputValue;\n}\n\n// ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n}\n\n// Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n  return el.scrollTop;\n}\n\nfunction scrollTo(el, top) {\n  //
  with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n\n  el.scrollTop = top;\n}\n\n// Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  var docEl = document.documentElement; // suck it, flow...\n\n  if (style.position === 'fixed') return docEl;\n\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n\n  return docEl;\n}\n\n// Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of c
 hange\n  @param d: duration\n*/\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n    if (currentTime < duration) {\n      raf__WEBPACK_IMPORTED_MODULE_0___default()(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n  animateScroll();\n}\n\n// Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect
  = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n}\n\n// ==============================\n// Get bounding client object\n// ==============================\n\n// cannot get keys using array notation with DOMRect\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n\n// ==============================\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.cre
 ateEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n    );\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Menu\n// ==============================\n\n// Get Menu Placement\n// ------------------------------\n\nfunction getMenuPlacement(_ref) {\n  var maxHeight = _ref.maxHeight,\n      menuEl = _ref.menuEl,\n      minHeight = _ref.minHeight,\n      placement = _ref.placement,\n      shouldScroll = _ref.shouldScroll,\n      isFixedPosition = _ref.isFixedPosition,\n      theme = _ref.theme;\n  var spacing = theme.spacing;\n\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = { placement: 'bottom', maxHeight: maxHeight };\n\n  // something went wrong, return de
 fault state\n  if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n  // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n      scrollHeight = _scrollParent$getBoun.height;\n\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n      menuBottom = _menuEl$getBoundingCl.bottom,\n      menuHeight = _menuEl$getBoundingCl.height,\n      menuTop = _menuEl$getBoundingCl.top;\n\n  // $FlowFixMe function returns above if there's no offsetParent\n\n\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n      containerTop = _menuEl$offsetParent$.top;\n\n  var viewHeight = window.innerHeight;\n  var scrollTop = getScrollTop(scrollParent);\n\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  
 var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n\n  switch (placement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return { placement: 'bottom', maxHeight: maxHeight };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        return { placement: 'bottom', maxHeight: maxHeight };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && v
 iewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      }\n\n      // 4. Forked beviour when there isn't enough space below\n\n      // AUTO: flip the menu, render above\n      if (placement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = maxHeight;\n\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight = isFixedPosition ? viewSpaceAb
 ove - marginBottom - spacing.controlHeight : scrollSpaceAbove - marginBottom - spacing.controlHeight;\n        }\n\n        return { placement: 'top', maxHeight: _constrainedHeight };\n      }\n\n      // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n      if (placement === 'bottom') {\n        scrollTo(scrollParent, scrollDown);\n        return { placement: 'bottom', maxHeight: maxHeight };\n      }\n      break;\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return { placement: 'top', maxHeight: maxHeight };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return { placement: 'top', maxHeight: maxHeight };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPo
 sition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = maxHeight;\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      }\n\n      // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, rende
 r below\n      return { placement: 'bottom', maxHeight: maxHeight };\n    default:\n      throw new Error('Invalid placement provided \"' + placement + '\".');\n  }\n\n  // fulfil contract with flow: implicit return value of undefined\n  return defaultState;\n}\n\n// Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = { bottom: 'top', top: 'bottom' };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n  var _ref3;\n\n  var placement = _ref2.placement,\n      _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      spacing = _ref2$theme.spacing,\n      colors = _ref2$theme.colors;\n  return _ref3 = {}, defineProperty(_ref3, alignToControl(placement), '100%'), defineProperty(_ref3, 'backgroundColor', colors.neutral0), defineProperty
 (_ref3, 'borderRadius', borderRadius), defineProperty(_ref3, 'boxShadow', '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), defineProperty(_ref3, 'marginBottom', spacing.menuGutter), defineProperty(_ref3, 'marginTop', spacing.menuGutter), defineProperty(_ref3, 'position', 'absolute'), defineProperty(_ref3, 'width', '100%'), defineProperty(_ref3, 'zIndex', 1), _ref3;\n};\n\n// NOTE: internal only\nvar MenuPlacer = function (_Component) {\n  inherits(MenuPlacer, _Component);\n\n  function MenuPlacer() {\n    var _ref4;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, MenuPlacer);\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, (_ref4 = MenuPlacer.__proto__ || Object.getPrototypeOf(MenuPlacer)).call.apply(_ref4, [this].concat(args))), _this), _this.state = {\n      maxHeight: _this.props.maxMenuHe
 ight,\n      placement: null\n    }, _this.getPlacement = function (ref) {\n      var _this$props = _this.props,\n          minMenuHeight = _this$props.minMenuHeight,\n          maxMenuHeight = _this$props.maxMenuHeight,\n          menuPlacement = _this$props.menuPlacement,\n          menuPosition = _this$props.menuPosition,\n          menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n          theme = _this$props.theme;\n      var getPortalPlacement = _this.context.getPortalPlacement;\n\n\n      if (!ref) return;\n\n      // DO NOT scroll if position is fixed\n      var isFixedPosition = menuPosition === 'fixed';\n      var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n\n      var state = getMenuPlacement({\n        maxHeight: maxMenuHeight,\n        menuEl: ref,\n        minHeight: minMenuHeight,\n        placement: menuPlacement,\n        shouldScroll: shouldScroll,\n        isFixedPosition: isFixedPosition,\n        theme: theme\n      });
 \n\n      if (getPortalPlacement) getPortalPlacement(state);\n\n      _this.setState(state);\n    }, _this.getUpdatedProps = function () {\n      var menuPlacement = _this.props.menuPlacement;\n\n      var placement = _this.state.placement || coercePlacement(menuPlacement);\n\n      return _extends({}, _this.props, { placement: placement, maxHeight: _this.state.maxHeight });\n    }, _temp), possibleConstructorReturn(_this, _ret);\n  }\n\n  createClass(MenuPlacer, [{\n    key: 'render',\n    value: function render() {\n      var children = this.props.children;\n\n\n      return children({\n        ref: this.getPlacement,\n        placerProps: this.getUpdatedProps()\n      });\n    }\n  }]);\n  return MenuPlacer;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nMenuPlacer.contextTypes = {\n  getPortalPlacement: prop_types__WEBPACK_IMPORTED_MODULE_4___default.a.func\n};\nvar Menu = function Menu(props) {\n  var children = props.children,\n      className = props.clas
 sName,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n\n  var cn = cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('menu', props)), { menu: true }, className);\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({ className: cn }, innerProps, { ref: innerRef }),\n    children\n  );\n};\n\n// ==============================\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref5) {\n  var maxHeight = _ref5.maxHeight,\n      baseUnit = _ref5.theme.spacing.baseUnit;\n  return {\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit,\n    position: 'relative', // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  };\n};\nvar MenuList = function MenuList(props) {\n  var children = pro
 ps.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isMulti = props.isMulti,\n      innerRef = props.innerRef;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    {\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('menuList', props)), {\n        'menu-list': true,\n        'menu-list--is-multi': isMulti\n      }, className),\n      ref: innerRef\n    },\n    children\n  );\n};\n\n// ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref6) {\n  var _ref6$theme = _ref6.theme,\n      baseUnit = _ref6$theme.spacing.baseUnit,\n      colors = _ref6$theme.colors;\n  return {\n    color: colors.neutral40,\n    padding: baseUnit * 2 + 'px ' + baseUnit * 3 + 'px',\n    textAlign: 'center'\n  };\n};\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = notice
 CSS;\n\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('noOptionsMessage', props)), {\n        'menu-notice': true,\n        'menu-notice--no-options': true\n      }, className)\n    }, innerProps),\n    children\n  );\n};\nNoOptionsMessage.defaultProps = {\n  children: 'No options'\n};\n\nvar LoadingMessage = function LoadingMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({\
 n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('loadingMessage', props)), {\n        'menu-notice': true,\n        'menu-notice--loading': true\n      }, className)\n    }, innerProps),\n    children\n  );\n};\nLoadingMessage.defaultProps = {\n  children: 'Loading...'\n};\n\n// ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref7) {\n  var rect = _ref7.rect,\n      offset = _ref7.offset,\n      position = _ref7.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\n\nvar MenuPortal = function (_Component2) {\n  inherits(MenuPortal, _Component2);\n\n  function MenuPortal() {\n    var _ref8;\n\n    var _temp2, _this2, _ret2;\n\n    classCallCheck(this, MenuPortal);\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 = (_this2 = possibleConstructorReturn(this, (_ref8 = MenuPortal.__proto__ || Object.getPrototypeOf(MenuPortal)).call.apply(_ref8, [this].concat(args))), _this2), _this2.state = { placement: null }, _this2.getPortalPlacement = function (_ref9) {\n      var placement = _ref9.placement;\n\n      var initialPlacement = coercePlacement(_this2.props.menuPlacement);\n\n      // avoid re-renders if the placement has not changed\n      if (placement !== initialPlacement) {\n        _this2.setState({ placement: placement });\n      }\n    }, _temp2), possibleConstructorReturn(_this2, _ret2);\n  }\n\n  createClass(MenuPortal, [{\n    key: 'getChildContext',\n    value: function getChildContext() {\n      return {\n        getPortalPlacement: this.getPortalPlacement\n      };\n    }\n\n    // callback for occassions where the menu must \"flip\"\n\n  }, {\n    key: 'render',\n    value: function render() {\n
       var _props = this.props,\n          appendTo = _props.appendTo,\n          children = _props.children,\n          controlElement = _props.controlElement,\n          menuPlacement = _props.menuPlacement,\n          position = _props.menuPosition,\n          getStyles = _props.getStyles;\n\n      var isFixed = position === 'fixed';\n\n      // bail early if required elements aren't present\n      if (!appendTo && !isFixed || !controlElement) {\n        return null;\n      }\n\n      var placement = this.state.placement || coercePlacement(menuPlacement);\n      var rect = getBoundingClientObj(controlElement);\n      var scrollDistance = isFixed ? 0 : window.pageYOffset;\n      var offset = rect[placement] + scrollDistance;\n      var state = { offset: offset, position: position, rect: rect };\n\n      // same wrapper element whether fixed or portalled\n      var menuWrapper = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        'div',\n        { className:
  /*#__PURE__*/ /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('menuPortal', state)) },\n        children\n      );\n\n      return appendTo ? Object(react_dom__WEBPACK_IMPORTED_MODULE_3__[\"createPortal\"])(menuWrapper, appendTo) : menuWrapper;\n    }\n  }]);\n  return MenuPortal;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\nMenuPortal.childContextTypes = {\n  getPortalPlacement: prop_types__WEBPACK_IMPORTED_MODULE_4___default.a.func\n};\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && (typeof a === 'undefined' ? 'undefined' : _typeof(a)) == 'object' && (typeof b === 'undefined' ? 'undefined' : _typeof(b)) == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n 
    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n\n    var keys = keyList(a);\n    length = keys.length;\n\n    if (length !== keyList(b).length) {\n      return false;\n    }\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    }\n    // end fast-deep-equal\n\n    // Custom handling for React\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n      i
 f (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    }\n\n    // fast-deep-equal index.js 2.0.1\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nfunction exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i)) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceede
 d\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n}\n\nvar diacritics = [{ base: 'A', letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g }, { base: 'AA', letters: /[\\uA732]/g }, { base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g }, { base: 'AO', letters: /[\\uA734]/g }, { base: 'AU', letters: /[\\uA736]/g }, { base: 'AV', letters: /[\\uA738\\uA73A]/g }, { base: 'AY', letters: /[\\uA73C]/g }, { base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E0
 6\\u0243\\u0182\\u0181]/g }, { base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g }, { base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g }, { base: 'DZ', letters: /[\\u01F1\\u01C4]/g }, { base: 'Dz', letters: /[\\u01F2\\u01C5]/g }, { base: 'E', letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g }, { base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g }, { base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g }, { base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g }, { base: 'I', letters: /[\\u0049\\u24BE\\uFF29\\u00CC\
 \u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g }, { base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g }, { base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g }, { base: 'L', letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g }, { base: 'LJ', letters: /[\\u01C7]/g }, { base: 'Lj', letters: /[\\u01C8]/g }, { base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g }, { base: 'N', letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g }, { base: 'NJ', letters: /[\\u01CA]/g }, { base: 'Nj', letters: /[\\u01CB]/g }, { base: 'O', letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E
 52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g }, { base: 'OI', letters: /[\\u01A2]/g }, { base: 'OO', letters: /[\\uA74E]/g }, { base: 'OU', letters: /[\\u0222]/g }, { base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g }, { base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g }, { base: 'R', letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g }, { base: 'S', letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g }, { base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g }, { base: 'TZ', letters: /[\\uA728]/g }, { base: 'U', letters: /[\\u0055\\u24CA\\
 uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g }, { base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g }, { base: 'VY', letters: /[\\uA760]/g }, { base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g }, { base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g }, { base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g }, { base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g }, { base: 'a', letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0
 201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g }, { base: 'aa', letters: /[\\uA733]/g }, { base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g }, { base: 'ao', letters: /[\\uA735]/g }, { base: 'au', letters: /[\\uA737]/g }, { base: 'av', letters: /[\\uA739\\uA73B]/g }, { base: 'ay', letters: /[\\uA73D]/g }, { base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g }, { base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g }, { base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g }, { base: 'dz', letters: /[\\u01F3\\u01C6]/g }, { base: 'e', letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g }, { base: 'f', letters: /[\\u0066\\u24D
 5\\uFF46\\u1E1F\\u0192\\uA77C]/g }, { base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g }, { base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g }, { base: 'hv', letters: /[\\u0195]/g }, { base: 'i', letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g }, { base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g }, { base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g }, { base: 'l', letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g }, { base: 'lj', letters: /[\\u01C9]/g }, { base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\
 \u026F]/g }, { base: 'n', letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g }, { base: 'nj', letters: /[\\u01CC]/g }, { base: 'o', letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g }, { base: 'oi', letters: /[\\u01A3]/g }, { base: 'ou', letters: /[\\u0223]/g }, { base: 'oo', letters: /[\\uA74F]/g }, { base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g }, { base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g }, { base: 'r', letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g }, { base: 's', letters: 
 /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g }, { base: 't', letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g }, { base: 'tz', letters: /[\\uA729]/g }, { base: 'u', letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g }, { base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g }, { base: 'vy', letters: /[\\uA761]/g }, { base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g }, { base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g }, { base: 'y', letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u
 1EF5\\u01B4\\u024F\\u1EFF]/g }, { base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g }];\n\nvar stripDiacritics = function stripDiacritics(str) {\n\tfor (var i = 0; i < diacritics.length; i++) {\n\t\tstr = str.replace(diacritics[i].letters, diacritics[i].base);\n\t}\n\treturn str;\n};\n\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\nvar defaultStringify = function defaultStringify(option) {\n  return option.label + ' ' + option.value;\n};\n\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    var _ignoreCase$ignoreAcc = _extends({\n      ignoreCase: true,\n      ignoreAccents: true,\n      stringify: defaultStringify,\n      trim: true,\n      matchFrom: 'any'\n    }, config),\n        ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n        ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n        stringify = _ignor
 eCase$ignoreAcc.stringify,\n        trim = _ignoreCase$ignoreAcc.trim,\n        matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n      candidate = stripDiacritics(candidate);\n    }\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\n// Assistive text to describe visual elements. Hidden for sighted users.\nvar A11yText = function A11yText(props) {\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', _extends({\n    className: Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])({\n      zIndex: 9999,\n      border: 0,\n      clip: 'rect(1px, 1px, 1px, 1px)',\n      hei
 ght: 1,\n      width: 1,\n      position: 'absolute',\n      overflow: 'hidden',\n      padding: 0,\n      whiteSpace: 'nowrap',\n      backgroundColor: 'red',\n      color: 'blue'\n    })\n  }, props));\n};\n\nvar DummyInput = function (_Component) {\n  inherits(DummyInput, _Component);\n\n  function DummyInput() {\n    classCallCheck(this, DummyInput);\n    return possibleConstructorReturn(this, (DummyInput.__proto__ || Object.getPrototypeOf(DummyInput)).apply(this, arguments));\n  }\n\n  createClass(DummyInput, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          inProp = _props.in,\n          out = _props.out,\n          onExited = _props.onExited,\n          appear = _props.appear,\n          enter = _props.enter,\n          exit = _props.exit,\n          innerRef = _props.innerRef,\n          props = objectWithoutProperties(_props, ['in', 'out', 'onExited', 'appear', 'enter', 'exit', 'innerRef']);\n\n      return react__WEBPACK_IMPO
 RTED_MODULE_1___default.a.createElement('input', _extends({\n        ref: innerRef\n      }, props, {\n        className: Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])({\n          // get rid of any default styles\n          background: 0,\n          border: 0,\n          fontSize: 'inherit',\n          outline: 0,\n          padding: 0,\n\n          // important! without `width` browsers won't allow focus\n          width: 1,\n\n          // remove cursor on desktop\n          color: 'transparent',\n\n          // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n          left: -100,\n          opacity: 0,\n          position: 'relative',\n          transform: 'scale(0)'\n        })\n      }));\n    }\n  }]);\n  return DummyInput;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nvar NodeResolver = function (_Component) {\n  inherits(NodeResolver, _Component);\n\n  function NodeResolver() {\n    classCallCheck(
 this, NodeResolver);\n    return possibleConstructorReturn(this, (NodeResolver.__proto__ || Object.getPrototypeOf(NodeResolver)).apply(this, arguments));\n  }\n\n  createClass(NodeResolver, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.props.innerRef(Object(react_dom__WEBPACK_IMPORTED_MODULE_3__[\"findDOMNode\"])(this));\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.props.innerRef(null);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return NodeResolver;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\n\nvar LOCK_STYLES = {\n  boxSizing: 'border-box', // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\n\nfunction preventTo
 uchMove(e) {\n  e.preventDefault();\n}\n\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\n\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n}\n\n// `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar activeScrollLocks = 0;\n\nvar ScrollLock = function (_Component) {\n  inherits(ScrollLock, _Component);\n\n  function ScrollLock() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, ScrollLock);\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, (_ref = ScrollLock.__proto__ || Object.getPrototypeOf(ScrollLock)).call.apply(_ref, [this].concat(args))), _this), _this.originalStyles = {}, _this.listenerOptions = {\n      capture: false,\n      passive: false\n    }, _temp), possibleConstructorReturn(_this, _ret);\n  }\n\n  createClass(ScrollLock, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!canUseDOM) return;\n\n      var _props = this.props,\n          accountForScrollbars = _props.accountForScrollbars,\n          touchScrollTarget = _props.touchScrollTarget;\n\n      var target = document.body;\n      var targetStyle = target && target.style;\n\n      if (accountForScrollbars) {\n        // store any styles already applied to the body\n        STYLE_KEYS.forEach(function (key) {\n          var val = target
 Style && targetStyle[key];\n          _this2.originalStyles[key] = val;\n        });\n      }\n\n      // apply the lock styles and padding if this is the first scroll lock\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n        var clientWidth = document.body ? document.body.clientWidth : 0;\n        var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n\n        Object.keys(LOCK_STYLES).forEach(function (key) {\n          var val = LOCK_STYLES[key];\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n\n        if (targetStyle) {\n          targetStyle.paddingRight = adjustedPadding + 'px';\n        }\n      }\n\n      // account for touch devices\n      if (target && isTouchDevice()) {\n        // Mobile Safari ignores { overflow: hidden } declaration on the body.\n        target.addEventListene
 r('touchmove', preventTouchMove, this.listenerOptions);\n\n        // Allow scroll on provided target\n        if (touchScrollTarget) {\n          touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      }\n\n      // increment active scroll locks\n      activeScrollLocks += 1;\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      var _this3 = this;\n\n      if (!canUseDOM) return;\n\n      var _props2 = this.props,\n          accountForScrollbars = _props2.accountForScrollbars,\n          touchScrollTarget = _props2.touchScrollTarget;\n\n      var target = document.body;\n      var targetStyle = target && target.style;\n\n      // safely decrement active scroll locks\n      activeScrollLocks = Math.max(activeScrollLocks - 1, 0);\n\n      // reapply original body styles, if any
 \n      if (accountForScrollbars && activeScrollLocks < 1) {\n        STYLE_KEYS.forEach(function (key) {\n          var val = _this3.originalStyles[key];\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n      }\n\n      // remove touch listeners\n      if (target && isTouchDevice()) {\n        target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n        if (touchScrollTarget) {\n          touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return null;\n    }\n  }]);\n  return ScrollLock;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nScrollLock.defaultProps = {\n  accountForScrollbars: true\n};\n\n// NOTE:\n// We shouldn't need thi
 s after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\n\nvar ScrollBlock = function (_PureComponent) {\n  inherits(ScrollBlock, _PureComponent);\n\n  function ScrollBlock() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, ScrollBlock);\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, (_ref = ScrollBlock.__proto__ || Object.getPrototypeOf(ScrollBlock)).call.apply(_ref, [this].concat(args))), _this), _this.state = { touchScrollTarget: null }, _this.getScrollTarget = function (ref) {\n      if (ref === _this.state.touchScrollTarget) return;\n      _this.setState({ touchScrollTarget: ref });\n    }, _this.blurSelectInput = function () {\n      if (document
 .activeElement) {\n        document.activeElement.blur();\n      }\n    }, _temp), possibleConstructorReturn(_this, _ret);\n  }\n\n  // must be in state to trigger a re-render, only runs once per instance\n\n\n  // this will close the menu when a user clicks outside\n\n\n  createClass(ScrollBlock, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          children = _props.children,\n          isEnabled = _props.isEnabled;\n      var touchScrollTarget = this.state.touchScrollTarget;\n\n      // bail early if not enabled\n\n      if (!isEnabled) return children;\n\n      /*\n       * Div\n       * ------------------------------\n       * blocks scrolling on non-body elements behind the menu\n        * NodeResolver\n       * ------------------------------\n       * we need a reference to the scrollable element to \"unlock\" scroll on\n       * mobile devices\n        * ScrollLock\n       * ------------------------------\n       * actual
 ly does the scroll locking\n       */\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        'div',\n        null,\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('div', {\n          onClick: this.blurSelectInput,\n          className: Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])({ position: 'fixed', left: 0, bottom: 0, right: 0, top: 0 })\n        }),\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          NodeResolver,\n          { innerRef: this.getScrollTarget },\n          children\n        ),\n        touchScrollTarget ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ScrollLock, { touchScrollTarget: touchScrollTarget }) : null\n      );\n    }\n  }]);\n  return ScrollBlock;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"PureComponent\"]);\n\nvar ScrollCaptor = function (_Component) {\n  inherits(ScrollCaptor, _Component);\n\n  function ScrollCaptor() {\n    var _ref;\n\n  
   var _temp, _this, _ret;\n\n    classCallCheck(this, ScrollCaptor);\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, (_ref = ScrollCaptor.__proto__ || Object.getPrototypeOf(ScrollCaptor)).call.apply(_ref, [this].concat(args))), _this), _this.isBottom = false, _this.isTop = false, _this.cancelScroll = function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    }, _this.handleEventDelta = function (event, delta) {\n      var _this$props = _this.props,\n          onBottomArrive = _this$props.onBottomArrive,\n          onBottomLeave = _this$props.onBottomLeave,\n          onTopArrive = _this$props.onTopArrive,\n          onTopLeave = _this$props.onTopLeave;\n      var _this$scrollTarget = _this.scrollTarget,\n          scrollTop = _this$scrollTarget.scrollTop,\n          scrollHeight = _this$scrollT
 arget.scrollHeight,\n          clientHeight = _this$scrollTarget.clientHeight;\n\n      var target = _this.scrollTarget;\n      var isDeltaPositive = delta > 0;\n      var availableScroll = scrollHeight - clientHeight - scrollTop;\n      var shouldCancelScroll = false;\n\n      // reset bottom/top flags\n      if (availableScroll > delta && _this.isBottom) {\n        if (onBottomLeave) onBottomLeave(event);\n        _this.isBottom = false;\n      }\n      if (isDeltaPositive && _this.isTop) {\n        if (onTopLeave) onTopLeave(event);\n        _this.isTop = false;\n      }\n\n      // bottom limit\n      if (isDeltaPositive && delta > availableScroll) {\n        if (onBottomArrive && !_this.isBottom) {\n          onBottomArrive(event);\n        }\n        target.scrollTop = scrollHeight;\n        shouldCancelScroll = true;\n        _this.isBottom = true;\n\n        // top limit\n      } else if (!isDeltaPositive && -delta > scroll
 Top) {\n        if (onTopArrive && !_this.isTop) {\n          onTopArrive(event);\n        }\n        target.scrollTop = 0;\n        shouldCancelScroll = true;\n        _this.isTop = true;\n      }\n\n      // cancel scroll\n      if (shouldCancelScroll) {\n        _this.cancelScroll(event);\n      }\n    }, _this.onWheel = function (event) {\n      _this.handleEventDelta(event, event.deltaY);\n    }, _this.onTouchStart = function (event) {\n      // set touch start so we can calculate touchmove delta\n      _this.touchStart = event.changedTouches[0].clientY;\n    }, _this.onTouchMove = function (event) {\n      var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n      _this.handleEventDelta(event, deltaY);\n    }, _this.getScrollTarget = function (ref) {\n      _this.scrollTarget = ref;\n    }, _temp), possibleConstructorReturn(_this, _ret);\n  }\n\n  createClass(ScrollCaptor, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      
 this.startListening(this.scrollTarget);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.stopListening(this.scrollTarget);\n    }\n  }, {\n    key: 'startListening',\n    value: function startListening(el) {\n      // bail early if no scroll available\n      if (el.scrollHeight <= el.clientHeight) return;\n\n      // all the if statements are to appease Flow 😢\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('wheel', this.onWheel, false);\n      }\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchstart', this.onTouchStart, false);\n      }\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: 'stopListening',\n    value: function stopListening(el) {\n      // bail early if no scroll available\n      if (el.scrollHeight <= el.clientHeight) 
 return;\n\n      // all the if statements are to appease Flow 😢\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('wheel', this.onWheel, false);\n      }\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchstart', this.onTouchStart, false);\n      }\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        NodeResolver,\n        { innerRef: this.getScrollTarget },\n        this.props.children\n      );\n    }\n  }]);\n  return ScrollCaptor;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nvar ScrollCaptorSwitch = function (_Component2) {\n  inherits(ScrollCaptorSwitch, _Component2);\n\n  function ScrollCaptorSwitch() {\n    classCallCheck(this, Scrol
 lCaptorSwitch);\n    return possibleConstructorReturn(this, (ScrollCaptorSwitch.__proto__ || Object.getPrototypeOf(ScrollCaptorSwitch)).apply(this, arguments));\n  }\n\n  createClass(ScrollCaptorSwitch, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          isEnabled = _props.isEnabled,\n          props = objectWithoutProperties(_props, ['isEnabled']);\n\n      return isEnabled ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ScrollCaptor, props) : this.props.children;\n    }\n  }]);\n  return ScrollCaptorSwitch;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nScrollCaptorSwitch.defaultProps = { isEnabled: true };\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var isSearchable = context.isSearchable,\n      isMulti = context.isMulti,\n      label = context.label;\n\n  switch (even
 t) {\n    case 'menu':\n      return 'Use Up and Down to choose options, press Backspace to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu.';\n    case 'input':\n      return (label ? label : 'Select') + ' is focused ' + (isSearchable ? ',type to refine list' : '') + ', press Down to open the menu, ' + (isMulti ? ' press left to focus selected values' : '');\n    case 'value':\n      return 'Use left and right to toggle between focused values, press Enter to remove the currently focused value';\n  }\n};\n\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n  var value = context.value;\n\n  if (!value) return;\n  switch (event) {\n    case 'deselect-option':\n    case 'pop-value':\n    case 'remove-value':\n      return 'option ' + value + ', deselected.';\n    case 'select-option':\n      return 'option ' + value + ', selected.';\n  }\n};\n\nvar valueFocusAriaMessage = function valueFocu
 sAriaMessage(_ref) {\n  var focusedValue = _ref.focusedValue,\n      getOptionLabel = _ref.getOptionLabel,\n      selectValue = _ref.selectValue;\n  return 'value ' + getOptionLabel(focusedValue) + ' focused, ' + (selectValue.indexOf(focusedValue) + 1) + ' of ' + selectValue.length + '.';\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n  var focusedOption = _ref2.focusedOption,\n      getOptionLabel = _ref2.getOptionLabel,\n      options = _ref2.options;\n  return 'option ' + getOptionLabel(focusedOption) + ' focused, ' + (options.indexOf(focusedOption) + 1) + ' of ' + options.length + '.';\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n  var inputValue = _ref3.inputValue,\n      screenReaderMessage = _ref3.screenReaderMessage;\n  return '' + screenReaderMessage + (inputValue ? ' for search term ' + inputValue : '') + '.';\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\n\nvar getOptionLabel
  = function getOptionLabel(option) {\n  return option.label;\n};\n\nvar getOptionValue = function getOptionValue(option) {\n  return option.value;\n};\n\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\n// ==============================\n// Root Container\n// ==============================\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isRtl = _ref.isRtl;\n  return {\n    direction: isRtl ? 'rtl' : null,\n    pointerEvents: isDisabled ? 'none' : null, // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      isRtl = props.isRtl;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div'
 ,\n    _extends({\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('container', props)), {\n        '--is-disabled': isDisabled,\n        '--is-rtl': isRtl\n      }, className)\n    }, innerProps),\n    children\n  );\n};\n\n// ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    alignItems: 'center',\n    display: 'flex',\n    flex: 1,\n    flexWrap: 'wrap',\n    padding: spacing.baseUnit / 2 + 'px ' + spacing.baseUnit * 2 + 'px',\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  };\n};\nvar ValueContainer = function (_Component) {\n  inherits(ValueContainer, _Component);\n\n  function ValueContainer() {\n    classCallCheck(this, ValueContainer);\n    return possibleConstructorReturn(this, (ValueContainer.__proto__ || Object.getProt
 otypeOf(ValueContainer)).apply(this, arguments));\n  }\n\n  createClass(ValueContainer, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          children = _props.children,\n          className = _props.className,\n          cx = _props.cx,\n          isMulti = _props.isMulti,\n          getStyles = _props.getStyles,\n          hasValue = _props.hasValue;\n\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        'div',\n        {\n          className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('valueContainer', this.props)), {\n            'value-container': true,\n            'value-container--is-multi': isMulti,\n            'value-container--has-value': hasValue\n          }, className)\n        },\n        children\n      );\n    }\n  }]);\n  return ValueContainer;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\n// ============================
 ==\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles;\n\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    {\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('indicatorsContainer', props)), {\n        'indicators': true\n      }, className)\n    },\n    children\n  );\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\n\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n      props = objectWithoutProperties(_ref, ['size']);\n  return react__WEBPA
 CK_IMPORTED_MODULE_1___default.a.createElement('svg', _extends({\n    height: size,\n    width: size,\n    viewBox: '0 0 20 20',\n    'aria-hidden': 'true',\n    focusable: 'false',\n    className: /*#__PURE__*/ /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])({\n      display: 'inline-block',\n      fill: 'currentColor',\n      lineHeight: 1,\n      stroke: 'currentColor',\n      strokeWidth: 0\n    })\n  }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    Svg,\n    _extends({ size: 20 }, props),\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('path', { d: 'M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152
  2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z' })\n  );\n};\nvar DownChevron = function DownChevron(props) {\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    Svg,\n    _extends({ size: 20 }, props),\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('path', { d: 'M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z' })\n  );\n};\n\n// ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref2) {\n  var isFocused = _ref2.isFocused,\n      _ref2$theme = _ref2.theme,\n      baseUnit = _ref2$theme.spacing.baseUnit,\n      colors = _ref2$theme.colors;\n  return {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    p
 adding: baseUnit * 2,\n    transition: 'color 150ms',\n\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({}, innerProps, {\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('dropdownIndicator', props)), {\n        'indicator': true,\n        'dropdown-indicator': true\n      }, className)\n    }),\n    children\n  );\n};\nDropdownIndicator.defaultProps = {\n  children: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DownChevron, null)\n};\n\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearI
 ndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({}, innerProps, {\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('clearIndicator', props)), {\n        'indicator': true,\n        'clear-indicator': true\n      }, className)\n    }),\n    children\n  );\n};\n\nClearIndicator.defaultProps = {\n  children: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(CrossIcon, null)\n};\n\n// ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref3) {\n  var isDisabled = _ref3.isDisabled,\n      _ref3$theme = _ref3.theme,\n      baseUnit = _ref3$theme.spacing.baseUnit,\n      colors = _ref3$theme.colors;\n  
 return {\n    alignSelf: 'stretch',\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2,\n    width: 1\n  };\n};\n\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', _extends({}, innerProps, {\n    className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('indicatorSeparator', props)), { 'indicator-separator': true }, className)\n  }));\n};\n\n// ==============================\n// Loading\n// ==============================\n\nvar keyframesName = 'react-select-loading-indicator';\n\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref4) {\n  var isFocused = _ref4.isFocused,\n      size = _ref4.size,\n      _ref4$theme = _ref4.theme,\n
       colors = _ref4$theme.colors,\n      baseUnit = _ref4$theme.spacing.baseUnit;\n  return {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  };\n};\n\nvar LoadingDot = function LoadingDot(_ref5) {\n  var color = _ref5.color,\n      delay = _ref5.delay,\n      offset = _ref5.offset;\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n    className: Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])({\n      animationDuration: '1s',\n      animationDelay: delay + 'ms',\n      animationIterationCount: 'infinite',\n      animationName: keyframesName,\n      animationTimingFunction: 'ease-in-out',\n      backgroundColor: color,\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: 
 offset ? '1em' : null,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    })\n  });\n};\n\n// eslint-disable-next-line no-unused-expressions\nObject(emotion__WEBPACK_IMPORTED_MODULE_2__[\"injectGlobal\"])('@keyframes ', keyframesName, '{0%,80%,100%{opacity:0;}40%{opacity:1;}};');\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isFocused = props.isFocused,\n      isRtl = props.isRtl,\n      colors = props.theme.colors;\n\n  var color = isFocused ? colors.neutral80 : colors.neutral20;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({}, innerProps, {\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('loadingIndicator', props)), {\n        'indicator': true,\n        'loading-indicator': true\n  
     }, className)\n    }),\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(LoadingDot, { color: color, delay: 0, offset: isRtl }),\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(LoadingDot, { color: color, delay: 160, offset: true }),\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(LoadingDot, { color: color, delay: 320, offset: !isRtl })\n  );\n};\nLoadingIndicator.defaultProps = { size: 4 };\n\nvar css$1 = function css$$1(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      _ref$theme = _ref.theme,\n      colors = _ref$theme.colors,\n      borderRadius = _ref$theme.borderRadius,\n      spacing = _ref$theme.spacing;\n  return {\n    alignItems: 'center',\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n 
    boxShadow: isFocused ? '0 0 0 1px ' + colors.primary : null,\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms',\n\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  };\n};\n\nvar Control = function Control(props) {\n  var children = props.children,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      className = props.className,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({\n      ref: innerRef,\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('control', props)), {\n        'control': tru
 e,\n        'control--is-disabled': isDisabled,\n        'control--is-focused': isFocused\n      }, className)\n    }, innerProps),\n    children\n  );\n};\n\nvar groupCSS = function groupCSS(_ref) {\n  var spacing = _ref.theme.spacing;\n  return {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\n\nvar Group = function Group(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      Heading = props.Heading,\n      headingProps = props.headingProps,\n      label = props.label,\n      theme = props.theme;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    {\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('group', props)), { 'group': true }, className)\n    },\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n      Heading,\n      _extends({}, head
 ingProps, { theme: theme, getStyles: getStyles, cx: cx }),\n      label\n    ),\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n      'div',\n      null,\n      children\n    )\n  );\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    color: '#999',\n    cursor: 'default',\n    display: 'block',\n    fontSize: '75%',\n    fontWeight: '500',\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  };\n};\n\nvar GroupHeading = function GroupHeading(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      theme = props.theme,\n      cleanProps = objectWithoutProperties(props, ['className', 'cx', 'getStyles', 'theme']);\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('div', _extends({\n    className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IM
 PORTED_MODULE_2__[\"css\"])(getStyles('groupHeading', _extends({ theme: theme }, cleanProps))), { 'group-heading': true }, className)\n  }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    visibility: isDisabled ? 'hidden' : 'visible',\n    color: colors.neutral80\n  };\n};\nvar inputStyle = function inputStyle(isHidden) {\n  return {\n    background: 0,\n    border: 0,\n    fontSize: 'inherit',\n    opacity: isHidden ? 0 : 1,\n    outline: 0,\n    padding: 0,\n    color: 'inherit'\n  };\n};\n\nvar Input = function Input(_ref2) {\n  var className = _ref2.className,\n      cx = _ref2.cx,\n      getStyles = _ref2.getStyles,\n      innerRef = _ref2.innerRef,\n      isHidden = _ref2.isHidden,\n 
      isDisabled = _ref2.isDisabled,\n      theme = _ref2.theme,\n      props = objectWithoutProperties(_ref2, ['className', 'cx', 'getStyles', 'innerRef', 'isHidden', 'isDisabled', 'theme']);\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    {\n      className: Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('input', _extends({ theme: theme }, props)))\n    },\n    react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_input_autosize__WEBPACK_IMPORTED_MODULE_5___default.a, _extends({\n      className: cx(null, { 'input': true }, className),\n      inputRef: innerRef,\n      inputStyle: inputStyle(isHidden),\n      disabled: isDisabled\n    }, props))\n  );\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      borderRadius = _ref$theme.borderRadius,\n      colors = _ref$theme.colors;\n  return {\n    backgroundColor: colors.neutral10
 ,\n    borderRadius: borderRadius / 2,\n    display: 'flex',\n    margin: spacing.baseUnit / 2,\n    minWidth: 0 // resolves flex/text-overflow bug\n  };\n};\n\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n  var _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      colors = _ref2$theme.colors,\n      cropWithEllipsis = _ref2.cropWithEllipsis;\n  return {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    overflow: 'hidden',\n    padding: 3,\n    paddingLeft: 6,\n    textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n    whiteSpace: 'nowrap'\n  };\n};\n\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n  var _ref3$theme = _ref3.theme,\n      spacing = _ref3$theme.spacing,\n      borderRadius = _ref3$theme.borderRadius,\n      colors = _ref3$theme.colors,\n      isFocused = _ref3.isFocused;\n  return {\n    alignItems: 'center',\n    borderRadius: borderRadius / 2,\n    backgroun
 dColor: isFocused && colors.dangerLight,\n    display: 'flex',\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  };\n};\n\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n      innerProps = _ref4.innerProps;\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    innerProps,\n    children\n  );\n};\n\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\n\nvar MultiValueRemove = function (_Component) {\n  inherits(MultiValueRemove, _Component);\n\n  function MultiValueRemove() {\n    classCallCheck(this, MultiValueRemove);\n    return possibleConstructorReturn(this, (MultiValueRemove.__proto__ || Object.getPrototypeOf(MultiValueRemove)).apply(this, arguments));\n  }\n\n  createClass(MultiValueRemove, [{\n    key: 'render',\n    value: function r
 ender() {\n      var _props = this.props,\n          children = _props.children,\n          innerProps = _props.innerProps;\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        'div',\n        innerProps,\n        children\n      );\n    }\n  }]);\n  return MultiValueRemove;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nMultiValueRemove.defaultProps = {\n  children: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(CrossIcon, { size: 14 })\n};\n\nvar MultiValue = function (_Component2) {\n  inherits(MultiValue, _Component2);\n\n  function MultiValue() {\n    classCallCheck(this, MultiValue);\n    return possibleConstructorReturn(this, (MultiValue.__proto__ || Object.getPrototypeOf(MultiValue)).apply(this, arguments));\n  }\n\n  createClass(MultiValue, [{\n    key: 'render',\n    value: function render() {\n      var _props2 = this.props,\n          children = _props2.children,\n          className = _props2.className,\n 
          components = _props2.components,\n          cx = _props2.cx,\n          data = _props2.data,\n          getStyles = _props2.getStyles,\n          innerProps = _props2.innerProps,\n          isDisabled = _props2.isDisabled,\n          removeProps = _props2.removeProps,\n          selectProps = _props2.selectProps;\n      var Container = components.Container,\n          Label = components.Label,\n          Remove = components.Remove;\n\n\n      var containerInnerProps = _extends({\n        className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('multiValue', this.props)), {\n          'multi-value': true,\n          'multi-value--is-disabled': isDisabled\n        }, className)\n      }, innerProps);\n\n      var labelInnerProps = {\n        className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('multiValueLabel', this.props)), {\n          'multi-value__label': true\n        }, classN
 ame)\n      };\n\n      var removeInnerProps = _extends({\n        className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('multiValueRemove', this.props)), {\n          'multi-value__remove': true\n        }, className)\n      }, removeProps);\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        Container,\n        {\n          data: data,\n          innerProps: containerInnerProps,\n          selectProps: selectProps\n        },\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          Label,\n          {\n            data: data,\n            innerProps: labelInnerProps,\n            selectProps: selectProps\n          },\n          children\n        ),\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Remove, {\n          data: data,\n          innerProps: removeInnerProps,\n          selectProps: selectProps\n        })\n      );\n    }\n  }]);\n  return MultiVal
 ue;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nMultiValue.defaultProps = {\n  cropWithEllipsis: true\n};\n\nvar optionCSS = function optionCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      isSelected = _ref.isSelected,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    padding: spacing.baseUnit * 2 + 'px ' + spacing.baseUnit * 3 + 'px',\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: isSelected ? colors.primary : colors.primary50\n    }\n  };\n};\n\nvar Option
  = function Option(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      isSelected = props.isSelected,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({\n      ref: innerRef,\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('option', props)), {\n        'option': true,\n        'option--is-disabled': isDisabled,\n        'option--is-focused': isFocused,\n        'option--is-selected': isSelected\n      }, className)\n    }, innerProps),\n    children\n  );\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    color: c
 olors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    position: 'absolute',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('placeholder', props)), {\n        'placeholder': true\n      }, className)\n    }, innerProps),\n    children\n  );\n};\n\nvar css$2 = function css$$1(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    margin
 Left: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    maxWidth: 'calc(100% - ' + spacing.baseUnit * 2 + 'px)',\n    overflow: 'hidden',\n    position: 'absolute',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      innerProps = props.innerProps;\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    _extends({\n      className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('singleValue', props)), {\n        'single-value': true,\n        'single-value--is-disabled': isDisabled\n      }, className)\n    }, innerProps),\n    children\n  );\n};\n\nvar components = {\n  ClearIndicator: ClearIndicator,\n 
  Control: Control,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option,\n  Placeholder: Placeholder,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue,\n  ValueContainer: ValueContainer\n};\n\nvar defaultComponents = function defaultComponents(props) {\n  return _extends({}, components, props.components);\n};\n\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css$1,\n  dropdownIndicator:
  dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$2,\n  valueContainer: valueContainerCSS\n};\n\n// Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // initialize with source styles\n  var styles = _extends({}, source);\n\n  // massage in target styles\n  Object.keys(target).forEach(function (key) {\n 
    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\n\nvar borderRadius = 4;\nvar baseUnit = 4; /* Used to calculate consistent margin/padding on elements */\nvar controlHeight = 38; /* The minimum height of the control */\nvar menuGutter = baseUnit * 2; /* The amount of space between th
 e control and menu */\n\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\n\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nvar defaultProps = {\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel,\n  getOptionValue: getOptionValue,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuS
 houldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return count + ' result' + (count !== 1 ? 's' : '') + ' available';\n  },\n  styles: {},\n  tabIndex: '0',\n  tabSelectsValue: true\n};\n\nvar instanceId = 1;\n\nvar Select = function (_Component) {\n  inherits(Select, _Component);\n\n  // Lifecycle\n  // ------------------------------\n\n  // Refs\n  // ------------------------------\n\n  // Misc. Instance Properties\n  // ------------------------------\n\n  function Select(props) {\n    classCallCheck(this, Select);\n\n    var _this = possibleConstructorReturn(this, (Select.__proto__ || Object.getPrototypeOf(Select)).call(this, props));\n\n    _initialiseProps.call(_this);\n
 \n    var value = props.value;\n\n    _this.cacheComponents = Object(memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_this.cacheComponents, exportedEqual).bind(_this);\n    _this.cacheComponents(props.components);\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n    var selectValue = cleanValue(value);\n    var menuOptions = _this.buildMenuOptions(props, selectValue);\n\n    _this.state.menuOptions = menuOptions;\n    _this.state.selectValue = selectValue;\n    return _this;\n  } // TODO\n\n\n  createClass(Select, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n\n
       if (this.props.autoFocus) {\n        this.focusInput();\n      }\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(nextProps) {\n      var _props = this.props,\n          options = _props.options,\n          value = _props.value,\n          inputValue = _props.inputValue;\n      // re-cache custom components\n\n      this.cacheComponents(nextProps.components);\n      // rebuild the menu options\n      if (nextProps.value !== value || nextProps.options !== options || nextProps.inputValue !== inputValue) {\n        var _selectValue = cleanValue(nextProps.value);\n        var _menuOptions = this.buildMenuOptions(nextProps, _selectValue);\n        var _focusedValue = this.getNextFocusedValue(_selectValue);\n        var _focusedOption = this.getNextFocusedOption(_menuOptions.focusable);\n        this.setState({ menuOptions: _menuOptions, selectValue: _selectValue, focusedOption: _focusedOption, focusedValue: _focusedValue });\n    
   }\n      // some updates should toggle the state of the input visibility\n      if (this.inputIsHiddenAfterUpdate != null) {\n        this.setState({\n          inputIsHidden: this.inputIsHiddenAfterUpdate\n        });\n        delete this.inputIsHiddenAfterUpdate;\n      }\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      var _props2 = this.props,\n          isDisabled = _props2.isDisabled,\n          menuIsOpen = _props2.menuIsOpen;\n      var isFocused = this.state.isFocused;\n\n\n      if (\n      // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled ||\n      // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n\n      // scroll the focused option into view if necessary\n      if (this.menuListRef && this.focusedOp
 tionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n      }\n      this.scrollToFocusedOptionOnUpdate = false;\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n  }, {\n    key: 'onMenuOpen',\n\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: 'onMenuClose',\n    value: function onMenuClose() {\n      var _props3 = this.props,\n          isSearchable = _props3.isSearchable,\n          isMulti = _props3.isMulti;\n\n      this.announceAriaLiveContext({\n        event: 'input',\n        context: { isSearchable: isSearchable, isMulti: isMulti }\n      });\n      this.onInputCh
 ange('', { action: 'menu-close' });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: 'onInputChange',\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    }\n\n    // ==============================\n    // Methods\n    // ==============================\n\n  }, {\n    key: 'focusInput',\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: 'blurInput',\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    }\n\n    // aliased for consumers\n\n  }, {\n    key: 'openMenu',\n    value: function openMenu(focusOption) {\n      var _state = this.state,\n          menuOptions = _state.menuOptions,\n          selectValue = _state.selectValue;\n      var isMulti = this.props.isMulti;\n\n      var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n      if (!isMulti) {\n 
        var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      }\n\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.inputIsHiddenAfterUpdate = false;\n\n      this.onMenuOpen();\n      this.setState({\n        focusedValue: null,\n        focusedOption: menuOptions.focusable[openAtIndex]\n      });\n\n      this.announceAriaLiveContext({ event: 'menu' });\n    }\n  }, {\n    key: 'focusValue',\n    value: function focusValue(direction) {\n      var _props4 = this.props,\n          isMulti = _props4.isMulti,\n          isSearchable = _props4.isSearchable;\n      var _state2 = this.state,\n          selectValue = _state2.selectValue,\n          focusedValue = _state2.focusedValue;\n\n      // Only multiselects support value focusing\n\n      if (!isMulti) return;\n\n      this.setState({\n        focusedOption: null\n      });\n\n      var focusedIndex = selectValue.
 indexOf(focusedValue);\n      if (!focusedValue) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({ event: 'value' });\n      }\n\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n          break;\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n          break;\n      }\n\n      if (nextFocus === -1) {\n        this.announceAriaLiveContext({\n          event: 'input',\n          context: { isSearchable:
  isSearchable, isMulti: isMulti }\n        });\n      }\n\n      this.setState({\n        inputIsHidden: nextFocus === -1 ? false : true,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: 'focusOption',\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var pageSize = this.props.pageSize;\n      var _state3 = this.state,\n          focusedOption = _state3.focusedOption,\n          menuOptions = _state3.menuOptions;\n\n      var options = menuOptions.focusable;\n\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n      var focusedIndex = options.indexOf(focusedOption);\n      if (!focusedOption) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({ event: 'menu' });\n      }\n\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else 
 if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null\n      });\n    }\n  }, {\n    key: 'getTheme',\n\n\n    // ==============================\n    // Getters\n    // ==============================\n\n    value: function getTheme() {\n      // Use the default theme if there are no customizations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      }\n      // If the theme prop is a function, assume
  the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      }\n      // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n      return _extends({}, defaultTheme, this.props.theme);\n    }\n  }, {\n    key: 'getCommonProps',\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n          getStyles = this.getStyles,\n          setValue = this.setValue,\n          selectOption = this.selectOption,\n          props = this.props;\n      var classNamePrefix = props.classNamePrefix,\n          isMulti = props.isMulti,\n          isRtl = props.isRtl,\n          options = props.options;\n      var selectValue = this.state.selectValue;\n\n      var hasValue = this.hasValue();\n      var getValue = function getValue() {\n        return selectValue;\n      };\n      v
 ar cxPrefix = classNamePrefix;\n\n      var cx = classNames.bind(null, cxPrefix);\n      return {\n        cx: cx,\n        clearValue: clearValue,\n        getStyles: getStyles,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        setValue: setValue,\n        selectProps: props,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: 'getNextFocusedValue',\n    value: function getNextFocusedValue(nextSelectValue) {\n      if (this.clearFocusValueOnUpdate) {\n        this.clearFocusValueOnUpdate = false;\n        return null;\n      }\n      var _state4 = this.state,\n          focusedValue = _state4.focusedValue,\n          lastSelectValue = _state4.selectValue;\n\n      var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n      if (lastFocusedIndex > -1) {\n        var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n    
     if (nextFocusedIndex > -1) {\n          // the focused value is still in the selectValue, return it\n          return focusedValue;\n        } else if (lastFocusedIndex < nextSelectValue.length) {\n          // the focusedValue is not present in the next selectValue array by\n          // reference, so return the new value at the same index\n          return nextSelectValue[lastFocusedIndex];\n        }\n      }\n      return null;\n    }\n  }, {\n    key: 'getNextFocusedOption',\n    value: function getNextFocusedOption(options) {\n      var lastFocusedOption = this.state.focusedOption;\n\n      return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n    }\n\n    // ==============================\n    // Helpers\n    // ==============================\n\n  }, {\n    key: 'hasValue',\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n\n      return selectValue.length > 0;\n    }\n 
  }, {\n    key: 'hasOptions',\n    value: function hasOptions() {\n      return !!this.state.menuOptions.render.length;\n    }\n  }, {\n    key: 'countOptions',\n    value: function countOptions() {\n      return this.state.menuOptions.focusable.length;\n    }\n  }, {\n    key: 'isClearable',\n    value: function isClearable() {\n      var _props5 = this.props,\n          isClearable = _props5.isClearable,\n          isMulti = _props5.isMulti;\n\n      // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n\n      if (isClearable === undefined) return isMulti;\n\n      return isClearable;\n    }\n  }, {\n    key: 'isOptionDisabled',\n    value: function isOptionDisabled$$1(option, selectValue) {\n      return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n    }\n  }, {\n    key: 'isOptionSelected',\n    value: function isOptionSelected(option, selectValue) {\n      var _this2 = 
 this;\n\n      if (selectValue.indexOf(option) > -1) return true;\n      if (typeof this.props.isOptionSelected === 'function') {\n        return this.props.isOptionSelected(option, selectValue);\n      }\n      var candidate = this.getOptionValue(option);\n      return selectValue.some(function (i) {\n        return _this2.getOptionValue(i) === candidate;\n      });\n    }\n  }, {\n    key: 'filterOption',\n    value: function filterOption(option, inputValue) {\n      return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n    }\n  }, {\n    key: 'formatOptionLabel',\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var _inputValue = this.props.inputValue;\n        var _selectValue2 = this.state.selectValue;\n\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: _inputValue,\n          selectValue: _selectValue2\n      
   });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: 'formatGroupLabel',\n    value: function formatGroupLabel$$1(data) {\n      return this.props.formatGroupLabel(data);\n    }\n\n    // ==============================\n    // Mouse Handlers\n    // ==============================\n\n  }, {\n    key: 'startListeningComposition',\n\n\n    // ==============================\n    // Composition Handlers\n    // ==============================\n\n    value: function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: 'stopListeningComposition',\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('composition
 start', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: 'startListeningToTouch',\n\n\n    // ==============================\n    // Touch Handlers\n    // ==============================\n\n    value: function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: 'stopListeningToTouch',\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n 
    }\n\n    // ==============================\n    // Focus Handlers\n    // ==============================\n\n    // ==============================\n    // Keyboard Handlers\n    // ==============================\n\n  }, {\n    key: 'buildMenuOptions',\n\n\n    // ==============================\n    // Menu Options\n    // ==============================\n\n    value: function buildMenuOptions(props, selectValue) {\n      var _this3 = this;\n\n      var _props$inputValue = props.inputValue,\n          inputValue = _props$inputValue === undefined ? '' : _props$inputValue,\n          options = props.options;\n\n\n      var toOption = function toOption(option, id) {\n        var isDisabled = _this3.isOptionDisabled(option, selectValue);\n        var isSelected = _this3.isOptionSelected(option, selectValue);\n        var label = _this3.getOptionLabel(option);\n        var value = _this3.getOptionValue(option);\n\n        if (_this3.shouldHideSelectedOptions() && isSelected || !_
 this3.filterOption({ label: label, value: value, data: option }, inputValue)) {\n          return;\n        }\n\n        var onHover = isDisabled ? undefined : function () {\n          return _this3.onOptionHover(option);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this3.selectOption(option);\n        };\n        var optionId = _this3.getElementId('option') + '-' + id;\n\n        return {\n          innerProps: {\n            id: optionId,\n            onClick: onSelect,\n            onMouseMove: onHover,\n            onMouseOver: onHover,\n            role: 'option',\n            tabIndex: -1\n          },\n          data: option,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: 'option',\n          value: value\n        };\n      };\n\n      return options.reduce(function (acc, item, itemIndex) {\n        if (item.options) {\n          // TODO 
 needs a tidier implementation\n          if (!_this3.hasGroups) _this3.hasGroups = true;\n\n          var items = item.options;\n\n          var children = items.map(function (child, i) {\n            var option = toOption(child, itemIndex + '-' + i);\n            if (option && !option.isDisabled) acc.focusable.push(child);\n            return option;\n          }).filter(Boolean);\n          if (children.length) {\n            var groupId = _this3.getElementId('group') + '-' + itemIndex;\n            acc.render.push({\n              type: 'group',\n              key: groupId,\n              data: item,\n              options: children\n            });\n          }\n        } else {\n          var option = toOption(item, '' + itemIndex);\n          if (option) {\n            acc.render.push(option);\n            if (!option.isDisabled) acc.focusable.push(item);\n          }\n        }\n        return acc;\n      }, { render: [], focusable: [] });\n    }\n\n    // ===========
 ===================\n    // Renderers\n    // ==============================\n\n  }, {\n    key: 'constructAriaLiveMessage',\n    value: function constructAriaLiveMessage() {\n      var _state5 = this.state,\n          ariaLiveContext = _state5.ariaLiveContext,\n          selectValue = _state5.selectValue,\n          focusedValue = _state5.focusedValue,\n          focusedOption = _state5.focusedOption;\n      var _props6 = this.props,\n          options = _props6.options,\n          menuIsOpen = _props6.menuIsOpen,\n          inputValue = _props6.inputValue,\n          screenReaderStatus = _props6.screenReaderStatus;\n\n      // An aria live message representing the currently focused value in the select.\n\n      var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n        focusedValue: focusedValue,\n        getOptionLabel: this.getOptionLabel,\n        selectValue: selectValue\n      }) : '';\n      // An aria live message representing the currently focused option in the 
 select.\n      var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n        focusedOption: focusedOption,\n        getOptionLabel: this.getOptionLabel,\n        options: options\n      }) : '';\n      // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n      var resultsMsg = resultsAriaMessage({\n        inputValue: inputValue,\n        screenReaderMessage: screenReaderStatus({ count: this.countOptions() })\n      });\n\n      return focusedValueMsg + ' ' + focusedOptionMsg + ' ' + resultsMsg + ' ' + ariaLiveContext;\n    }\n  }, {\n    key: 'renderInput',\n    value: function renderInput() {\n      var _props7 = this.props,\n          isDisabled = _props7.isDisabled,\n          isSearchable = _props7.isSearchable,\n          inputId = _props7.inputId,\n          inputValue = _props7.inputValue,\n          tabIndex = _props7.tabIndex;\n      var Input = this.components.Input;\n      var inputIsHidden
  = this.state.inputIsHidden;\n\n\n      var id = inputId || this.getElementId('input');\n\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DummyInput, {\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          readOnly: true,\n          tabIndex: tabIndex,\n          value: ''\n        });\n      }\n\n      // aria attributes makes the JSX \"noisy\", separated for clarity\n      var ariaAttributes = {\n        'aria-autocomplete': 'list',\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby']\n      };\n\n      var _commonProps = this.commonProps,\n          cx = _commonProps.cx,\n          theme = _commonProps.theme;\n\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElem
 ent(Input, _extends({\n        autoCapitalize: 'none',\n        autoComplete: 'off',\n        autoCorrect: 'off',\n        cx: cx,\n        getStyles: this.getStyles,\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        spellCheck: 'false',\n        tabIndex: tabIndex,\n        theme: theme,\n        type: 'text',\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: 'renderPlaceholderOrValue',\n    value: function renderPlaceholderOrValue() {\n      var _this4 = this;\n\n      var _components = this.components,\n          MultiValue = _components.MultiValue,\n          MultiValueContainer = _components.MultiValueContainer,\n          MultiValueLabel = _components.MultiValueLabel,\n          MultiValueRemove = _components.MultiValueRemove,\n          SingleValue = _com
 ponents.SingleValue,\n          Placeholder = _components.Placeholder;\n      var commonProps = this.commonProps;\n      var _props8 = this.props,\n          controlShouldRenderValue = _props8.controlShouldRenderValue,\n          isDisabled = _props8.isDisabled,\n          isMulti = _props8.isMulti,\n          inputValue = _props8.inputValue,\n          placeholder = _props8.placeholder;\n      var _state6 = this.state,\n          selectValue = _state6.selectValue,\n          focusedValue = _state6.focusedValue;\n\n\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          Placeholder,\n          _extends({}, commonProps, { key: 'placeholder', isDisabled: isDisabled }),\n          placeholder\n        );\n      }\n\n      if (isMulti) {\n        var selectValues = selectValue.map(function (opt) {\n          var isFocused = opt === focusedValue;\n          return react__WEBPAC
 K_IMPORTED_MODULE_1___default.a.createElement(\n            MultiValue,\n            _extends({}, commonProps, {\n              components: {\n                Container: MultiValueContainer,\n                Label: MultiValueLabel,\n                Remove: MultiValueRemove\n              },\n              isFocused: isFocused,\n              isDisabled: isDisabled,\n              key: _this4.getOptionValue(opt),\n              removeProps: {\n                onClick: function onClick() {\n                  return _this4.removeValue(opt);\n                },\n                onTouchEnd: function onTouchEnd() {\n                  return _this4.removeValue(opt);\n                },\n                onMouseDown: function onMouseDown(e) {\n                  e.preventDefault();\n                  e.stopPropagation();\n                }\n              },\n              data: opt\n            }),\n            _this4.formatOptionLabel(opt, 'value')\n          );\n        });\n        return 
 selectValues;\n      }\n\n      if (inputValue) {\n        return null;\n      }\n\n      var singleValue = selectValue[0];\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        SingleValue,\n        _extends({}, commonProps, { data: singleValue, isDisabled: isDisabled }),\n        this.formatOptionLabel(singleValue, 'value')\n      );\n    }\n  }, {\n    key: 'renderClearIndicator',\n    value: function renderClearIndicator() {\n      var ClearIndicator = this.components.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _props9 = this.props,\n          isDisabled = _props9.isDisabled,\n          isLoading = _props9.isLoading;\n      var isFocused = this.state.isFocused;\n\n\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,
 \n        'aria-hidden': 'true'\n      };\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: 'renderLoadingIndicator',\n    value: function renderLoadingIndicator() {\n      var LoadingIndicator = this.components.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _props10 = this.props,\n          isDisabled = _props10.isDisabled,\n          isLoading = _props10.isLoading;\n      var isFocused = this.state.isFocused;\n\n\n      if (!LoadingIndicator || !isLoading) return null;\n\n      var innerProps = { 'aria-hidden': 'true' };\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: 'renderIndicatorSepara
 tor',\n    value: function renderIndicatorSeparator() {\n      var _components2 = this.components,\n          DropdownIndicator = _components2.DropdownIndicator,\n          IndicatorSeparator = _components2.IndicatorSeparator;\n\n      // separator doesn't make sense without the dropdown indicator\n\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: 'renderDropdownIndicator',\n    value: function renderDropdownIndicator() {\n      var DropdownIndicator = this.components.DropdownIndicator;\n\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.i
 sDisabled;\n      var isFocused = this.state.isFocused;\n\n\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: 'renderMenu',\n    value: function renderMenu() {\n      var _this5 = this;\n\n      var _components3 = this.components,\n          Group = _components3.Group,\n          GroupHeading = _components3.GroupHeading,\n          Menu$$1 = _components3.Menu,\n          MenuList$$1 = _components3.MenuList,\n          MenuPortal$$1 = _components3.MenuPortal,\n          LoadingMessage$$1 = _components3.LoadingMessage,\n          NoOptionsMessage$$1 = _components3.NoOptionsMessage,\n          Option = _compo
 nents3.Option;\n      var commonProps = this.commonProps;\n      var _state7 = this.state,\n          focusedOption = _state7.focusedOption,\n          menuOptions = _state7.menuOptions;\n      var _props11 = this.props,\n          captureMenuScroll = _props11.captureMenuScroll,\n          inputValue = _props11.inputValue,\n          isLoading = _props11.isLoading,\n          loadingMessage = _props11.loadingMessage,\n          minMenuHeight = _props11.minMenuHeight,\n          maxMenuHeight = _props11.maxMenuHeight,\n          menuIsOpen = _props11.menuIsOpen,\n          menuPlacement = _props11.menuPlacement,\n          menuPosition = _props11.menuPosition,\n          menuPortalTarget = _props11.menuPortalTarget,\n          menuShouldBlockScroll = _props11.menuShouldBlockScroll,\n          menuShouldScrollIntoView = _props11.menuShouldScrollIntoView,\n          noOptionsMessage = _props11.noOptionsMessage,\n          onMenuScrollToTop = _props11.onMenuScrollToTop,\n          onMen
 uScrollToBottom = _props11.onMenuScrollToBottom;\n\n\n      if (!menuIsOpen) return null;\n\n      // TODO: Internal Option Type here\n      var render = function render(props) {\n        // for performance, the menu options in state aren't changed when the\n        // focused option changes so we calculate additional props based on that\n        var isFocused = focusedOption === props.data;\n        props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          Option,\n          _extends({}, commonProps, props, { isFocused: isFocused }),\n          _this5.formatOptionLabel(props.data, 'menu')\n        );\n      };\n\n      var menuUI = void 0;\n\n      if (this.hasOptions()) {\n        menuUI = menuOptions.render.map(function (item) {\n          if (item.type === 'group') {\n            var type = item.type,\n                group = objectWithoutProperties(item, ['type']);\n\n           
  var headingId = item.key + '-heading';\n\n            return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n              Group,\n              _extends({}, commonProps, group, {\n                Heading: GroupHeading,\n                headingProps: {\n                  id: headingId\n                },\n                label: _this5.formatGroupLabel(item.data)\n              }),\n              item.options.map(function (option) {\n                return render(option);\n              })\n            );\n          } else if (item.type === 'option') {\n            return render(item);\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({ inputValue: inputValue });\n        if (message === null) return null;\n        menuUI = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          LoadingMessage$$1,\n          commonProps,\n          message\n        );\n      } else {\n        var _message = noOptionsMessage({ i
 nputValue: inputValue });\n        if (_message === null) return null;\n        menuUI = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          NoOptionsMessage$$1,\n          commonProps,\n          _message\n        );\n      }\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n\n      var menuElement = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        MenuPlacer,\n        _extends({}, commonProps, menuPlacementProps),\n        function (_ref2) {\n          var ref = _ref2.ref,\n              _ref2$placerProps = _ref2.placerProps,\n              placement = _ref2$placerProps.placement,\n              maxHeight = _ref2$placerProps.maxHeight;\n          return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n            Menu$$1,\n  
           _extends({}, commonProps, menuPlacementProps, {\n              innerRef: ref,\n              innerProps: {\n                onMouseDown: _this5.onMenuMouseDown,\n                onMouseMove: _this5.onMenuMouseMove\n              },\n              isLoading: isLoading,\n              placement: placement\n            }),\n            react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n              ScrollCaptorSwitch,\n              {\n                isEnabled: captureMenuScroll,\n                onTopArrive: onMenuScrollToTop,\n                onBottomArrive: onMenuScrollToBottom\n              },\n              react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n                ScrollBlock,\n                { isEnabled: menuShouldBlockScroll },\n                react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n                  MenuList$$1,\n                  _extends({}, commonProps, {\n                    innerRef: _this5.getMenuListRef,\n 
                    isLoading: isLoading,\n                    maxHeight: maxHeight\n                  }),\n                  menuUI\n                )\n              )\n            )\n          );\n        }\n      );\n\n      // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n      return menuPortalTarget || menuPosition === 'fixed' ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        MenuPortal$$1,\n        _extends({}, commonProps, {\n          appendTo: menuPortalTarget,\n          controlElement: this.controlRef,\n          menuPlacement: menuPlacement,\n          menuPosition: menuPosition\n        }),\n        menuElement\n      ) : menuElement;\n    }\n  }, {\n    key: 'renderFormField',\n    value: function renderFormField() {\n      var _this6 = this;\n\n      var _props12 = this.props,\n          delimit
 er = _props12.delimiter,\n          isDisabled = _props12.isDisabled,\n          isMulti = _props12.isMulti,\n          name = _props12.name;\n      var selectValue = this.state.selectValue;\n\n\n      if (!name || isDisabled) return;\n\n      if (isMulti) {\n        if (delimiter) {\n          var _value = selectValue.map(function (opt) {\n            return _this6.getOptionValue(opt);\n          }).join(delimiter);\n          return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('input', { name: name, type: 'hidden', value: _value });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('input', {\n              key: 'i-' + i,\n              name: name,\n              type: 'hidden',\n              value: _this6.getOptionValue(opt)\n            });\n          }) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('input', { name: n
 ame, type: 'hidden' });\n\n          return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n            'div',\n            null,\n            input\n          );\n        }\n      } else {\n        var _value2 = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('input', { name: name, type: 'hidden', value: _value2 });\n      }\n    }\n  }, {\n    key: 'renderLiveRegion',\n    value: function renderLiveRegion() {\n      if (!this.state.isFocused) return null;\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        A11yText,\n        { 'aria-live': 'assertive' },\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          'p',\n          { id: 'aria-selection-event' },\n          '\\xA0',\n          this.state.ariaLiveSelection\n        ),\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          'p',\n          { id: 'a
 ria-context' },\n          '\\xA0',\n          this.constructAriaLiveMessage()\n        )\n      );\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _components4 = this.components,\n          Control = _components4.Control,\n          IndicatorsContainer = _components4.IndicatorsContainer,\n          SelectContainer = _components4.SelectContainer,\n          ValueContainer = _components4.ValueContainer;\n      var _props13 = this.props,\n          className = _props13.className,\n          id = _props13.id,\n          isDisabled = _props13.isDisabled;\n      var isFocused = this.state.isFocused;\n\n\n      var commonProps = this.commonProps = this.getCommonProps();\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        SelectContainer,\n        _extends({}, commonProps, {\n          className: className,\n          innerProps: {\n            id: id,\n            onKeyDown: this.onKeyDown\n          },\n          isDisabled: 
 isDisabled,\n          isFocused: isFocused\n        }),\n        this.renderLiveRegion(),\n        react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          Control,\n          _extends({}, commonProps, {\n            innerRef: this.getControlRef,\n            innerProps: {\n              onMouseDown: this.onControlMouseDown,\n              onTouchEnd: this.onControlTouchEnd\n            },\n            isDisabled: isDisabled,\n            isFocused: isFocused\n          }),\n          react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n            ValueContainer,\n            _extends({}, commonProps, { isDisabled: isDisabled }),\n            this.renderPlaceholderOrValue(),\n            this.renderInput()\n          ),\n          react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n            IndicatorsContainer,\n            _extends({}, commonProps, { isDisabled: isDisabled }),\n            this.renderClearIndicator(),\n            this.renderLoad
 ingIndicator(),\n            this.renderIndicatorSeparator(),\n            this.renderDropdownIndicator()\n          )\n        ),\n        this.renderMenu(),\n        this.renderFormField()\n      );\n    }\n  }]);\n  return Select;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\nSelect.defaultProps = defaultProps;\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this7 = this;\n\n  this.state = {\n    ariaLiveSelection: '',\n    ariaLiveContext: '',\n    focusedOption: null,\n    focusedValue: null,\n    inputIsHidden: false,\n    isFocused: false,\n    isComposing: false,\n    menuOptions: { render: [], focusable: [] },\n    selectValue: []\n  };\n  this.blockOptionHover = false;\n  this.clearFocusValueOnUpdate = false;\n  this.hasGroups = false;\n  this.initialTouchX = 0;\n  this.initialTouchY = 0;\n  this.instancePrefix = '';\n  this.openAfterFocus = false;\n  this.scrollToFocusedOptionOnUpdate = false;\n  this.controlRef = null;\n\n  this.getC
 ontrolRef = function (ref) {\n    _this7.controlRef = ref;\n  };\n\n  this.focusedOptionRef = null;\n\n  this.getFocusedOptionRef = function (ref) {\n    _this7.focusedOptionRef = ref;\n  };\n\n  this.menuListRef = null;\n\n  this.getMenuListRef = function (ref) {\n    _this7.menuListRef = ref;\n  };\n\n  this.inputRef = null;\n\n  this.getInputRef = function (ref) {\n    _this7.inputRef = ref;\n  };\n\n  this.cacheComponents = function (components$$1) {\n    _this7.components = defaultComponents({ components: components$$1 });\n  };\n\n  this.focus = this.focusInput;\n  this.blur = this.blurInput;\n\n  this.setValue = function (newValue) {\n    var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n    var option = arguments[2];\n    var _props14 = _this7.props,\n        closeMenuOnSelect = _props14.closeMenuOnSelect,\n        isMulti = _props14.isMulti,\n        onChange = _props14.onChange;\n\n    _this7.onInputChange('', { actio
 n: 'set-value' });\n    if (closeMenuOnSelect) {\n      _this7.inputIsHiddenAfterUpdate = !isMulti;\n      _this7.onMenuClose();\n    }\n    // when the select value should change, we should reset focusedValue\n    _this7.clearFocusValueOnUpdate = true;\n    onChange(newValue, { action: action, option: option });\n  };\n\n  this.selectOption = function (newValue) {\n    var _props15 = _this7.props,\n        blurInputOnSelect = _props15.blurInputOnSelect,\n        isMulti = _props15.isMulti;\n\n\n    if (isMulti) {\n      var _selectValue3 = _this7.state.selectValue;\n\n      if (_this7.isOptionSelected(newValue, _selectValue3)) {\n        var candidate = _this7.getOptionValue(newValue);\n        _this7.setValue(_selectValue3.filter(function (i) {\n          return _this7.getOptionValue(i) !== candidate;\n        }), 'deselect-option', newValue);\n        _this7.announceAriaLiveSelection({\n          event: 'deselect-option',\n          context: { value: _this7.getOptionLabel(newValu
 e) }\n        });\n      } else {\n        _this7.setValue([].concat(toConsumableArray(_selectValue3), [newValue]), 'select-option', newValue);\n        _this7.announceAriaLiveSelection({\n          event: 'select-option',\n          context: { value: _this7.getOptionLabel(newValue) }\n        });\n      }\n    } else {\n      _this7.setValue(newValue, 'select-option');\n      _this7.announceAriaLiveSelection({\n        event: 'select-option',\n        context: { value: _this7.getOptionLabel(newValue) }\n      });\n    }\n\n    if (blurInputOnSelect) {\n      _this7.blurInput();\n    }\n  };\n\n  this.removeValue = function (removedValue) {\n    var onChange = _this7.props.onChange;\n    var selectValue = _this7.state.selectValue;\n\n    var candidate = _this7.getOptionValue(removedValue);\n    onChange(selectValue.filter(function (i) {\n      return _this7.getOptionValue(i) !== candidate;\n    }), {\n      action: 'remove-value',\n      removedValue: removedValue\n    });\n    _thi
 s7.announceAriaLiveSelection({\n      event: 'remove-value',\n      context: {\n        value: removedValue ? _this7.getOptionLabel(removedValue) : undefined\n      }\n    });\n    _this7.focusInput();\n  };\n\n  this.clearValue = function () {\n    var _props16 = _this7.props,\n        isMulti = _props16.isMulti,\n        onChange = _props16.onChange;\n\n    onChange(isMulti ? [] : null, { action: 'clear' });\n  };\n\n  this.popValue = function () {\n    var onChange = _this7.props.onChange;\n    var selectValue = _this7.state.selectValue;\n\n    var lastSelectedValue = selectValue[selectValue.length - 1];\n    _this7.announceAriaLiveSelection({\n      event: 'pop-value',\n      context: {\n        value: lastSelectedValue ? _this7.getOptionLabel(lastSelectedValue) : undefined\n      }\n    });\n    onChange(selectValue.slice(0, selectValue.length - 1), {\n      action: 'pop-value',\n      removedValue: lastSelectedValue\n    });\n  };\n\n  this.getOptionLabel = function (data) {\n
     return _this7.props.getOptionLabel(data);\n  };\n\n  this.getOptionValue = function (data) {\n    return _this7.props.getOptionValue(data);\n  };\n\n  this.getStyles = function (key, props) {\n    var base = defaultStyles[key](props);\n    base.boxSizing = 'border-box';\n    var custom = _this7.props.styles[key];\n    return custom ? custom(base, props) : base;\n  };\n\n  this.getElementId = function (element) {\n    return _this7.instancePrefix + '-' + element;\n  };\n\n  this.getActiveDescendentId = function () {\n    var menuIsOpen = _this7.props.menuIsOpen;\n    var _state8 = _this7.state,\n        menuOptions = _state8.menuOptions,\n        focusedOption = _state8.focusedOption;\n\n\n    if (!focusedOption || !menuIsOpen) return undefined;\n\n    var index = menuOptions.focusable.indexOf(focusedOption);\n    var option = menuOptions.render[index];\n\n    return option && option.key;\n  };\n\n  this.announceAriaLiveSelection = function (_ref3) {\n    var event = _ref
 3.event,\n        context = _ref3.context;\n\n    _this7.setState({\n      ariaLiveSelection: valueEventAriaMessage(event, context)\n    });\n  };\n\n  this.announceAriaLiveContext = function (_ref4) {\n    var event = _ref4.event,\n        context = _ref4.context;\n\n    _this7.setState({\n      ariaLiveContext: instructionsAriaMessage(event, _extends({}, context, {\n        label: _this7.props['aria-label']\n      }))\n    });\n  };\n\n  this.onMenuMouseDown = function (event) {\n    if (event.button !== 0) {\n      return;\n    }\n    event.stopPropagation();\n    event.preventDefault();\n    _this7.focusInput();\n  };\n\n  this.onMenuMouseMove = function (event) {\n    _this7.blockOptionHover = false;\n  };\n\n  this.onControlMouseDown = function (event) {\n    var openMenuOnClick = _this7.props.openMenuOnClick;\n\n    if (!_this7.state.isFocused) {\n      if (openMenuOnClick) {\n        _this7.openAfterFocus = true;\n      }\n      _this7.focusInput();\n    } else if (!_this7.p
 rops.menuIsOpen) {\n      _this7.openMenu('first');\n    } else {\n      _this7.onMenuClose();\n    }\n    // $FlowFixMe HTMLElement type does not have tagName property\n    if (event.target.tagName !== 'INPUT') {\n      event.preventDefault();\n    }\n  };\n\n  this.onDropdownIndicatorMouseDown = function (event) {\n    // ignore mouse events that weren't triggered by the primary button\n    if (event && event.type === 'mousedown' && event.button !== 0) {\n      return;\n    }\n    if (_this7.props.isDisabled) return;\n    var _props17 = _this7.props,\n        isMulti = _props17.isMulti,\n        menuIsOpen = _props17.menuIsOpen;\n\n    _this7.focusInput();\n    if (menuIsOpen) {\n      _this7.inputIsHiddenAfterUpdate = !isMulti;\n      _this7.onMenuClose();\n    } else {\n      _this7.openMenu('first');\n    }\n    event.preventDefault();\n    event.stopPropagation();\n  };\n\n  this.onClearIndicatorMouseDown = function (event) {\n    // ignore mouse events that we
 ren't triggered by the primary button\n    if (event && event.type === 'mousedown' && event.button !== 0) {\n      return;\n    }\n    _this7.clearValue();\n    event.stopPropagation();\n    _this7.openAfterFocus = false;\n    setTimeout(function () {\n      return _this7.focusInput();\n    });\n  };\n\n  this.onScroll = function (event) {\n    if (typeof _this7.props.closeMenuOnScroll === 'boolean') {\n      if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n        _this7.props.onMenuClose();\n      }\n    } else if (typeof _this7.props.closeMenuOnScroll === 'function') {\n      if (_this7.props.closeMenuOnScroll(event)) {\n        _this7.props.onMenuClose();\n      }\n    }\n  };\n\n  this.onCompositionStart = function () {\n    _this7.setState({\n      isComposing: true\n    });\n  };\n\n  this.onCompositionEnd = function () {\n    _this7.setState({\n      isComposing: false\n    });\n  };\n\n  this.onTouchStart = function (_re
 f5) {\n    var _ref5$touches = slicedToArray(_ref5.touches, 1),\n        touch = _ref5$touches[0];\n\n    _this7.initialTouchX = touch.clientX;\n    _this7.initialTouchY = touch.clientY;\n    _this7.userIsDragging = false;\n  };\n\n  this.onTouchMove = function (_ref6) {\n    var _ref6$touches = slicedToArray(_ref6.touches, 1),\n        touch = _ref6$touches[0];\n\n    var deltaX = Math.abs(touch.clientX - _this7.initialTouchX);\n    var deltaY = Math.abs(touch.clientY - _this7.initialTouchY);\n    var moveThreshold = 5;\n\n    _this7.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n  };\n\n  this.onTouchEnd = function (event) {\n    if (_this7.userIsDragging) return;\n\n    // type cast the EventTarget\n    var target = event.target;\n\n    // close the menu if the user taps outside\n    if (_this7.controlRef && !_this7.controlRef.contains(target) && _this7.menuListRef && !_this7.menuListRef.contains(target)) {\n      _this7.blurInpu
 t();\n    }\n\n    // reset move vars\n    _this7.initialTouchX = 0;\n    _this7.initialTouchY = 0;\n  };\n\n  this.onControlTouchEnd = function (event) {\n    if (_this7.userIsDragging) return;\n\n    _this7.onControlMouseDown(event);\n  };\n\n  this.onClearIndicatorTouchEnd = function (event) {\n    if (_this7.userIsDragging) return;\n\n    _this7.onClearIndicatorMouseDown(event);\n  };\n\n  this.onDropdownIndicatorTouchEnd = function (event) {\n    if (_this7.userIsDragging) return;\n\n    _this7.onDropdownIndicatorMouseDown(event);\n  };\n\n  this.handleInputChange = function (event) {\n    var inputValue = event.currentTarget.value;\n    _this7.inputIsHiddenAfterUpdate = false;\n    _this7.onInputChange(inputValue, { action: 'input-change' });\n    _this7.onMenuOpen();\n  };\n\n  this.onInputFocus = function (event) {\n    var _props18 = _this7.props,\n        isSearchable = _props18.isSearchable,\n        isMulti = _props18.isMulti;\n\n    if (_this7.props.onFocus) {\n      _t
 his7.props.onFocus(event);\n    }\n    _this7.inputIsHiddenAfterUpdate = false;\n    _this7.announceAriaLiveContext({\n      event: 'input',\n      context: { isSearchable: isSearchable, isMulti: isMulti }\n    });\n    _this7.setState({\n      isFocused: true\n    });\n    if (_this7.openAfterFocus || _this7.props.openMenuOnFocus) {\n      _this7.openMenu('first');\n    }\n    _this7.openAfterFocus = false;\n  };\n\n  this.onInputBlur = function (event) {\n    if (_this7.props.onBlur) {\n      _this7.props.onBlur(event);\n    }\n    _this7.onInputChange('', { action: 'input-blur' });\n    _this7.onMenuClose();\n    _this7.setState({\n      focusedValue: null,\n      isFocused: false\n    });\n  };\n\n  this.onOptionHover = function (focusedOption) {\n    if (_this7.blockOptionHover || _this7.state.focusedOption === focusedOption) {\n      return;\n    }\n    _this7.setState({ focusedOption: focusedOption });\n  };\n\n  this.shouldHideSelectedOptions = function () {\n    var _props1
 9 = _this7.props,\n        hideSelectedOptions = _props19.hideSelectedOptions,\n        isMulti = _props19.isMulti;\n\n    if (hideSelectedOptions === undefined) return isMulti;\n    return hideSelectedOptions;\n  };\n\n  this.onKeyDown = function (event) {\n    var _props20 = _this7.props,\n        isMulti = _props20.isMulti,\n        backspaceRemovesValue = _props20.backspaceRemovesValue,\n        escapeClearsValue = _props20.escapeClearsValue,\n        inputValue = _props20.inputValue,\n        isClearable = _props20.isClearable,\n        isDisabled = _props20.isDisabled,\n        menuIsOpen = _props20.menuIsOpen,\n        onKeyDown = _props20.onKeyDown,\n        tabSelectsValue = _props20.tabSelectsValue,\n        openMenuOnFocus = _props20.openMenuOnFocus;\n    var _state9 = _this7.state,\n        isComposing = _state9.isComposing,\n        focusedOption = _state9.focusedOption,\n        focusedValue = _state9.focusedValue,\n        selectValue = _state9.selectValue;\n\n\n    i
 f (isDisabled) return;\n\n    if (typeof onKeyDown === 'function') {\n      onKeyDown(event);\n      if (event.defaultPrevented) {\n        return;\n      }\n    }\n\n    // Block option hover events when the user has just pressed a key\n    _this7.blockOptionHover = true;\n    switch (event.key) {\n      case 'ArrowLeft':\n        if (!isMulti || inputValue) return;\n        _this7.focusValue('previous');\n        break;\n      case 'ArrowRight':\n        if (!isMulti || inputValue) return;\n        _this7.focusValue('next');\n        break;\n      case 'Delete':\n      case 'Backspace':\n        if (inputValue) return;\n        if (focusedValue) {\n          _this7.removeValue(focusedValue);\n        } else {\n          if (!backspaceRemovesValue) return;\n          _this7.popValue();\n        }\n        break;\n      case 'Tab':\n        if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n        // don't capture the event if the menu opens on focus and th
 e focused\n        // option is already selected; it breaks the flow of navigation\n        openMenuOnFocus && _this7.isOptionSelected(focusedOption, selectValue)) {\n          return;\n        }\n        _this7.selectOption(focusedOption);\n        break;\n      case 'Enter':\n        if (menuIsOpen) {\n          if (!focusedOption) return;\n          if (isComposing) return;\n          _this7.selectOption(focusedOption);\n        } else {\n          _this7.focusOption('first');\n        }\n        break;\n      case 'Escape':\n        if (menuIsOpen) {\n          _this7.inputIsHiddenAfterUpdate = false;\n          _this7.onInputChange('', { action: 'menu-close' });\n          _this7.onMenuClose();\n        } else if (isClearable && escapeClearsValue) {\n          _this7.clearValue();\n        }\n        break;\n      case ' ':\n        // space\n        if (inputValue) {\n          return;\n        }\n        if (!menuIsOpen) {\n          _this7.openMenu('first');\
 n          break;\n        }\n        if (!focusedOption) return;\n        _this7.selectOption(focusedOption);\n        break;\n      case 'ArrowUp':\n        if (menuIsOpen) {\n          _this7.focusOption('up');\n        } else {\n          _this7.openMenu('last');\n        }\n        break;\n      case 'ArrowDown':\n        if (menuIsOpen) {\n          _this7.focusOption('down');\n        } else {\n          _this7.openMenu('first');\n        }\n        break;\n      case 'PageUp':\n        if (!menuIsOpen) return;\n        _this7.focusOption('pageup');\n        break;\n      case 'PageDown':\n        if (!menuIsOpen) return;\n        _this7.focusOption('pagedown');\n        break;\n      case 'Home':\n        if (!menuIsOpen) return;\n        _this7.focusOption('first');\n        break;\n      case 'End':\n        if (!menuIsOpen) return;\n        _this7.focusOption('last');\n        break;\n      default:\n        return;\n    }\n    event.preventDefault();\n  };\n};\n\nvar man
 ageState = function manageState(SelectComponent) {\n  var _class, _temp2;\n\n  return _temp2 = _class = function (_Component) {\n    inherits(StateManager, _Component);\n\n    function StateManager() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      classCallCheck(this, StateManager);\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, (_ref = StateManager.__proto__ || Object.getPrototypeOf(StateManager)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n        inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n        menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n        value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n      }, _this.on
 Change = function (value, actionMeta) {\n        _this.callProp('onChange', value, actionMeta);\n        _this.setState({ value: value });\n      }, _this.onInputChange = function (value, actionMeta) {\n        // TODO: for backwards compatibility, we allow the prop to return a new\n        // value, but now inputValue is a controllable prop we probably shouldn't\n        var newValue = _this.callProp('onInputChange', value, actionMeta);\n        _this.setState({\n          inputValue: newValue !== undefined ? newValue : value\n        });\n      }, _this.onMenuOpen = function () {\n        _this.callProp('onMenuOpen');\n        _this.setState({ menuIsOpen: true });\n      }, _this.onMenuClose = function () {\n        _this.callProp('onMenuClose');\n        _this.setState({ menuIsOpen: false });\n      }, _temp), possibleConstructorReturn(_this, _ret);\n    }\n\n    createClass(StateManager, [{\n      key: 'focus',\n      value: function focus() {\n        this.select.focus();\n    
   }\n    }, {\n      key: 'blur',\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: 'getProp',\n      value: function getProp(key) {\n        return this.props[key] !== undefined ? this.props[key] : this.state[key];\n      }\n    }, {\n      key: 'callProp',\n      value: function callProp(name) {\n        if (typeof this.props[name] === 'function') {\n          var _props;\n\n          for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n\n          return (_props = this.props)[name].apply(_props, toConsumableArray(args));\n        }\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _this2 = this;\n\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectComponent, _extends({}, this.props, {\n          ref: function ref(_ref2) {\n            _this2.sel
 ect = _ref2;\n          },\n          inputValue: this.getProp('inputValue'),\n          menuIsOpen: this.getProp('menuIsOpen'),\n          onChange: this.onChange,\n          onInputChange: this.onInputChange,\n          onMenuClose: this.onMenuClose,\n          onMenuOpen: this.onMenuOpen,\n          value: this.getProp('value')\n        }));\n      }\n    }]);\n    return StateManager;\n  }(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]), _class.defaultProps = {\n    defaultInputValue: '',\n    defaultMenuIsOpen: false,\n    defaultValue: null\n  }, _temp2;\n};\n\nvar defaultProps$1 = {\n  cacheOptions: false,\n  defaultOptions: false\n};\n\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class = function (_Component) {\n    inherits(Async, _Component);\n\n    function Async(props) {\n      classCallCheck(this, Async);\n\n      var _this = possibleConstructorReturn(this, (Async.__proto__ || Object.getProtot
 ypeOf(Async)).call(this));\n\n      _this.mounted = false;\n      _this.optionsCache = {};\n\n      _this.handleInputChange = function (newValue, actionMeta) {\n        var _this$props = _this.props,\n            cacheOptions = _this$props.cacheOptions,\n            onInputChange = _this$props.onInputChange;\n        // TODO\n\n        var inputValue = handleInputChange(newValue, actionMeta, onInputChange);\n        if (!inputValue) {\n          delete _this.lastRequest;\n          _this.setState({\n            inputValue: '',\n            loadedInputValue: '',\n            loadedOptions: [],\n            isLoading: false,\n            passEmptyOptions: false\n          });\n          return;\n        }\n        if (cacheOptions && _this.optionsCache[inputValue]) {\n          _this.setState({\n            inputValue: inputValue,\n            loadedInputValue: inputValue,\n            loadedOptions: _this.optionsCache[inputValue],\n            isLoading: false,\n            p
 assEmptyOptions: false\n          });\n        } else {\n          var request = _this.lastRequest = {};\n          _this.setState({\n            inputValue: inputValue,\n            isLoading: true,\n            passEmptyOptions: !_this.state.loadedInputValue\n          }, function () {\n            _this.loadOptions(inputValue, function (options) {\n              if (!_this.mounted) return;\n              if (options) {\n                _this.optionsCache[inputValue] = options;\n              }\n              if (request !== _this.lastRequest) return;\n              delete _this.lastRequest;\n              _this.setState({\n                isLoading: false,\n                loadedInputValue: inputValue,\n                loadedOptions: options || [],\n                passEmptyOptions: false\n              });\n            });\n          });\n        }\n        return inputValue;\n      };\n\n      _this.state = {\n        defaultOptions: Array.isArray(props.defaultOptions) ? props.
 defaultOptions : undefined,\n        inputValue: '',\n        isLoading: props.defaultOptions === true ? true : false,\n        loadedOptions: [],\n        passEmptyOptions: false\n      };\n      return _this;\n    }\n\n    createClass(Async, [{\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        var _this2 = this;\n\n        this.mounted = true;\n        var defaultOptions = this.props.defaultOptions;\n\n        if (defaultOptions === true) {\n          this.loadOptions('', function (options) {\n            if (!_this2.mounted) return;\n            var isLoading = !!_this2.lastRequest;\n            _this2.setState({ defaultOptions: options || [], isLoading: isLoading });\n          });\n        }\n      }\n    }, {\n      key: 'componentWillReceiveProps',\n      value: function componentWillReceiveProps(nextProps) {\n        // if the cacheOptions prop changes, clear the cache\n        if (nextProps.cacheOptions !== this.props.cacheOptions) {\n  
         this.optionsCache = {};\n        }\n        if (nextProps.defaultOptions !== this.props.defaultOptions) {\n          this.setState({\n            defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined\n          });\n        }\n      }\n    }, {\n      key: 'componentWillUnmount',\n      value: function componentWillUnmount() {\n        this.mounted = false;\n      }\n    }, {\n      key: 'focus',\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: 'blur',\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: 'loadOptions',\n      value: function loadOptions(inputValue, callback) {\n        var loadOptions = this.props.loadOptions;\n\n        if (!loadOptions) return callback();\n        var loader = loadOptions(inputValue, callback);\n        if (loader && typeof loader.then === 'function') {\n          loader.then(callback, function () {\n        
     return callback();\n          });\n        }\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _this3 = this;\n\n        var _props = this.props,\n            loadOptions = _props.loadOptions,\n            props = objectWithoutProperties(_props, ['loadOptions']);\n        var _state = this.state,\n            defaultOptions = _state.defaultOptions,\n            inputValue = _state.inputValue,\n            isLoading = _state.isLoading,\n            loadedInputValue = _state.loadedInputValue,\n            loadedOptions = _state.loadedOptions,\n            passEmptyOptions = _state.passEmptyOptions;\n\n        var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n        return (\n          // $FlowFixMe\n          react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectComponent, _extends({}, props, {\n            filterOption: this.props.filterOption || null,\n          
   ref: function ref(_ref) {\n              _this3.select = _ref;\n            },\n            options: options,\n            isLoading: isLoading,\n            onInputChange: this.handleInputChange\n          }))\n        );\n      }\n    }]);\n    return Async;\n  }(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]), _class.defaultProps = defaultProps$1, _temp;\n};\nvar Async = makeAsyncSelect(manageState(Select));\n\nvar compareOption = function compareOption(inputValue, option) {\n  var candidate = inputValue.toLowerCase();\n  return option.value.toLowerCase() === candidate || option.label.toLowerCase() === candidate;\n};\n\nvar builtins = {\n  formatCreateLabel: function formatCreateLabel(inputValue) {\n    return 'Create \"' + inputValue + '\"';\n  },\n  isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n    return !(!inputValue || selectValue.some(function (option) {\n      return compareOption(inputValue, option);\n    }
 ) || selectOptions.some(function (option) {\n      return compareOption(inputValue, option);\n    }));\n  },\n  getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n    return {\n      label: optionLabel,\n      value: inputValue,\n      __isNew__: true\n    };\n  }\n};\n\nvar defaultProps$2 = _extends({\n  allowCreateWhileLoading: false,\n  createOptionPosition: 'last'\n}, builtins);\n\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class = function (_Component) {\n    inherits(Creatable, _Component);\n\n    function Creatable(props) {\n      classCallCheck(this, Creatable);\n\n      var _this = possibleConstructorReturn(this, (Creatable.__proto__ || Object.getPrototypeOf(Creatable)).call(this, props));\n\n      _this.onChange = function (newValue, actionMeta) {\n        var _this$props = _this.props,\n            getNewOptionData = _this$props.getNewOptionData,\n            inputValue = _this$
 props.inputValue,\n            isMulti = _this$props.isMulti,\n            onChange = _this$props.onChange,\n            onCreateOption = _this$props.onCreateOption,\n            value = _this$props.value;\n\n        if (actionMeta.action !== 'select-option') {\n          return onChange(newValue, actionMeta);\n        }\n        var newOption = _this.state.newOption;\n\n        var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n        if (valueArray[valueArray.length - 1] === newOption) {\n          if (onCreateOption) onCreateOption(inputValue);else {\n            var newOptionData = getNewOptionData(inputValue, inputValue);\n            var newActionMeta = { action: 'create-option' };\n            if (isMulti) {\n              onChange([].concat(toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n            } else {\n              onChange(newOptionData, newActionMeta);\n            }\n          }\n          return;\n        }\n        onC
 hange(newValue, actionMeta);\n      };\n\n      var options = props.options || [];\n      _this.state = {\n        newOption: undefined,\n        options: options\n      };\n      return _this;\n    }\n\n    createClass(Creatable, [{\n      key: 'componentWillReceiveProps',\n      value: function componentWillReceiveProps(nextProps) {\n        var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n            createOptionPosition = nextProps.createOptionPosition,\n            formatCreateLabel = nextProps.formatCreateLabel,\n            getNewOptionData = nextProps.getNewOptionData,\n            inputValue = nextProps.inputValue,\n            isLoading = nextProps.isLoading,\n            isValidNewOption = nextProps.isValidNewOption,\n            value = nextProps.value;\n\n        var options = nextProps.options || [];\n        var newOption = this.state.newOption;\n\n        if (isValidNewOption(inputValue, cleanValue(value), options)) {\n          newOption = getNewOpt
 ionData(inputValue, formatCreateLabel(inputValue));\n        } else {\n          newOption = undefined;\n        }\n        this.setState({\n          newOption: newOption,\n          options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(toConsumableArray(options)) : [].concat(toConsumableArray(options), [newOption]) : options\n        });\n      }\n    }, {\n      key: 'focus',\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: 'blur',\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _this2 = this;\n\n        var props = objectWithoutProperties(this.props, []);\n        var options = this.state.options;\n\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectComponent, _extends({}, props, {\n          ref: function ref(_ref) {\n            _thi
 s2.select = _ref;\n          },\n          options: options,\n          onChange: this.onChange\n        }));\n      }\n    }]);\n    return Creatable;\n  }(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]), _class.defaultProps = defaultProps$2, _temp;\n};\nvar Creatable = manageState(makeCreatableSelect(Select));\n\nvar AsyncCreatable = makeAsyncSelect(manageState(makeCreatableSelect(Select)));\n\n// ==============================\n// Fade Transition\n// ==============================\n\nvar Fade = function Fade(_ref) {\n  var Tag = _ref.component,\n      _ref$duration = _ref.duration,\n      duration = _ref$duration === undefined ? 1 : _ref$duration,\n      inProp = _ref.in,\n      onExited = _ref.onExited,\n      props = objectWithoutProperties(_ref, ['component', 'duration', 'in', 'onExited']);\n\n  var transition = {\n    entering: { opacity: 0 },\n    entered: { opacity: 1, transition: 'opacity ' + duration + 'ms' },\n    exiting: { opacity: 0 },\n    exited: { opac
 ity: 0 }\n  };\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    react_transition_group__WEBPACK_IMPORTED_MODULE_7__[\"Transition\"],\n    { mountOnEnter: true, unmountOnExit: true, 'in': inProp, timeout: duration },\n    function (state) {\n      var innerProps = {\n        style: _extends({}, transition[state])\n      };\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Tag, _extends({ innerProps: innerProps }, props));\n    }\n  );\n};\nvar collapseDuration = 260;\n\n// wrap each MultiValue with a collapse transition; decreases width until\n// finally removing from DOM\nvar Collapse = function (_Component) {\n  inherits(Collapse, _Component);\n\n  function Collapse() {\n    var _ref2;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, Collapse);\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, (_ref2 = Collapse.__proto__ || Object.getPrototypeOf(Collapse)).call.apply(_ref2, [this].concat(args))), _this), _this.duration = collapseDuration, _this.state = { width: 'auto' }, _this.transition = {\n      exiting: { width: 0, transition: 'width ' + _this.duration + 'ms ease-out' },\n      exited: { width: 0 }\n    }, _this.getWidth = function (ref) {\n      if (ref && isNaN(_this.state.width)) {\n        // cannot use `offsetWidth` because it is rounded\n        var _ref$getBoundingClien = ref.getBoundingClientRect(),\n            _width = _ref$getBoundingClien.width;\n\n        _this.setState({ width: _width });\n      }\n    }, _this.getStyle = function (width) {\n      return {\n        overflow: 'hidden',\n        whiteSpace: 'nowrap',\n        width: width\n      };\n    }, _this.getTransition = function (state) {\n      return _this.transition[state];\n    }, _temp), possibleConstructorReturn(_this, _ret);\n  }\n\n  // widt
 h must be calculated; cannot transition from `undefined` to `number`\n\n\n  // get base styles\n\n\n  // get transition styles\n\n\n  createClass(Collapse, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          children = _props.children,\n          inProp = _props.in;\n      var width = this.state.width;\n\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n        react_transition_group__WEBPACK_IMPORTED_MODULE_7__[\"Transition\"],\n        {\n          enter: false,\n          mountOnEnter: true,\n          unmountOnExit: true,\n          'in': inProp,\n          timeout: this.duration\n        },\n        function (state) {\n          var style = _extends({}, _this2.getStyle(width), _this2.getTransition(state));\n          return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n            'div',\n            { ref: _this2.getWidth, style: style },\n            c
 hildren\n          );\n        }\n      );\n    }\n  }]);\n  return Collapse;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\n// strip transition props off before spreading onto select component\n// note we need to be explicit about innerRef for flow\nvar AnimatedInput = function AnimatedInput(WrappedComponent) {\n  return function (_ref) {\n    var inProp = _ref.in,\n        onExited = _ref.onExited,\n        appear = _ref.appear,\n        enter = _ref.enter,\n        exit = _ref.exit,\n        innerRef = _ref.innerRef,\n        props = objectWithoutProperties(_ref, ['in', 'onExited', 'appear', 'enter', 'exit', 'innerRef']);\n    return (\n      // $FlowFixMe\n      react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(WrappedComponent, _extends({ innerRef: innerRef }, props))\n    );\n  };\n};\n\n// strip transition props off before spreading onto actual component\n\n\nvar AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) {\n  return funct
 ion (_ref) {\n    var inProp = _ref.in,\n        onExited = _ref.onExited,\n        props = objectWithoutProperties(_ref, ['in', 'onExited']);\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n      Collapse,\n      { 'in': inProp, onExited: onExited },\n      react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(WrappedComponent, _extends({ cropWithEllipsis: inProp }, props))\n    );\n  };\n};\n\n// fade in when last multi-value removed, otherwise instant\nvar AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) {\n  return function (props) {\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Fade, _extends({\n      component: WrappedComponent,\n      duration: props.isMulti ? collapseDuration : 1\n    }, props));\n  };\n};\n\n// instant fade; all transition-group children must be transitions\n\nvar AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) {\n  return function (props) {\n    return react__WE
 BPACK_IMPORTED_MODULE_1___default.a.createElement(Fade, _extends({ component: WrappedComponent }, props));\n  };\n};\n\n// make ValueContainer a transition group\nvar AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) {\n  return function (props) {\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_transition_group__WEBPACK_IMPORTED_MODULE_7__[\"TransitionGroup\"], _extends({ component: WrappedComponent }, props));\n  };\n};\n\nvar makeAnimated = function makeAnimated(externalComponents) {\n  var components$$1 = defaultComponents({ components: externalComponents });\n  var Input = components$$1.Input,\n      MultiValue = components$$1.MultiValue,\n      Placeholder = components$$1.Placeholder,\n      SingleValue = components$$1.SingleValue,\n      ValueContainer = components$$1.ValueContainer,\n      rest = objectWithoutProperties(components$$1, ['Input', 'MultiValue', 'Placeholder', 'SingleValue', 'ValueContainer']);\n\n  
 return _extends({\n    Input: AnimatedInput(Input),\n    MultiValue: AnimatedMultiValue(MultiValue),\n    Placeholder: AnimatedPlaceholder(Placeholder),\n    SingleValue: AnimatedSingleValue(SingleValue),\n    ValueContainer: AnimatedValueContainer(ValueContainer)\n  }, rest);\n};\n\nvar AnimatedComponents = makeAnimated();\n\nvar Input$1 = AnimatedComponents.Input;\nvar MultiValue$1 = AnimatedComponents.MultiValue;\nvar Placeholder$1 = AnimatedComponents.Placeholder;\nvar SingleValue$1 = AnimatedComponents.SingleValue;\nvar ValueContainer$1 = AnimatedComponents.ValueContainer;\n\nvar index = Object(memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(makeAnimated, exportedEqual);\n\nvar index$1 = manageState(Select);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index$1);\n\n\n\n//# sourceURL=webpack:///./node_modules/react-select/dist/react-select.esm.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/CSSTransition.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/react-transition-group/CSSTransition.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _addClass = _interopRequireDefault(__webpack_require__(/*! dom-helpers/class/addClass */ \"./node_modules/dom-helpers/class/addClass.js\"));\n\nvar _removeClass = _interopRequireDefault(__webpack_require__(/*! dom-helpers/class/removeClass */ \"./node_modules/dom-helpers/class/removeClass.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\n\nvar _Transition = _interopRequireDefault(__webpack_require__(/*! ./Transition */ \"./node_modules/react-transition-group/Transition.js\"));\n\nvar _PropTypes = __webpack_require__(/*! ./utils/PropTypes */ \"./node_modules/react-transition-group/utils/PropTypes.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj
  : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _extends() { _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; }; return _exten
 ds.apply(this, arguments); }\n\nvar addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _addClass.default)(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _removeClass.default)(node, c);\n  });\n};\n\nvar propTypes =  true ? _extends({}, _Transition.default.propTypes, {\n  /**\n   * The animation classNames applied to the component as it enters, exits or has finished the transition.\n   * A single name can be provided and it will be suffixed for each stage: e.g.\n   *\n   * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`, `fade-enter-done`,\n   * `fade-exit`, `fade-exit-active`, `fade-exit-done`, `fade-appear`, and `fade-appear-active`.\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n
    * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply spread\n   * them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: _PropTypes.classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately a
 fter the 'enter' or 'appear' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * @type Function(node: HtmlElement\n 
   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : undefined;;\n/**\n * A `Transition` component using CSS transitions and animations.\n * It's inspired by the excellent [ng-animate](http://www.nganimate.org/) library.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` stages of the transition. The first class is applied and then a\n * second \"active\" class in order to activate the css animation. After the animation,\n * matching `done` class names are applied to persist the animation state.\n *\n * When the `in` prop is toggled to `true` the Component will get\n * the `example-enter` CSS class and the `example-enter-active` CSS class\n * added in the next tick. This is a convention based on t
 he `classNames` prop.\n */\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\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\n    _this.onEnter = function (node, appearing) {\n      var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          className = _this$getClassNames.className;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, className);\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(node);\n      }\n    };\n\n    _this.onEntering = function (node, appearing) {\n      var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          activeClassName = _this$getClassNames2.activeClassN
 ame;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(node);\n      }\n    };\n\n    _this.onEntered = function (node, appearing) {\n      var _this$getClassNames3 = _this.getClassNames('enter'),\n          doneClassName = _this$getClassNames3.doneClassName;\n\n      _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(node);\n      }\n    };\n\n    _this.onExit = function (node) {\n      var _this$getClassNames4 = _this.getClassNames('exit'),\n          className = _this$getClassNames4.className;\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      addClass(node, className);\n\n      if (_this.props.onExit) {\n        _this.props.onExit(node);\n      }\n    };\n\n    _this.onExiting = function (node) {\n      var _this$getClassNames5 = _this.get
 ClassNames('exit'),\n          activeClassName = _this$getClassNames5.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(node);\n      }\n    };\n\n    _this.onExited = function (node) {\n      var _this$getClassNames6 = _this.getClassNames('exit'),\n          doneClassName = _this$getClassNames6.doneClassName;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onExited) {\n        _this.props.onExited(node);\n      }\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var className = typeof classNames !== 'string' ? classNames[type] : classNames + '-' + type;\n      var activeClassName = typeof classNames !== 'string' ? classNames[type + 'Active'] : className + '-active';\n      var doneClassName = typeof classNames !== 'string' ? classNames[type + 'Done'] : className + '-done'
 ;\n      return {\n        className: className,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$getClassNames7 = this.getClassNames(type),\n        className = _this$getClassNames7.className,\n        activeClassName = _this$getClassNames7.activeClassName,\n        doneClassName = _this$getClassNames7.doneClassName;\n\n    className && removeClass(node, className);\n    activeClassName && removeClass(node, activeClassName);\n    doneClassName && removeClass(node, doneClassName);\n  };\n\n  _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n    // This is for to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n    if (className) {\n      /* eslint-disable no-unused-expressions */\n      no
 de && node.scrollTop;\n      /* eslint-enable no-unused-expressions */\n\n      addClass(node, className);\n    }\n  };\n\n  _proto.render = function render() {\n    var props = _extends({}, this.props);\n\n    delete props.classNames;\n    return _react.default.createElement(_Transition.default, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.propTypes =  true ? propTypes : undefined;\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/CSSTransition.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/ReplaceTransition.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/react-transition-group/ReplaceTransition.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(__webpack_require__(/*! ./TransitionGroup */ \"./node_modules/react-transition-group/TransitionGroup.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose
 (subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar propTypes =  true ? {\n  in: _propTypes.default.bool.isRequired,\n  children: function children(props, propName) {\n    if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n    return null;\n  }\n} : undefined;;\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n *   <Fade><div>I appear first</div></Fade>\n *   <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\n\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReplaceTransition, _React$Compo
 nent);\n\n  function ReplaceTransition() {\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\n    _this.handleEnter = function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _this.handleLifecycle('onEnter', 0, args);\n    };\n\n    _this.handleEntering = function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return _this.handleLifecycle('onEntering', 0, args);\n    };\n\n    _this.handleEntered = function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args
 [_key4] = arguments[_key4];\n      }\n\n      return _this.handleLifecycle('onEntered', 0, args);\n    };\n\n    _this.handleExit = function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n\n      return _this.handleLifecycle('onExit', 1, args);\n    };\n\n    _this.handleExiting = function () {\n      for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n        args[_key6] = arguments[_key6];\n      }\n\n      return _this.handleLifecycle('onExiting', 1, args);\n    };\n\n    _this.handleExited = function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n\n      return _this.handleLifecycle('onExited', 1, args);\n    };\n\n    return _this;\n  }\n\n  var _proto = ReplaceTransition.prototype;\n\n  _proto.handleL
 ifecycle = function handleLifecycle(handler, idx, originalArgs) {\n    var _child$props;\n\n    var children = this.props.children;\n\n    var child = _react.default.Children.toArray(children)[idx];\n\n    if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n    if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        inProp = _this$props.in,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n    var _React$Children$toArr = _react.default.Children.toArray(children),\n        first = _React$Children$toArr[0],\n        second = _React$Children$toArr[1];\n\n    delete props.onEnter;\n    delete props.onEntering;\n    delete props.onEntered;\n    delete props.onExit;\n    delete props.onExiting;\n    delete props.onExited;\n    ret
 urn _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n      key: 'first',\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onEntered: this.handleEntered\n    }) : _react.default.cloneElement(second, {\n      key: 'second',\n      onEnter: this.handleExit,\n      onEntering: this.handleExiting,\n      onEntered: this.handleExited\n    }));\n  };\n\n  return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes =  true ? propTypes : undefined;\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/ReplaceTransition.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/Transition.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/react-transition-group/Transition.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"react-dom\"));\n\nvar _reactLifecyclesCompat = __webpack_require__(/*! react-lifecycles-compat */ \"./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\");\n\nvar _PropTypes = __webpack_require__(/*! ./utils/PropTypes */ \"./node_modules/react-transition-group/utils/PropTypes.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return ob
 j; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\ne
 xports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   o
 pacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {(state) => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this sta
 ge, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n *   this.setState({ in: true });\n * }\n *\n * render() {\n *   return (\n *     <div>\n *       <Transition in={this.state.in} timeout={500} />\n *       <button onClick={this.toggleEnterState}>Click to Enter</button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are ha
 rd to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](h
 ttps://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n      
   initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //   
     if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exi
 t, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter;\n      appear = timeout.appear;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting)
  {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n      _this2.onTransitionEnd(node, timeouts.enter, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit
 (node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird
  race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n\n    if (node) {\n      if (this.props.addEndListener) {\n        this.props.addEndListener(node, this.nextCallback);\n      }\n\n      if (timeout != null) {\n        setTimeout(this.nextCallback, timeou
 t);\n      }\n    } else {\n      setTimeout(this.nextCallback, 0);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var 
 child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes =  true ? {\n  /**\n   * A `function` child can be used instead of a React element.\n   * This function is called with the current transition status\n   * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n   * to apply context specific props to a component.\n   *\n   * ```jsx\n   * <Transition timeout={150}>\n   *   {(status) => (\n   *     <MyComponent className={`fade fade-${status}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the ent
 er or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n   * If you want to transition on the first mount set `appear` to `true`, and the\n   * component will transition in as soon as the `<Transition>` mounts.\n   *\n   * > 
 Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided\n   *\n   * You may specify a single timeout for all transitions like: `timeout={500}`,\n   * or individually like:\n   *\n   * ```jsx\n   * timeout={{\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * @type {number | { enter?: number, exit?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt =  true ? _PropTypes.timeoutsShape : undefined;;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key -
  1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. **Note:** Timeouts are still used as a fallback if provided.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parame
 ter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> voi
 d\n   */\n  onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : undefined;\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/Transition.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/TransitionGroup.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/react-transition-group/TransitionGroup.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\n\nvar _reactLifecyclesCompat = __webpack_require__(/*! react-lifecycles-compat */ \"./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\");\n\nvar _ChildMapping = __webpack_require__(/*! ./utils/ChildMapping */ \"./node_modules/react-transition-group/utils/ChildMapping.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[
 key] = source[key]; } return target; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar propTypes =  true ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior
  by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: _propTypes.default.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will ove
 rride any defaults set\n   * on individual children Transitions.\n   */\n  enter: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: _propTypes.default.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: _propTypes.default.func\n} : undefined;;\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }
 \n  /**\n   * The `<TransitionGroup>` component manages a set of transition components\n   * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n   * components, `<TransitionGroup>` is a state machine for managing the mounting\n   * and unmounting of components over time.\n   *\n   * Consider the example below. As items are removed or added to the TodoList the\n   * `in` prop is toggled automatically by the `<TransitionGroup>`.\n   *\n   * Note that `<TransitionGroup>`  does not define any animation behavior!\n   * Exactly _how_ a list item animates is up to the individual transition\n   * component. This means you can mix and match animations across different list\n   * items.\n   */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props
 , context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: {\n        isMounting: !this.appeared\n      }\n    };\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.appeared = true;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps,
  prevChildMapping, handleExited),\n      firstRender: false\n    };\n  };\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    this.setState(function (state) {\n      var children = _extends({}, state.children);\n\n      delete children[child.key];\n      return {\n        children: children\n      };\n    });\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Comp
 onent === null) {\n      return children;\n    }\n\n    return _react.default.createElement(Component, props, children);\n  };\n\n  return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n  transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes =  true ? propTypes : undefined;\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/TransitionGroup.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/index.js":
+/*!******************************************************!*\
+  !*** ./node_modules/react-transition-group/index.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _CSSTransition = _interopRequireDefault(__webpack_require__(/*! ./CSSTransition */ \"./node_modules/react-transition-group/CSSTransition.js\"));\n\nvar _ReplaceTransition = _interopRequireDefault(__webpack_require__(/*! ./ReplaceTransition */ \"./node_modules/react-transition-group/ReplaceTransition.js\"));\n\nvar _TransitionGroup = _interopRequireDefault(__webpack_require__(/*! ./TransitionGroup */ \"./node_modules/react-transition-group/TransitionGroup.js\"));\n\nvar _Transition = _interopRequireDefault(__webpack_require__(/*! ./Transition */ \"./node_modules/react-transition-group/Transition.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n  Transition: _Transition.default,\n  TransitionGroup: _TransitionGroup.default,\n  ReplaceTransition: _ReplaceTransition.default,\n  CSSTransition: _CSSTransition.default\n};\n\n//# sourceURL=webpa
 ck:///./node_modules/react-transition-group/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/utils/ChildMapping.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/react-transition-group/utils/ChildMapping.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) _react.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding
  or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(ke
 y) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    chil
 dMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return (0, _react.cloneElement)(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!(0, _react.isValidElement)(child)) return;\n    var hasPrev = key in prevChildMapping;\n    var hasNext = key in 
 nextChildMapping;\n    var prevChild = prevChildMapping[key];\n    var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = (0, _rea
 ct.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/utils/ChildMapping.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/utils/PropTypes.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/react-transition-group/utils/PropTypes.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n  var timeoutPropName = 'transition' + transitionType + 'Timeout';\n  var enabledPropName = 'transition' + transitionType;\n  return function (props) {\n    // If the transition is enabled\n    if (props[enabledPropName]) {\n      // If no timeout duration is provided\n      if (props[timeoutPropName] == null) {\n        return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-
 timeout for more ' + 'information.'); // If the duration isn't a number\n      } else if (typeof props[timeoutPropName] !== 'number') {\n        return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n      }\n    }\n\n    return null;\n  };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n  enter: _propTypes.default.number,\n  exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  active: _propTypes.default.string\n}), _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  enterDone: _propTypes.default.string,\n  enterActive: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  exitDone: _propTypes.default.string,\n  exitActive: _propTypes.default.string\n})]
 );\n\nexports.classNamesShape = classNamesShape;\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/utils/PropTypes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/stylis-rule-sheet/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/stylis-rule-sheet/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("(function (factory) {\n\t true ? (module['exports'] = factory()) :\n\t\tundefined\n}(function () {\n\n\t'use strict'\n\n\treturn function (insertRule) {\n\t\tvar delimiter = '/*|*/'\n\t\tvar needle = delimiter+'}'\n\n\t\tfunction toSheet (block) {\n\t\t\tif (block)\n\t\t\t\ttry {\n\t\t\t\t\tinsertRule(block + '}')\n\t\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {\n\t\t\tswitch (context) {\n\t\t\t\t// property\n\t\t\t\tcase 1:\n\t\t\t\t\t// @import\n\t\t\t\t\tif (depth === 0 && content.charCodeAt(0) === 64)\n\t\t\t\t\t\treturn insertRule(content+';'), ''\n\t\t\t\t\tbreak\n\t\t\t\t// selector\n\t\t\t\tcase 2:\n\t\t\t\t\tif (ns === 0)\n\t\t\t\t\t\treturn content + delimiter\n\t\t\t\t\tbreak\n\t\t\t\t// at-rule\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch (ns) {\n\t\t\t\t\t\t// @font-face, @page\n\t\t\t\t\t\tcase 102:\n\t\t\t\t\t\tcase 112:\n\t\t\t\t\t\t\treturn insertRule(selectors[0]+c
 ontent), ''\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn content + (at === 0 ? delimiter : '')\n\t\t\t\t\t}\n\t\t\t\tcase -2:\n\t\t\t\t\tcontent.split(needle).forEach(toSheet)\n\t\t\t}\n\t\t}\n\t}\n}))\n\n\n//# sourceURL=webpack:///./node_modules/stylis-rule-sheet/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/global.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack:///(webpack)/buildin/global.js?");
+
+/***/ }),
+
+/***/ "lodash":
+/*!*************************!*\
+  !*** external "lodash" ***!
+  \*************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = lodash;\n\n//# sourceURL=webpack:///external_%22lodash%22?");
+
+/***/ }),
+
+/***/ "react":
+/*!************************!*\
+  !*** external "React" ***!
+  \************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = React;\n\n//# sourceURL=webpack:///external_%22React%22?");
+
+/***/ }),
+
+/***/ "react-dom":
+/*!***************************!*\
+  !*** external "ReactDOM" ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = ReactDOM;\n\n//# sourceURL=webpack:///external_%22ReactDOM%22?");
+
+/***/ })
+
+/******/ });
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcblocksjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/blocks.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/blocks.js                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/blocks.js      2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,15 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * WordPress dependencies
+ */
+const { registerBlockType } = wp.blocks;
+
+/**
+ * Internal dependencies
+ */
+import * as speakers from './speakers/';
+
+[
+       speakers,
+].forEach( ( { name, settings } ) => {
+       registerBlockType( name, settings );
+} );
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedavatarindexjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar/index.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar/index.js                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar/index.js 2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,36 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import classnames from 'classnames';
+
+/**
+ * WordPress dependencies
+ */
+const { __, sprintf } = wp.i18n;
+const { addQueryArgs } = wp.url;
+
+function AvatarImage( {
+       className,
+       name,
+       size,
+       url,
+} ) {
+       const getSizedURL = ( avatar_url, avatar_size ) => {
+               return addQueryArgs( avatar_url, { s: avatar_size } );
+       };
+
+       const alt = name ? sprintf( __( 'Avatar of %s', 'wordcamporg' ), name ) : '';
+
+       return (
+               <img
+                       className={ classnames( 'avatar', 'avatar-' + size, 'photo', className ) }
+                       src={ getSizedURL( url, size ) }
+                       srcSet={ getSizedURL( url, size * 2 ) + ' 2x' }
+                       alt={ alt }
+                       width={ size }
+                       height={ size }
+               />
+       );
+}
+
+export default AvatarImage;
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedavatarsizeindexjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/index.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/index.js                          (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/index.js    2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,107 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import classnames from 'classnames';
+
+/**
+ * WordPress dependencies
+ */
+const { BaseControl, Button, ButtonGroup, RangeControl } = wp.components;
+const { withInstanceId } = wp.compose;
+const { __, _x } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import './style.scss';
+
+const sizePresets = [
+       {
+               name      : __( 'Small', 'wordcamporg' ),
+               shortName : _x( 'S', 'size small', 'wordcamporg' ),
+               size      : 90,
+               slug      : 'small',
+       },
+       {
+               name      : __( 'Regular', 'wordcamporg' ),
+               shortName : _x( 'M', 'size medium', 'wordcamporg' ),
+               size      : 150,
+               slug      : 'regular',
+       },
+       {
+               name      : __( 'Large', 'wordcamporg' ),
+               shortName : _x( 'L', 'size large', 'wordcamporg' ),
+               size      : 300,
+               slug      : 'large',
+       },
+       {
+               name      : __( 'Larger', 'wordcamporg' ),
+               shortName : _x( 'XL', 'size extra large', 'wordcamporg' ),
+               size      : 500,
+               slug      : 'larger',
+       },
+];
+
+function AvatarSizeControl( {
+       className,
+       label,
+       help,
+       value,
+       instanceId,
+       onChange,
+       initialPosition,
+       ...props
+} ) {
+       const id = `wordcamp-inspector-avatar-size-control-${ instanceId }`;
+
+       return (
+               <BaseControl
+                       id={ id }
+                       className={ classnames( 'wordcamp-components-avatar-size', className ) }
+                       label={ label }
+                       help={ help }
+               >
+                       <div className={ 'wordcamp-components-avatar-size-buttons' }>
+                               <ButtonGroup>
+                                       { sizePresets.map( ( preset ) => {
+                                               const { name, shortName, size, slug } = preset;
+                                               const isCurrent = value === size;
+
+                                               return (
+                                                       <Button
+                                                               key={ slug }
+                                                               isLarge
+                                                               isPrimary={ isCurrent }
+                                                               aria-pressed={ isCurrent }
+                                                               onClick={ () => onChange( Number( size ) ) }
+                                                       >
+                                                               { shortName || name }
+                                                       </Button>
+                                               );
+                                       } ) }
+                               </ButtonGroup>
+
+                               <Button
+                                       className={ 'wordcamp-components-avatar-size-button-reset' }
+                                       isLarge
+                                       isDefault
+                                       onClick={ () => onChange( Number( initialPosition ) ) }
+                               >
+                                       { __( 'Reset', 'wordcamporg' ) }
+                               </Button>
+                       </div>
+
+                       <RangeControl
+                               className={ 'wordcamp-components-avatar-size-range' }
+                               value={ value }
+                               initialPosition={ initialPosition }
+                               onChange={ onChange }
+                               beforeIcon={ 'format-image' }
+                               afterIcon={ 'format-image' }
+                               { ...props }
+                       />
+               </BaseControl>
+       );
+}
+
+export default withInstanceId( AvatarSizeControl );
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedavatarsizestylescss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/style.scss</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/style.scss                                (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/style.scss  2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,9 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.wordcamp-components-avatar-size-buttons {
+       display: flex;
+       justify-content: space-between;
+}
+.wordcamp-components-avatar-size-range {
+       .edit-post-settings-sidebar__panel-block .components-panel__body & {
+               margin-top: 1em;
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedimagealignmentindexjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/index.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/index.js                              (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/index.js        2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,61 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import classnames from 'classnames';
+
+/**
+ * WordPress dependencies
+ */
+const { BaseControl, ButtonGroup, IconButton } = wp.components;
+const { withInstanceId } = wp.compose;
+
+/**
+ * Internal dependencies
+ */
+import './style.scss';
+
+const data = window.WordCampBlocks.speakers || {};
+
+function ImageAlignmentControl( {
+       className,
+       label,
+       help,
+       value,
+       instanceId,
+       onChange,
+} ) {
+       const { options } = data;
+       const id = `wordcamp-inspector-image-alignment-control-${ instanceId }`;
+
+       return (
+               <BaseControl
+                       id={ id }
+                       className={ classnames( 'wordcamp-components-image-alignment', className ) }
+                       label={ label }
+                       help={ help }
+               >
+                       <ButtonGroup>
+                               { options.align.map( ( alignment ) => {
+                                       const optLabel = alignment.label;
+                                       const optValue = alignment.value;
+                                       const isCurrent = value === optValue;
+                                       const iconSlug = `align-${ optValue }`;
+
+                                       return (
+                                               <IconButton
+                                                       key={ optValue }
+                                                       isLarge
+                                                       isPrimary={ isCurrent }
+                                                       aria-pressed={ isCurrent }
+                                                       onClick={ () => onChange( optValue ) }
+                                                       icon={ iconSlug }
+                                                       label={ optLabel }
+                                               />
+                                       );
+                               } ) }
+                       </ButtonGroup>
+               </BaseControl>
+       );
+}
+
+export default withInstanceId( ImageAlignmentControl );
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedimagealignmentstylescss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/style.scss</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/style.scss                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/style.scss      2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,5 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.wordcamp-components-image-alignment {
+       .components-icon-button {
+               display: inline-flex;
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedversatileselectindexjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/index.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/index.js                             (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/index.js       2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,69 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import Select from 'react-select';
+import classnames from 'classnames';
+
+/**
+ * WordPress dependencies
+ */
+const { BaseControl, Button } = wp.components;
+const { Component } = wp.element;
+const { __ } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import './style.scss';
+
+class VersatileSelect extends Component {
+       constructor( props ) {
+               super( props );
+
+               this.state = {
+                       selectedOptions: null,
+               };
+
+               this.render = this.render.bind( this );
+       }
+
+       render() {
+               const { className, label, help, instanceId, onChange, submitLabel } = this.props;
+               const id = `wordcamp-block-versatile-select-control-${ instanceId }`;
+               const value = this.state.selectedOptions || this.props.value;
+
+               return (
+                       <BaseControl
+                               id={ id }
+                               className={ classnames( 'wordcamp-components-versatile-select', className ) }
+                               label={ label }
+                               help={ help }
+                       >
+                               <div className={ 'wordcamp-components-versatile-select-inner' }>
+                                       <Select
+                                               isMulti={ true }
+                                               { ...this.props }
+                                               value={ value }
+                                               className={ 'wordcamp-components-versatile-select-select' }
+                                               onChange={ ( selectedOptions ) => {
+                                                       this.setState( { selectedOptions: selectedOptions } );
+                                               } }
+                                       />
+                                       <Button
+                                               className={ 'wordcamp-components-versatile-select-button' }
+                                               isLarge
+                                               isDefault
+                                               onClick={ () => {
+                                                       const { selectedOptions } = this.state;
+                                                       onChange( selectedOptions );
+                                               } }
+                                       >
+                                               { submitLabel || __( 'Select', 'wordcamporg' ) }
+                                       </Button>
+                               </div>
+                       </BaseControl>
+               );
+       }
+}
+
+export default VersatileSelect;
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcsharedversatileselectstylescss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/style.scss</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/style.scss                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/style.scss     2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,18 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.wordcamp-components-versatile-select-inner {
+       display: flex;
+       align-items: center;
+       justify-content: space-between;
+       text-align: left;
+}
+
+.wordcamp-components-versatile-select-select {
+       flex-grow: 2;
+       margin-right: 1em;
+       .rtl &  {
+               margin-left: 1em;
+               margin-right: 0;
+       }
+       input[type="text"]:focus {
+               box-shadow: none;
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersblockcontentjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.js                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.js      2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,157 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import { find, get, head } from 'lodash';
+import classnames from 'classnames';
+
+/**
+ * WordPress dependencies
+ */
+const { Disabled } = wp.components;
+const { Component, Fragment, RawHTML } = wp.element;
+const { decodeEntities } = wp.htmlEntities;
+const { __, _n, sprintf } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import AvatarImage from '../shared/avatar';
+import './block-content.scss';
+
+class SpeakersBlockContent extends Component {
+       static maybeAddMoreLink( content, add ) {
+               if ( add ) {
+                       const more = sprintf(
+                               '<a href="#" class="wordcamp-speaker-more-link">%s</a>',
+                               __( 'Read more', 'wordcamporg' )
+                       );
+
+                       const pattern = /<\/p>$/;
+
+                       if ( Array.isArray( content.match( pattern ) ) ) {
+                               content = content.replace( pattern, ' ' + more + '</p>' );
+                       } else {
+                               content += ' ' + more;
+                       }
+               }
+
+               return content;
+       }
+
+       render() {
+               const { attributes, speakerPosts, tracks } = this.props;
+               const {
+                       layout, grid_columns, className,
+                       show_avatars, avatar_size, avatar_align,
+                       content, speaker_link, show_session,
+               } = attributes;
+
+               let containerClasses = [
+                       'wordcamp-speakers-block',
+                       'layout-' + layout,
+                       className,
+               ];
+
+               if ( 'grid' === layout ) {
+                       containerClasses.push( 'grid-columns-' + Number( grid_columns ) );
+               }
+
+               return (
+                       <ul className={ classnames( containerClasses ) }>
+                               { speakerPosts.map( ( post, i ) =>
+                                       <li
+                                               key={ i }
+                                               className={ classnames( 'wordcamp-speaker', 'wordcamp-speaker-' + post.slug ) }
+                                       >
+                                               <h3 className={ 'wordcamp-speaker-name-heading' }>
+                                                       { decodeEntities( post.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ) }
+                                               </h3>
+
+                                               { show_avatars &&
+                                                       <AvatarImage
+                                                               className={ classnames( 'wordcamp-speaker-avatar', 'align-' + avatar_align ) }
+                                                               name={ decodeEntities( post.title.rendered.trim() ) || '' }
+                                                               size={ avatar_size }
+                                                               url={ post[ 'avatar_urls' ][ '24' ] }
+                                                       />
+                                               }
+
+                                               { ( 'none' !== content || true === speaker_link ) &&
+                                                       <div className={ 'wordcamp-speaker-content' }>
+                                                               { 'full' === content &&
+                                                                       <Disabled>
+                                                                               <RawHTML>
+                                                                                       { this.constructor.maybeAddMoreLink( post.content.rendered.trim(), speaker_link ).trim() }
+                                                                               </RawHTML>
+                                                                       </Disabled>
+                                                               }
+                                                               { 'excerpt' === content &&
+                                                                       <Disabled>
+                                                                               <RawHTML>
+                                                                                       { this.constructor.maybeAddMoreLink( post.excerpt.rendered.trim(), speaker_link ).trim() }
+                                                                               </RawHTML>
+                                                                       </Disabled>
+                                                               }
+                                                               { 'none' === content &&
+                                                                       <Disabled>
+                                                                               <RawHTML>
+                                                                                       { this.constructor.maybeAddMoreLink( '', speaker_link ).trim() }
+                                                                               </RawHTML>
+                                                                       </Disabled>
+                                                               }
+                                                       </div>
+                                               }
+
+                                               { true === show_session && post._embedded.sessions.length &&
+                                                       <Fragment>
+                                                               <h4 className={ 'wordcamp-speaker-session-heading' }>
+                                                                       { _n( 'Session', 'Sessions', post._embedded.sessions.length, 'wordcamporg' ) }
+                                                               </h4>
+
+                                                               <ul className={ 'wordcamp-speaker-session-list' }>
+                                                                       { post._embedded.sessions.map( ( session, x ) =>
+                                                                               <li
+                                                                                       key={ x }
+                                                                                       className={ 'wordcamp-speaker-session-content' }
+                                                                               >
+                                                                                       <Disabled>
+                                                                                               <a
+                                                                                                       className={ 'wordcamp-speaker-session-link' }
+                                                                                                       href={ session.link }
+                                                                                               >
+                                                                                                       { decodeEntities( session.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ) }
+                                                                                               </a>
+                                                                                               <br />
+                                                                                               <span className={ 'wordcamp-speaker-session-info' }>
+                                                                                                       { session.session_track.length &&
+                                                                                                               sprintf(
+                                                                                                                       /* translators: 1: A date; 2: A time; 3: A location; */
+                                                                                                                       __( '%1$s at %2$s in %3$s', 'wordcamporg' ),
+                                                                                                                       session.session_date_time.date,
+                                                                                                                       session.session_date_time.time,
+                                                                                                                       get( find( tracks, ( value ) => { return parseInt( value.id ) === head( session.session_track ) } ), 'name' )
+                                                                                                               )
+                                                                                                       }
+                                                                                                       { ! session.session_track.length &&
+                                                                                                               sprintf(
+                                                                                                                       /* translators: 1: A date; 2: A time; */
+                                                                                                                       __( '%1$s at %2$s', 'wordcamporg' ),
+                                                                                                                       session.session_date_time.date,
+                                                                                                                       session.session_date_time.time
+                                                                                                               )
+                                                                                                       }
+                                                                                               </span>
+                                                                                       </Disabled>
+                                                                               </li>
+                                                                       ) }
+                                                               </ul>
+                                                       </Fragment>
+                                               }
+                                       </li>,
+                               ) }
+                       </ul>
+               );
+       }
+}
+
+export default SpeakersBlockContent;
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersblockcontentscss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.scss</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.scss                          (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.scss    2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,56 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.wordcamp-speakers-block {
+       &,
+       .editor-styles-wrapper & {
+               list-style: none;
+       }
+
+       &.layout-grid {
+               display: grid;
+               grid-template-columns: repeat( 2, 1fr );
+               grid-column-gap: 1em;
+               grid-row-gap: 1em;
+
+               &.grid-columns-3 {
+                       grid-template-columns: repeat( 3, 1fr );
+               }
+               &.grid-columns-4 {
+                       grid-template-columns: repeat( 4, 1fr );
+               }
+       }
+
+       .wordcamp-speaker:after {
+               content: "";
+               display: table;
+               clear: both;
+       }
+}
+
+.wordcamp-speaker-session-list {
+       &,
+       .editor-styles-wrapper & {
+               list-style: none;
+       }
+}
+
+.wordcamp-speaker-avatar {
+       &.align-left,
+       &.align-center,
+       &.align-right {
+               display: block;
+       }
+
+       &.align-left {
+               float: left;
+               margin-right: 1em;
+       }
+
+       &.align-center {
+               margin-left: auto;
+               margin-right: auto;
+       }
+
+       &.align-right {
+               float: right;
+               margin-left: 1em;
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersblockcontrolsjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-controls.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-controls.js                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-controls.js     2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,114 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import { find } from 'lodash';
+
+/**
+ * WordPress dependencies
+ */
+const { Button, Placeholder, Spinner } = wp.components;
+const { Component, Fragment } = wp.element;
+const { __ } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import SpeakersBlockContent from './block-content';
+import SpeakersSelect from './speakers-select';
+
+const data = window.WordCampBlocks.speakers || {};
+
+class SpeakersBlockControls extends Component {
+       render() {
+               const { attributes, setAttributes, speakerPosts } = this.props;
+               const { mode } = attributes;
+               const { options } = data;
+
+               const hasPosts = Array.isArray( speakerPosts ) && speakerPosts.length;
+
+               if ( mode && ! hasPosts ) {
+                       return (
+                               <Placeholder
+                                       icon="megaphone"
+                                       label={ __( 'Speakers', 'wordcamporg' ) }
+                               >
+                                       { ! Array.isArray( speakerPosts ) ?
+                                               <Spinner /> :
+                                               __( 'No posts found.', 'wordcamporg' )
+                                       }
+                               </Placeholder>
+                       );
+               }
+
+               switch ( mode ) {
+                       case 'all' :
+                               return (
+                                       <SpeakersBlockContent { ...this.props } />
+                               );
+
+                       case 'specific_posts' :
+                               const postsLabel = find( options.mode, ( modeOption ) => {
+                                       return 'specific_posts' === modeOption.value;
+                               } ).label;
+
+                               return (
+                                       <Fragment>
+                                               <SpeakersBlockContent { ...this.props } />
+                                               <Placeholder
+                                                       icon="megaphone"
+                                                       label={ postsLabel }
+                                               >
+                                                       <SpeakersSelect { ...this.props } />
+                                               </Placeholder>
+                                       </Fragment>
+                               );
+
+                       case 'specific_terms' :
+                               const termsLabel = find( options.mode, ( modeOption ) => {
+                                       return 'specific_terms' === modeOption.value;
+                               } ).label;
+
+                               return (
+                                       <Fragment>
+                                               <SpeakersBlockContent { ...this.props } />
+                                               <Placeholder
+                                                       icon="megaphone"
+                                                       label={ termsLabel }
+                                               >
+                                                       <SpeakersSelect { ...this.props } />
+                                               </Placeholder>
+                                       </Fragment>
+                               );
+               }
+
+               return (
+                       <Placeholder
+                               icon={ 'megaphone' }
+                               label={ __( 'Speakers', 'wordcamporg' ) }
+                       >
+                               <div className={ 'wordcamp-block-speakers-mode-option' }>
+                                       <Button
+                                               isDefault
+                                               isLarge
+                                               onClick={ () => {
+                                                       setAttributes( { mode: 'all' } );
+                                               } }
+                                       >
+                                               { find( options.mode, ( modeOption ) => {
+                                                       return 'all' === modeOption.value;
+                                               } ).label }
+                                       </Button>
+                               </div>
+
+                               <div className={ 'wordcamp-block-speakers-mode-option' }>
+                                       <SpeakersSelect
+                                               label={ __( 'Choose specific speakers or groups', 'wordcamporg' ) }
+                                               { ...this.props }
+                                       />
+                               </div>
+                       </Placeholder>
+               );
+       }
+}
+
+export default SpeakersBlockControls;
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakerseditjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.js                             (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.js       2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,69 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import { isUndefined, pickBy, split } from 'lodash';
+
+/**
+ * WordPress dependencies
+ */
+const { withSelect } = wp.data;
+const { Component, Fragment } = wp.element;
+
+/**
+ * Internal dependencies
+ */
+import SpeakersBlockControls from './block-controls';
+import SpeakersInspectorControls from './inspector-controls';
+import SpeakersToolbar from './toolbar';
+import './edit.scss';
+
+const MAX_POSTS = 100;
+
+class SpeakersEdit extends Component {
+       render() {
+               const { mode } = this.props.attributes;
+
+               return (
+                       <Fragment>
+                               <SpeakersBlockControls { ...this.props } />
+                               { mode &&
+                                       <Fragment>
+                                               <SpeakersInspectorControls { ...this.props } />
+                                               <SpeakersToolbar { ...this.props } />
+                                       </Fragment>
+                               }
+                       </Fragment>
+               );
+       }
+}
+
+const speakersSelect = ( select, props ) => {
+       const { mode, post_ids, term_ids, sort } = props.attributes;
+       const { getEntityRecords } = select( 'core' );
+       const [ orderby, order ] = split( sort, '_', 2 );
+
+       const args = {
+               orderby  : orderby,
+               order    : order,
+               per_page : MAX_POSTS, // -1 is not allowed for per_page.
+               _embed   : true,
+               context  : 'view',
+       };
+
+       if ( 'specific_posts' === mode && Array.isArray( post_ids ) ) {
+               args.include = post_ids;
+       }
+
+       if ( 'specific_terms' === mode && Array.isArray( term_ids ) ) {
+               args[ 'speaker_group' ] = term_ids;
+       }
+
+       const speakersQuery = pickBy( args, ( value ) => ! isUndefined( value ) );
+
+       return {
+               speakerPosts : getEntityRecords( 'postType', 'wcb_speaker', speakersQuery ),
+               tracks       : getEntityRecords( 'taxonomy', 'wcb_track', { per_page: MAX_POSTS } ),
+       };
+};
+
+export const edit = withSelect( speakersSelect )( SpeakersEdit );
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakerseditscss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.scss</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.scss                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.scss     2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,36 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.wordcamp-block-speakers-mode-option {
+       flex-basis: 100%;
+       padding: 0.5em;
+}
+.wordcamp-speakers-select-option {
+       display: flex;
+       align-items: center;
+}
+.wordcamp-speakers-select-option-icon-container {
+       background-color: #f3f3f4;
+       display: inline-flex;
+       align-items: center;
+       justify-content: center;
+       width: 24px;
+       height: 24px;
+}
+.wordcamp-speakers-select-option-label {
+       margin: 0 0.5em;
+}
+
+.wordcamp-speakers-select-option-label-term-count {
+       font-size: 0.6em;
+       display: inline-block;
+       border-radius: 50%;
+       background-color: #f3f3f4;
+       width: 2.2em;
+       height: 2.2em;
+       margin: 0 0.5em;
+       text-align: center;
+       line-height: 2.2em;
+       vertical-align: text-top;
+}
+
+.wordcamp-components-versatile-select {
+       width: 100%;
+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersindexjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/index.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/index.js                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/index.js      2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,22 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * WordPress dependencies
+ */
+const { __ } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import { edit } from './edit.js';
+
+export const name = 'wordcamp/speakers';
+
+export const settings = {
+       title       : __( 'Speakers', 'wordcamporg' ),
+       description : __( 'Add a list of speakers.', 'wordcamporg' ),
+       icon        : 'megaphone',
+       category    : 'wordcamp',
+       edit,
+       save        : function() {
+               return null;
+       },
+};
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersinspectorcontrolsjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/inspector-controls.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/inspector-controls.js                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/inspector-controls.js 2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,113 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * WordPress dependencies
+ */
+const { PanelBody, PanelRow, RangeControl, SelectControl, ToggleControl } = wp.components;
+const { InspectorControls } = wp.editor;
+const { Component, Fragment } = wp.element;
+const { __ } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import AvatarSizeControl from '../shared/avatar-size';
+import ImageAlignmentControl from '../shared/image-alignment';
+
+const data = window.WordCampBlocks.speakers || {};
+
+class SpeakerInspectorControls extends Component {
+       render() {
+               const { attributes, setAttributes } = this.props;
+               const { layout, grid_columns, show_avatars, avatar_size, avatar_align, content, speaker_link, show_session, sort } = attributes;
+               const { schema, options } = data;
+
+               return (
+                       <InspectorControls>
+                               { 'grid' === layout &&
+                                       <PanelBody title={ __( 'Layout', 'wordcamporg' ) } initialOpen={ true }>
+                                               <PanelRow>
+                                                       <RangeControl
+                                                               label={ __( 'Grid Columns', 'wordcamporg' ) }
+                                                               value={ Number( grid_columns ) }
+                                                               min={ Number( schema[ 'grid_columns' ].minimum ) }
+                                                               max={ Number( schema[ 'grid_columns' ].maximum ) }
+                                                               initialPosition={ Number( schema[ 'grid_columns' ].default ) }
+                                                               onChange={ ( value ) => setAttributes( { grid_columns: value } ) }
+                                                       />
+                                               </PanelRow>
+                                       </PanelBody>
+                               }
+
+                               <PanelBody title={ __( 'Avatar Settings', 'wordcamporg' ) } initialOpen={ true }>
+                                       <PanelRow>
+                                               <ToggleControl
+                                                       label={ __( 'Show avatars', 'wordcamporg' ) }
+                                                       checked={ show_avatars }
+                                                       onChange={ ( value ) => setAttributes( { show_avatars: value } ) }
+                                               />
+                                       </PanelRow>
+                                       { show_avatars &&
+                                               <Fragment>
+                                                       <PanelRow>
+                                                               <AvatarSizeControl
+                                                                       label={ __( 'Size', 'wordcamporg' ) }
+                                                                       value={ Number( avatar_size ) }
+                                                                       min={ Number( schema[ 'avatar_size' ].minimum ) }
+                                                                       max={ Number( schema[ 'avatar_size' ].maximum ) }
+                                                                       initialPosition={ Number( schema[ 'avatar_size' ].default ) }
+                                                                       onChange={ ( value ) => setAttributes( { avatar_size: value } ) }
+                                                               />
+                                                       </PanelRow>
+                                                       <PanelRow>
+                                                               <ImageAlignmentControl
+                                                                       label={ __( 'Alignment', 'wordcamporg' ) }
+                                                                       value={ avatar_align }
+                                                                       onChange={ ( value ) => setAttributes( { avatar_align: value } ) }
+                                                               />
+                                                       </PanelRow>
+                                               </Fragment>
+                                       }
+                               </PanelBody>
+
+                               <PanelBody title={ __( 'Content Settings', 'wordcamporg' ) } initialOpen={ false }>
+                                       <PanelRow>
+                                               <SelectControl
+                                                       label={ __( 'Biography Length', 'wordcamporg' ) }
+                                                       value={ content }
+                                                       options={ options.content }
+                                                       onChange={ ( value ) => setAttributes( { content: value } ) }
+                                               />
+                                       </PanelRow>
+                                       <PanelRow>
+                                               <ToggleControl
+                                                       label={ __( 'Speaker Link', 'wordcamporg' ) }
+                                                       help={ __( "Link to a speaker's biography page", 'wordcamporg' ) }
+                                                       checked={ speaker_link }
+                                                       onChange={ ( value ) => setAttributes( { speaker_link: value } ) }
+                                               />
+                                       </PanelRow>
+                                       <PanelRow>
+                                               <ToggleControl
+                                                       label={ __( 'Session Information', 'wordcamporg' ) }
+                                                       help={ __( "Show speaker's session name, time, and track", 'wordcamporg' ) }
+                                                       checked={ show_session }
+                                                       onChange={ ( value ) => setAttributes( { show_session: value } ) }
+                                               />
+                                       </PanelRow>
+                               </PanelBody>
+
+                               <PanelBody title={ __( 'Sorting & Filtering', 'wordcamporg' ) } initialOpen={ false }>
+                                       <PanelRow>
+                                               <SelectControl
+                                                       label={ __( 'Sort by', 'wordcamporg' ) }
+                                                       value={ sort }
+                                                       options={ options.sort }
+                                                       onChange={ ( value ) => setAttributes( { sort: value } ) }
+                                               />
+                                       </PanelRow>
+                               </PanelBody>
+                       </InspectorControls>
+               );
+       }
+}
+
+export default SpeakerInspectorControls;
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakersspeakersselectjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/speakers-select.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/speakers-select.js                          (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/speakers-select.js    2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,240 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * External dependencies
+ */
+import { filter, includes, map } from 'lodash';
+
+/**
+ * WordPress dependencies
+ */
+const { Dashicon } = wp.components;
+const { withSelect } = wp.data;
+const { Component } = wp.element;
+const { decodeEntities } = wp.htmlEntities;
+const { __ } = wp.i18n;
+
+/**
+ * Internal dependencies
+ */
+import AvatarImage from '../shared/avatar';
+import VersatileSelect from '../shared/versatile-select';
+
+class SpeakersSelect extends Component {
+       constructor( props ) {
+               super( props );
+
+               this.optionDisabled = this.optionDisabled.bind( this );
+               this.render = this.render.bind( this );
+       }
+
+       static optionImage( optionData ) {
+               const { type } = optionData;
+
+               let image;
+
+               switch ( type ) {
+                       case 'post' :
+                               image = (
+                                       <AvatarImage
+                                               className={ 'wordcamp-speakers-select-option-avatar' }
+                                               name={ optionData.label }
+                                               size={ 24 }
+                                               url={ optionData.avatar }
+                                       />
+                               );
+                               break;
+
+                       case 'term' :
+                               image = (
+                                       <div className={ 'wordcamp-speakers-select-option-icon-container' }>
+                                               <Dashicon
+                                                       className={ 'wordcamp-speakers-select-option-icon' }
+                                                       icon={ 'megaphone' }
+                                                       size={ 16 }
+                                               />
+                                       </div>
+                               );
+                               break;
+               }
+
+               return image;
+       }
+
+       static optionLabel( optionData ) {
+               const { type } = optionData;
+
+               let label;
+
+               switch ( type ) {
+                       case 'post' :
+                               label = (
+                                       <span className={ 'wordcamp-speakers-select-option-label' }>
+                                               { optionData.label }
+                                       </span>
+                               );
+                               break;
+
+                       case 'term' :
+                               label = (
+                                       <span className={ 'wordcamp-speakers-select-option-label' }>
+                                               { optionData.label }
+                                               <span className={ 'wordcamp-speakers-select-option-label-term-count' }>
+                                                       { optionData.count }
+                                               </span>
+                                       </span>
+                               );
+                               break;
+               }
+
+               return label;
+       }
+
+       optionDisabled( option, selected ) {
+               const { mode } = this.props.attributes;
+               let chosen;
+
+               if ( Array.isArray( selected ) && selected.length ) {
+                       chosen = selected[ 0 ].type;
+               }
+
+               if ( 'specific_terms' === mode && 'post' === option.type ) {
+                       return true;
+               }
+
+               if ( 'specific_posts' === mode && 'term' === option.type ) {
+                       return true;
+               }
+
+               return chosen && chosen !== option.type;
+       }
+
+       render() {
+               const { label, attributes, setAttributes, selectOptions } = this.props;
+               const { mode, post_ids, term_ids } = attributes;
+
+               let currentValue, ids;
+
+               switch ( mode ) {
+                       case 'specific_posts' :
+                               ids = post_ids;
+                               break;
+
+                       case 'specific_terms' :
+                               ids = term_ids;
+                               break;
+               }
+
+               if ( ids ) {
+                       currentValue = filter( selectOptions[ 0 ].options, ( o ) => {
+                               return includes( ids, o.value );
+                       } );
+               }
+
+               return (
+                       <VersatileSelect
+                               label={ label }
+                               value={ currentValue }
+                               options={ selectOptions }
+                               isOptionDisabled={ this.optionDisabled }
+                               formatGroupLabel={ ( groupData ) => {
+                                       return (
+                                               <span className={ 'wordcamp-speakers-select-option-group-label' }>
+                                                       { groupData.label }
+                                               </span>
+                                       );
+                               } }
+                               formatOptionLabel={ ( optionData ) => {
+                                       return (
+                                               <div className={ 'wordcamp-speakers-select-option' }>
+                                                       { this.constructor.optionImage( optionData ) }
+                                                       { this.constructor.optionLabel( optionData ) }
+                                               </div>
+                                       );
+                               } }
+                               onChange={ ( selectedOptions ) => {
+                                       const value = map( selectedOptions, 'value' );
+
+                                       if ( ! value.length ) {
+                                               setAttributes( {
+                                                       mode     : '',
+                                                       post_ids : [],
+                                                       term_ids : [],
+                                               } );
+                                       } else {
+                                               const chosen = selectedOptions[ 0 ].type;
+
+                                               switch ( chosen ) {
+                                                       case 'post' :
+                                                               setAttributes( {
+                                                                       mode     : 'specific_posts',
+                                                                       post_ids : value,
+                                                               } );
+                                                               break;
+
+                                                       case 'term' :
+                                                               setAttributes( {
+                                                                       mode     : 'specific_terms',
+                                                                       term_ids : value,
+                                                               } );
+                                                               break;
+                                               }
+                                       }
+                               } }
+                               { ...this.props }
+                       />
+               );
+       }
+}
+
+const optionsSelect = ( select, props ) => {
+       const { mode } = props.attributes;
+       const { getEntityRecords } = select( 'core' );
+
+       let options = [];
+
+       if ( ! mode || 'specific_terms' === mode ) {
+               const terms = getEntityRecords( 'taxonomy', 'wcb_speaker_group', {
+                       orderby  : 'name',
+                       order    : 'asc',
+                       per_page : 100,
+               } );
+
+               options.push( {
+                       label   : __( 'Groups', 'wordcamporg' ),
+                       options : map( terms || [], ( term ) => {
+                               return {
+                                       label : decodeEntities( term.name ) || __( '(Untitled)', 'wordcamporg' ),
+                                       value : term.id,
+                                       type  : 'term',
+                                       count : term.count,
+                               };
+                       } ),
+               } );
+       }
+
+       if ( ! mode || 'specific_posts' === mode ) {
+               const posts = getEntityRecords( 'postType', 'wcb_speaker', {
+                       orderby  : 'title',
+                       order    : 'asc',
+                       per_page : 100,
+                       _embed   : true,
+               } );
+
+               options.push( {
+                       label   : __( 'Speakers', 'wordcamporg' ),
+                       options : map( posts || [], ( post ) => {
+                               return {
+                                       label  : decodeEntities( post.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ),
+                                       value  : post.id,
+                                       type   : 'post',
+                                       avatar : post[ 'avatar_urls' ][ '24' ],
+                               };
+                       } ),
+               } );
+       }
+
+       return {
+               selectOptions: options,
+       };
+};
+
+export default withSelect( optionsSelect )( SpeakersSelect );
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksassetssrcspeakerstoolbarjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/toolbar.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/toolbar.js                          (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/toolbar.js    2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,38 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * WordPress dependencies
+ */
+const { Toolbar } = wp.components;
+const { BlockControls } = wp.editor;
+const { Component } = wp.element;
+
+const data = window.WordCampBlocks.speakers || {};
+
+class SpeakersToolbar extends Component {
+       render() {
+               const { attributes, setAttributes } = this.props;
+               const { layout } = attributes;
+               const { options } = data;
+
+               return (
+                       <BlockControls>
+                               <Toolbar
+                                       controls={ options.layout.map( ( option ) => {
+                                               const icon     = `${ option.value }-view`;
+                                               const isActive = layout === option.value;
+
+                                               return {
+                                                       icon     : icon,
+                                                       title    : option.label,
+                                                       isActive : isActive,
+                                                       onClick  : () => {
+                                                               setAttributes( { layout: option.value } );
+                                                       },
+                                               };
+                                       } ) }
+                               />
+                       </BlockControls>
+               );
+       }
+}
+
+export default SpeakersToolbar;
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksblocksphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/blocks.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/blocks.php                              (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/blocks.php        2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,119 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+namespace WordCamp\Blocks;
+defined( 'WPINC' ) || die();
+
+use WP_Post;
+
+define( __NAMESPACE__ . '\PLUGIN_DIR', \plugin_dir_path( __FILE__ ) );
+define( __NAMESPACE__ . '\PLUGIN_URL', \plugins_url( '/', __FILE__ ) );
+
+/**
+ * Load files.
+ *
+ * @return void
+ */
+function load() {
+       if ( ! function_exists( 'register_block_type' ) ) {
+               return;
+       }
+
+       require_once PLUGIN_DIR . 'includes/speakers.php';
+}
+
+add_action( 'plugins_loaded', __NAMESPACE__ . '\load' );
+
+/**
+ * Add block categories for custom blocks.
+ *
+ * @param array   $default_categories
+ * @param WP_Post $post
+ *
+ * @return array
+ */
+function register_block_categories( $default_categories, $post ) {
+       $default_categories[] = array(
+               'slug'  => 'wordcamp',
+               'title' => __( 'WordCamp Blocks', 'wordcamporg' ),
+       );
+
+       return $default_categories;
+}
+
+add_filter( 'block_categories', __NAMESPACE__ . '\register_block_categories', 10, 2 );
+
+/**
+ * Register assets.
+ *
+ * The assets get enqueued automatically by the registered block types.
+ *
+ * @return void
+ */
+function register_assets() {
+       wp_register_style(
+               'wordcamp-blocks',
+               PLUGIN_URL . 'assets/blocks.min.css',
+               [],
+               filemtime( PLUGIN_DIR . 'assets/blocks.min.css' )
+       );
+
+       wp_register_script(
+               'wordcamp-blocks',
+               PLUGIN_URL . 'assets/blocks.min.js',
+               array(
+                       'lodash',
+                       'wp-blocks',
+                       'wp-components',
+                       'wp-compose',
+                       'wp-data',
+                       'wp-editor',
+                       'wp-element',
+                       'wp-html-entities',
+                       'wp-i18n',
+                       'wp-url',
+               ),
+               filemtime( PLUGIN_DIR . 'assets/blocks.min.js' ),
+               false
+       );
+
+       /**
+        * Filter: Add/modify data sent to WordCamp Blocks JS scripts.
+        *
+        * @param array $data Associative multidimensional array of data.
+        */
+       $data = apply_filters( 'wordcamp_blocks_script_data', [] );
+
+       wp_add_inline_script(
+               'wordcamp-blocks',
+               sprintf(
+                       'var WordCampBlocks = %s;',
+                       wp_json_encode( $data )
+               ),
+               'before'
+       );
+
+       if ( function_exists( 'wp_set_script_translations' ) ) {
+               // todo: Remove the existence check once we are running on 5.0.x
+               wp_set_script_translations( 'wordcamp-blocks', 'wordcamporg' );
+       }
+}
+
+add_action( 'init', __NAMESPACE__ . '\register_assets', 9 );
+
+/**
+ * Fix a CSS bug in Gutenberg when PanelRows are used with RangeControls.
+ *
+ * @todo Remove this when https://github.com/WordPress/gutenberg/pull/4564 is fixed.
+ */
+function fix_core_max_width_bug() {
+       ?>
+
+       <style>
+               .components-panel__row label {
+                       max-width: 100% !important;
+               }
+       </style>
+
+       <?php
+}
+
+add_action( 'admin_print_styles', __NAMESPACE__ . '\fix_core_max_width_bug' );
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksincludesspeakersphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/includes/speakers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/includes/speakers.php                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/includes/speakers.php     2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,364 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordCamp\Blocks\Speakers;
+defined( 'WPINC' ) || die();
+
+use WordCamp\Blocks;
+
+/**
+ * Register block types and enqueue scripts.
+ *
+ * @return void
+ */
+function init() {
+       register_block_type( 'wordcamp/speakers', array(
+               'attributes'      => get_attributes_schema(),
+               'render_callback' => __NAMESPACE__ . '\render',
+               'editor_script'   => 'wordcamp-blocks',
+               'editor_style'    => 'wordcamp-blocks',
+               'style'           => 'wordcamp-blocks',
+       ) );
+}
+
+add_action( 'init', __NAMESPACE__ . '\init' );
+
+/**
+ * Render the block on the front end.
+ *
+ * @param array $attributes Block attributes.
+ *
+ * @return string
+ */
+function render( $attributes ) {
+       $defaults   = wp_list_pluck( get_attributes_schema(), 'default' );
+       $attributes = wp_parse_args( $attributes, $defaults );
+
+       $speakers = get_speaker_posts( $attributes );
+       $sessions = [];
+
+       if ( ! empty( $speakers ) && true === $attributes['show_session'] ) {
+               $sessions = get_speaker_sessions( wp_list_pluck( $speakers, 'ID' ) );
+       }
+
+       ob_start();
+       require Blocks\PLUGIN_DIR . 'view/speakers.php';
+       $html = ob_get_clean();
+
+       return $html;
+}
+
+/**
+ * Add data to be used by the JS scripts in the block editor.
+ *
+ * @param array $data
+ *
+ * @return array
+ */
+function add_script_data( array $data ) {
+       $data['speakers'] = [
+               'schema'  => get_attributes_schema(),
+               'options' => array(
+                       'align'   => get_options( 'align' ),
+                       'content' => get_options( 'content' ),
+                       'layout'  => get_options( 'layout' ),
+                       'mode'    => get_options( 'mode' ),
+                       'sort'    => get_options( 'sort' ),
+               ),
+       ];
+
+       return $data;
+}
+
+add_filter( 'wordcamp_blocks_script_data', __NAMESPACE__ . '\add_script_data' );
+
+/**
+ * Get the posts to display in the block.
+ *
+ * @param array $attributes
+ *
+ * @return array
+ */
+function get_speaker_posts( array $attributes ) {
+       $post_args = [
+               'post_type'      => 'wcb_speaker',
+               'post_status'    => 'publish',
+               'posts_per_page' => -1,
+       ];
+
+       $sort = explode( '_', $attributes['sort'] );
+
+       if ( 2 === count( $sort ) ) {
+               $post_args['orderby'] = $sort[0];
+               $post_args['order']   = $sort[1];
+       }
+
+       switch ( $attributes['mode'] ) {
+               case 'specific_posts' :
+                       $post_args['post__in'] = $attributes['post_ids'];
+                       break;
+
+               case 'specific_terms' :
+                       $post_args['tax_query'] = [
+                               [
+                                       'taxonomy' => 'wcb_speaker_group',
+                                       'field'    => 'id',
+                                       'terms'    => $attributes['term_ids'],
+                               ],
+                       ];
+                       break;
+       }
+
+       return get_posts( $post_args );
+}
+
+/**
+ * Get session posts grouped by speaker.
+ *
+ * @param array $speaker_ids
+ *
+ * @return array
+ */
+function get_speaker_sessions( array $speaker_ids ) {
+       $sessions_by_speaker = [];
+
+       $session_args = [
+               'post_type'      => 'wcb_session',
+               'post_status'    => 'publish',
+               'posts_per_page' => -1,
+               'meta_key'       => '_wcpt_session_time',
+               'orderby'        => 'meta_value_num',
+       ];
+
+       $session_posts = get_posts( $session_args );
+
+       foreach ( $session_posts as $session ) {
+               $session_speaker_ids = get_post_meta( $session->ID, '_wcpt_speaker_id', false );
+
+               foreach ( $session_speaker_ids as $speaker_id ) {
+                       if ( in_array( $speaker_id, $speaker_ids ) ) {
+                               if ( ! isset( $sessions_by_speaker[ $speaker_id ] ) ) {
+                                       $sessions_by_speaker[ $speaker_id ] = [];
+                               }
+
+                               $sessions_by_speaker[ $speaker_id ][] = $session;
+                       }
+               }
+       }
+
+       return $sessions_by_speaker;
+}
+
+/**
+ * Get the schema for the block's attributes.
+ *
+ * @return array
+ */
+function get_attributes_schema() {
+       return [
+               'mode'           => [
+                       'type'    => 'string',
+                       'enum'    => wp_list_pluck( get_options( 'mode' ), 'value' ),
+                       'default' => '',
+               ],
+               'post_ids'       => [
+                       'type'    => 'array',
+                       'default' => [],
+                       'items'   => [
+                               'type' => 'integer',
+                       ],
+               ],
+               'term_ids'       => [
+                       'type'    => 'array',
+                       'default' => [],
+                       'items'   => [
+                               'type' => 'integer',
+                       ],
+               ],
+               'sort'           => [
+                       'type'    => 'string',
+                       'enum'    => wp_list_pluck( get_options( 'sort' ), 'value' ),
+                       'default' => 'title_asc',
+               ],
+               'layout'         => [
+                       'type'    => 'string',
+                       'enum'    => wp_list_pluck( get_options( 'display' ), 'value' ),
+                       'default' => 'list',
+               ],
+               'grid_columns'   => [
+                       'type'    => 'integer',
+                       'minimum' => 2,
+                       'maximum' => 4,
+                       'default' => 2,
+               ],
+               'className'      => [
+                       'type'    => 'string',
+                       'default' => '',
+               ],
+               'show_avatars'   => [
+                       'type'    => 'bool',
+                       'default' => true,
+               ],
+               'avatar_size'    => [
+                       'type'    => 'integer',
+                       'minimum' => 25,
+                       'maximum' => 600,
+                       'default' => 150,
+               ],
+               'avatar_align'   => [
+                       'type'    => 'string',
+                       'enum'    => wp_list_pluck( get_options( 'align' ), 'value' ),
+                       'default' => 'none',
+               ],
+               'content'        => [
+                       'type'    => 'string',
+                       'enum'    => wp_list_pluck( get_options( 'content' ), 'value' ),
+                       'default' => 'full',
+               ],
+               'speaker_link'   => [
+                       'type'    => 'bool',
+                       'default' => false,
+               ],
+               'show_session'   => [
+                       'type'    => 'bool',
+                       'default' => false,
+               ],
+       ];
+}
+
+/**
+ * Get the label/value pairs for a type of options.
+ *
+ * @param string $type
+ *
+ * @return array
+ */
+function get_options( $type ) {
+       $options = [];
+
+       switch ( $type ) {
+               case 'align':
+                       $options = [
+                               [
+                                       'label' => _x( 'None', 'alignment option', 'wordcamporg' ),
+                                       'value' => 'none',
+                               ],
+                               [
+                                       'label' => _x( 'Left', 'alignment option', 'wordcamporg' ),
+                                       'value' => 'left',
+                               ],
+                               [
+                                       'label' => _x( 'Center', 'alignment option', 'wordcamporg' ),
+                                       'value' => 'center',
+                               ],
+                               [
+                                       'label' => _x( 'Right', 'alignment option', 'wordcamporg' ),
+                                       'value' => 'right',
+                               ],
+                       ];
+                       break;
+               case 'content':
+                       $options = [
+                               [
+                                       'label' => _x( 'Full', 'content option', 'wordcamporg' ),
+                                       'value' => 'full',
+                               ],
+                               [
+                                       'label' => _x( 'Excerpt', 'content option', 'wordcamporg' ),
+                                       'value' => 'excerpt',
+                               ],
+                               [
+                                       'label' => _x( 'None', 'content option', 'wordcamporg' ),
+                                       'value' => 'none',
+                               ],
+                       ];
+                       break;
+               case 'layout':
+                       $options = [
+                               [
+                                       'label' => _x( 'List', 'content option', 'wordcamporg' ),
+                                       'value' => 'list',
+                               ],
+                               [
+                                       'label' => _x( 'Grid', 'content option', 'wordcamporg' ),
+                                       'value' => 'grid',
+                               ],
+                       ];
+                       break;
+               case 'mode':
+                       $options = [
+                               [
+                                       'label' => '',
+                                       'value' => '',
+                               ],
+                               [
+                                       'label' => _x( 'List all speakers', 'mode option', 'wordcamporg' ),
+                                       'value' => 'all',
+                               ],
+                               [
+                                       'label' => _x( 'Add a speaker', 'mode option', 'wordcamporg' ),
+                                       'value' => 'specific_posts',
+                               ],
+                               [
+                                       'label' => _x( 'Add a group', 'mode option', 'wordcamporg' ),
+                                       'value' => 'specific_terms',
+                               ],
+                       ];
+                       break;
+               case 'sort':
+                       $options = [
+                               [
+                                       'label' => _x( 'A → Z', 'sort option', 'wordcamporg' ),
+                                       'value' => 'title_asc',
+                               ],
+                               [
+                                       'label' => _x( 'Z → A', 'sort option', 'wordcamporg' ),
+                                       'value' => 'title_desc',
+                               ],
+                               [
+                                       'label' => _x( 'Newest to Oldest', 'sort option', 'wordcamporg' ),
+                                       'value' => 'date_desc',
+                               ],
+                               [
+                                       'label' => _x( 'Oldest to Newest', 'sort option', 'wordcamporg' ),
+                                       'value' => 'date_asc',
+                               ],
+                       ];
+                       break;
+       }
+
+       return $options;
+}
+
+/**
+ * Append a "Read more" link to a content string, within the same paragraph tag, if applicable.
+ *
+ * @todo This is kind of hacky, maybe find a way to do this that doesn't involve regex.
+ *
+ * @param $content
+ *
+ * @return string
+ */
+function maybe_add_more_link( $content, $add, $post ) {
+       if ( $add ) {
+               $url  = get_permalink( $post );
+               $more = sprintf(
+                       '<a href="%s">%s</a>',
+                       esc_url( $url ),
+                       __( 'Read more', 'wordcamporg' )
+               );
+
+               $pattern = '/<\/p>$/';
+
+               if ( preg_match( $pattern, $content ) ) {
+                       $content = preg_replace(
+                               $pattern,
+                               ' ' . $more . '</p>',
+                               $content
+                       );
+               } else {
+                       $content .= ' ' . $more;
+               }
+       }
+
+       return $content;
+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksreadmemd"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/readme.md</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/readme.md                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/readme.md 2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,13 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+**WordCamp Blocks**
+
+*Getting Started:*
+
+1. Clone this repo in mu-plugins.
+2. Add line `require_once( __DIR__ . '/blocks/blocks.php' );` in your load file in `mu-plugin` directory.
+3. `cd` into the `blocks` directory and run `npm install`.
+
+
+*Running:* 
+1. `cd` into the project directory.
+2. Run `npm run build` to initialize the build files.
+3. Run `npm start`  while developing to continuously watch the files.
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentmupluginsblocksviewspeakersphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/view/speakers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/view/speakers.php                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/view/speakers.php 2018-12-21 00:33:44 UTC (rev 8005)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,96 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordCamp\Blocks\Speakers;
+defined( 'WPINC' ) || die();
+
+/** @var array $attributes */
+/** @var array $speakers */
+/** @var array $sessions */
+
+$container_classes = [
+       'wordcamp-speakers-block',
+       'layout-' . sanitize_html_class( $attributes['layout'] ),
+       ( 'grid' === $attributes['layout'] ) ? 'grid-columns-' . absint( $attributes['grid_columns'] ) : '',
+       sanitize_html_class( $attributes['className'] ),
+];
+?>
+
+<?php if ( ! empty( $speakers ) ) : ?>
+       <ul class="<?php echo implode( ' ', $container_classes ); ?>">
+               <?php foreach ( $speakers as $post ) : setup_postdata( $post ); ?>
+                       <li class="wordcamp-speaker wordcamp-speaker-<?php echo sanitize_html_class( $post->post_name ); ?>">
+                               <h3 class="wordcamp-speaker-name-heading">
+                                       <?php echo get_the_title( $post ); ?>
+                               </h3>
+
+                               <?php if ( true === $attributes['show_avatars'] ) : ?>
+                                       <?php
+                                       echo get_avatar(
+                                               $post->_wcb_speaker_email,
+                                               $attributes['avatar_size'],
+                                               '',
+                                               sprintf( __( 'Avatar of %s', 'wordcamporg'), get_the_title( $post ) ),
+                                               [
+                                                       'class'         => [
+                                                               'wordcamp-speaker-avatar',
+                                                               'align-' . sanitize_html_class( $attributes['avatar_align'] )
+                                                       ],
+                                                       'force_display' => true,
+                                               ]
+                                       );
+                                       ?>
+                               <?php endif; ?>
+
+                               <?php if ( 'none' !== $attributes['content'] || true === $attributes['speaker_link'] ) : ?>
+                                       <div class="wordcamp-speaker-content">
+                                               <?php if ( 'full' === $attributes['content'] ) : ?>
+                                                       <?php echo trim( apply_filters( 'the_content', maybe_add_more_link( get_the_content( '' ), $attributes['speaker_link'], $post ) ) ); ?>
+                                               <?php elseif ( 'excerpt' === $attributes['content'] ) : ?>
+                                                       <?php echo trim( apply_filters( 'the_excerpt', maybe_add_more_link( get_the_excerpt(), $attributes['speaker_link'], $post ) ) ); ?>
+                                               <?php elseif ( 'none' === $attributes['content'] ) : ?>
+                                                       <?php echo trim( maybe_add_more_link( '', $attributes['speaker_link'], $post ) ); ?>
+                                               <?php endif; ?>
+                                       </div>
+                               <?php endif; ?>
+
+                               <?php if ( true === $attributes['show_session'] && ! empty( $sessions[ $post->ID ] ) ) : ?>
+                                       <h4 class="wordcamp-speaker-session-heading">
+                                               <?php echo esc_html( _n( 'Session', 'Sessions', count( $sessions[ $post->ID ] ), 'wordcamporg' ) ); ?>
+                                       </h4>
+
+                                       <ul class="wordcamp-speaker-session-list">
+                                               <?php foreach ( $sessions[ $post->ID ] as $session ) : ?>
+                                                       <li class="wordcamp-speaker-session-content">
+                                                               <a class="wordcamp-speaker-session-link" href="<?php echo esc_url( get_permalink( $session ) ); ?>">
+                                                                       <?php echo get_the_title( $session ); ?>
+                                                               </a>
+                                                               <span class="wordcamp-speaker-session-info">
+                                                                       <?php if ( ! empty( $tracks = get_the_terms( $session, 'wcb_track' ) ) && ! is_wp_error( $tracks ) ) : ?>
+                                                                               <?php
+                                                                                       printf(
+                                                                                               /* translators: 1: A date; 2: A time; 3: A location; */
+                                                                                               esc_html__( '%1$s at %2$s in %3$s', 'wordcamporg' ),
+                                                                                               date_i18n( get_option( 'date_format' ), $session->_wcpt_session_time ),
+                                                                                               date_i18n( get_option( 'time_format' ), $session->_wcpt_session_time ),
+                                                                                               esc_html( $tracks[0]->name )
+                                                                                       );
+                                                                               ?>
+                                                                       <?php else : ?>
+                                                                               <?php
+                                                                                       printf(
+                                                                                               /* translators: 1: A date; 2: A time; */
+                                                                                               esc_html__( '%1$s at %2$s', 'wordcamporg' ),
+                                                                                               date_i18n( get_option( 'date_format' ), $session->_wcpt_session_time ),
+                                                                                               date_i18n( get_option( 'time_format' ), $session->_wcpt_session_time )
+                                                                                       );
+                                                                               ?>
+                                                                       <?php endif; ?>
+                                                               </span>
+                                                       </li>
+                                               <?php endforeach; ?>
+                                       </ul>
+                               <?php endif; ?>
+                       </li>
+               <?php endforeach; wp_reset_postdata(); ?>
+       </ul>
+<?php endif; ?>
</ins></span></pre>
</div>
</div>

</body>
</html>