WordPress.org

Making WordPress.org

Changeset 8253


Ignore:
Timestamp:
02/15/2019 01:12:00 AM (16 months ago)
Author:
coreymckrill
Message:

WordCamp Blocks: Code adjustments to the Speakers block

This includes a wide range of changes and enhancements based on
code review and feedback. See the following for more info:

Location:
sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/.eslintrc.js

    r8005 r8253  
    11module.exports = {
    2     parser: 'babel-eslint',
    3 
    4     env: {
    5         browser : true,
    6         es6     : true,
     2    extends : 'plugin:@wordpress/eslint-plugin/recommended',
     3    globals : {
     4        wp : true,
    75    },
    8 
    9     extends: [
    10         'wordpress',
    11         'plugin:react/recommended',
    12         'plugin:jsx-a11y/recommended',
    13     ],
    14 
    15     parserOptions: {
    16         ecmaFeatures: {
    17             jsx: true,
    18         },
    19 
    20         ecmaVersion : 2018,
    21         sourceType  : 'module',
    22     },
    23 
    24     settings: {
    25         react: {
    26             // This should equal the version of React that ships with Core.
    27             version: '16.4.1',
    28         },
    29     },
    30 
    31     globals: {
    32         document       : true,
    33         module         : true,
    34         window         : true,
    35         WordCampBlocks : true,
    36     },
    37 
    38     plugins: [
    39         'react',
    40         'jsx-a11y',
    41     ],
    42 
    43     /*
    44      * Rules that aren't enforced yet:
    45      *
    46      * - Consecutive assignment statements should be aligned on the `=` operator. See https://github.com/eslint/eslint/issues/11025.
    47      * - Consecutive import statements should be aligned on the `from` keyword. See https://github.com/eslint/eslint/issues/11025.
    48      * - Attributes within multi-line JSX elements should be aligned on the `=` operator. See https://github.com/yannickcr/eslint-plugin-react/issues/2030.
    49      */
    50     rules: {
    51         /* eslint-disable quote-props, no-console *//*
     6    rules : {
     7        /**
     8         * Instead of turning this off altogether, we should safelist the parameters that are coming in from
     9         * the REST API. However, the `allow` config for this rule is only available in eslint 5+. Currently
     10         * the @wordpress/scripts package uses eslint 4.x, but the next version will bump it up to 5.
    5211         *
    53          * Most of the rule names contain dashes, and therefore have to be quoted. Because of that, it's more readable
    54          * if all of the rule names are quoted, rather than shifting back and forth based.
     12         * Here is the config to use once this is possible:
     13         *
     14         * 'camelcase' : [
     15         *     'error',
     16         *     {
     17         *         allow: [ // These are variables defined in PHP and exposed via the REST API.
     18         *             // Speakers block
     19         *             'post_ids', 'term_ids', 'grid_columns',
     20         *             'show_avatars', 'avatar_size', 'avatar_align',
     21         *             'speaker_link', 'show_session',
     22         *         ],
     23         *     },
     24         * ],
    5525         */
    56 
    57         'array-bracket-spacing' : [ 'error', 'always' ],
    58         'arrow-parens'          : [ 'error', 'always' ],
    59         'arrow-spacing'         : 'error',
    60         'brace-style'           : [ 'error', '1tbs' ],
    61 
    62         'camelcase': [
    63             'error', {
    64                 allow: [
    65                     // Whitelisting REST API parameters like this is not very elegant. There may be a better solution.
    66                     'avatar_size', 'per_page', 'posts_per_page', 'show_all_posts', 'speaker_link', 'show_avatars',
    67                 ],
    68             },
    69         ],
    70 
    71         'comma-dangle'  : [ 'error', 'always-multiline' ],
    72         'comma-spacing' : 'error',
    73         'comma-style'   : 'error',
    74 
    75         /*
    76          * Technically this violates WP's JS standard, but `computed-property-spacing` doesn't allow exceptions for
    77          * strings. The JS rule only exists for consistency w/ PHP's rule, but IMO there should be a space around
    78          * string values in PHP too.
     26        'camelcase' : 'off',
     27        /**
     28         * Copied from our previous custom .eslintrc.js file.
    7929         */
    80         'computed-property-spacing' : [ 'error', 'always' ],
    81         'dot-notation'              : 'error',
    82         'eol-last'                  : 'error',
    83         'eqeqeq'                    : 'error',
    84         'func-call-spacing'         : 'error',
    85         'indent'                    : [ 'error', 'tab', { SwitchCase: 1 } ],
    86 
    87         'jsx-a11y/label-has-for'                : [ 'error', { required: 'id' } ],
    88         'jsx-a11y/media-has-caption'            : 'off',
    89         'jsx-a11y/no-noninteractive-tabindex'   : 'off',
    90         'jsx-a11y/role-has-required-aria-props' : 'off',
    91         'jsx-quotes'                            : 'error',
    92 
    93         'key-spacing': [ 'error', {
    94             'align': {
     30        'key-spacing' : [ 'error', {
     31            'align' : {
    9532                'beforeColon' : true,
    9633                'afterColon'  : true,
     
    9835            },
    9936        } ],
    100 
    101         'keyword-spacing'      : 'error',
    102         'lines-around-comment' : [ 'error', {
    103             beforeBlockComment : true,
    104             beforeLineComment  : true,
    105             allowBlockStart    : true,
    106             allowObjectStart   : true,
    107             allowArrayStart    : true,
    108             allowClassStart    : true,
    109         } ],
    110 
    111         'no-alert'                 : 'error',
    112         'no-bitwise'               : 'error',
    113         'no-caller'                : 'error',
    114         'no-console'               : 'error',
    115         'no-debugger'              : 'error',
    116         'no-dupe-args'             : 'error',
    117         'no-dupe-keys'             : 'error',
    118         'no-duplicate-case'        : 'error',
    119         'no-else-return'           : 'error',
    120         'no-eval'                  : 'error',
    121         'no-extra-semi'            : 'error',
    122         'no-fallthrough'           : 'error',
    123         'no-lonely-if'             : 'error',
    124         'no-mixed-operators'       : 'error',
    125         'no-mixed-spaces-and-tabs' : 'error',
    126         'no-multiple-empty-lines'  : [ 'error', { max: 1 } ],
    127 
    128         /*
     37        /**
     38         * Copied from our previous custom .eslintrc.js file.
     39         *
    12940         * Ideally this should be on, because we don't want to allow things like `const foo  == bar;`, but the rule
    13041         * currently isn't flexible enough to allow all the exceptions we need. Specifically, there are times where
     
    14354         * } ],
    14455         */
    145         'no-multi-space': 'off',
    146 
    147         'no-multi-str'      : 'off',
    148         'no-negated-in-lhs' : 'error',
    149         'no-nested-ternary' : 'error',
    150         'no-redeclare'      : 'error',
    151 
    152         'no-restricted-syntax': [
    153             'error',
    154             {
    155                 selector : 'CallExpression[callee.name=/^__|_n|_x$/]:not([arguments.0.type=/^Literal|BinaryExpression$/])',
    156                 message  : 'Translate function arguments must be string literals.',
    157             },
    158 
    159             {
    160                 selector : 'CallExpression[callee.name=/^_n|_x$/]:not([arguments.1.type=/^Literal|BinaryExpression$/])',
    161                 message  : 'Translate function arguments must be string literals.',
    162             },
    163 
    164             {
    165                 selector : 'CallExpression[callee.name=_nx]:not([arguments.2.type=/^Literal|BinaryExpression$/])',
    166                 message  : 'Translate function arguments must be string literals.',
    167             },
    168         ],
    169 
    170         'no-shadow'                     : 'error',
    171         'no-undef'                      : 'error',
    172         'no-undef-init'                 : 'error',
    173         'no-unreachable'                : 'error',
    174         'no-unsafe-negation'            : 'error',
    175         'no-unused-expressions'         : 'error',
    176         'no-unused-vars'                : 'error',
    177         'no-useless-return'             : 'error',
    178         'no-whitespace-before-property' : 'error',
    179         'object-curly-spacing'          : [ 'error', 'always' ],
    180 
    181         'padded-blocks'                   : [ 'error', 'never' ],
    182         'padding-line-between-statements' : [ 'error',
    183             { blankLine: 'always', prev: '*',          next: 'block-like' },
    184             { blankLine: 'always', prev: 'block-like', next: '*'          },
    185             { blankLine: 'always', prev: '*',          next: 'class'      },
    186             { blankLine: 'always', prev: '*',          next: 'continue'   },
    187             { blankLine: 'always', prev: 'const',      next: 'import'     },
    188             { blankLine: 'always', prev: 'import',     next: 'const'      },
    189             { blankLine: 'always', prev: '*',          next: 'return'     },
    190 
    191             { blankLine: 'always', prev: 'break', next: '*'        }, // This should be requiring blank line after break, but it's not.
    192             { blankLine: 'always', prev: '*',     next: 'function' }, // This should be requiring blank line before function, but it's not.
    193         ],
    194 
    195         'quote-props' : [ 'error', 'as-needed' ],
    196         'quotes'      : [ 'error', 'single', {
    197             allowTemplateLiterals : true,
    198             avoidEscape           : true,
    199         } ],
    200 
    201         'react/display-name'       : 'off',
    202         'react/no-children-prop'   : 'off',
    203         'react/prop-types'         : 'off',
    204         'react/react-in-jsx-scope' : 'off',
    205 
    206         // Disabled because it doesn't support our style: https://github.com/yannickcr/eslint-plugin-react/issues/2030
    207         'react/jsx-equals-spacing' : 'off',
    208         'react/jsx-indent'         : [ 'error', 'tab' ],
    209         'react/jsx-indent-props'   : [ 'error', 'tab' ],
    210         'react/jsx-key'            : 'error',
    211         'react/jsx-tag-spacing'    : 'error',
    212         'react/jsx-curly-spacing'  : [ 'error', {
    213             when     : 'always',
    214             children : true,
    215         } ],
    216 
    217         'require-jsdoc': [ 'error', {
    218             'require': {
    219                 FunctionDeclaration     : true,
    220                 MethodDefinition        : true,
    221                 ClassDeclaration        : true,
    222                 ArrowFunctionExpression : true,
    223                 FunctionExpression      : true,
    224             },
    225         } ],
    226 
    227         'semi'                : 'error',
    228         'semi-spacing'        : 'error',
    229         'space-before-blocks' : [ 'error', 'always' ],
    230 
    231         'space-before-function-paren': [ 'error', {
    232             anonymous  : 'never',
    233             named      : 'never',
    234             asyncArrow : 'always',
    235         } ],
    236 
    237         'space-in-parens' : [ 'error', 'always' ],
    238         'space-infix-ops' : [ 'error', { int32Hint: false } ],
    239         'space-unary-ops' : [ 'error', {
    240             overrides: {
    241                 '!'   : true,
    242                 yield : true,
    243             },
    244         } ],
    245 
    246         'valid-jsdoc': [ 'error', {
    247             prefer: {
    248                 arg      : 'param',
    249                 argument : 'param',
    250                 extends  : 'augments',
    251                 returns  : 'return',
    252             },
    253 
    254             preferType: {
    255                 array   : 'Array',
    256                 bool    : 'boolean',
    257                 Boolean : 'boolean',
    258                 Float   : 'float',
    259                 int     : 'integer',
    260                 Int     : 'integer',
    261                 Integer : 'integer',
    262                 Number  : 'number',
    263                 object  : 'Object',
    264                 String  : 'string',
    265                 Void    : 'void',
    266             },
    267 
    268             requireParamDescription  : false,
    269             requireReturnDescription : false,
    270         } ],
    271 
    272         'valid-typeof' : 'error',
    273         'yoda'         : 'error',
    274 
    275         /* eslint-enable quote-props, no-console */
     56        'no-multi-spaces' : 'off',
    27657    },
    27758};
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.css

    r8063 r8253  
    44  clear: both; }
    55
    6 .wordcamp-speakers-block,
    7 .editor-styles-wrapper .wordcamp-speakers-block {
    8   list-style: none; }
     6.wordcamp-speakers-block {
     7  /* The double-ampersand defeats an overzealous ul rule in Core's editor-blocks.css. */
     8  /* https://css-tricks.com/the-sass-ampersand/#article-header-id-11 */ }
     9  .wordcamp-speakers-block.wordcamp-speakers-block,
     10  .block-editor .wordcamp-speakers-block.wordcamp-speakers-block {
     11    list-style: none;
     12    margin: 0 0 1em 0; }
     13  .wordcamp-speakers-block.layout-list > li {
     14    margin-bottom: 1em; }
     15    .wordcamp-speakers-block.layout-list > li:last-child {
     16      margin-bottom: 0; }
     17  @media (min-width: 400px) {
     18    .wordcamp-speakers-block.layout-grid {
     19      display: grid;
     20      grid-template-columns: repeat(2, 1fr);
     21      grid-column-gap: 1em;
     22      grid-row-gap: 1em;
     23      /* Ensure columns maintain equal widths. */
     24      /* https://stackoverflow.com/a/43312314 */
     25      min-height: 0;
     26      min-width: 0; }
     27      .wordcamp-speakers-block.layout-grid .wordcamp-speaker {
     28        overflow: hidden;
     29        min-width: 0; } }
     30  @media (min-width: 600px) {
     31    .wordcamp-speakers-block.layout-grid.grid-columns-3 {
     32      grid-template-columns: repeat(3, 1fr); } }
     33  @media (min-width: 800px) {
     34    .wordcamp-speakers-block.layout-grid.grid-columns-4 {
     35      grid-template-columns: repeat(4, 1fr); } }
    936
    10 @media (min-width: 400px) {
    11   .wordcamp-speakers-block.layout-grid {
    12     display: grid;
    13     grid-template-columns: repeat(2, 1fr);
    14     grid-column-gap: 1em;
    15     grid-row-gap: 1em;
    16     /* Ensure columns maintain equal widths. */
    17     /* https://stackoverflow.com/a/43312314 */
    18     min-height: 0;
    19     min-width: 0; }
    20     .wordcamp-speakers-block.layout-grid .wordcamp-speaker {
    21       overflow: hidden;
    22       min-width: 0; } }
     37.wordcamp-speaker-session-list {
     38  /* See note above about the double-ampersand. */ }
     39  .wordcamp-speaker-session-list ul.wordcamp-speaker-session-list,
     40  .wordcamp-speaker-session-list .block-editor ul.wordcamp-speaker-session-list {
     41    list-style: none;
     42    margin: 0; }
    2343
    24 @media (min-width: 600px) {
    25   .wordcamp-speakers-block.layout-grid.grid-columns-3 {
    26     grid-template-columns: repeat(3, 1fr); } }
    27 
    28 @media (min-width: 800px) {
    29   .wordcamp-speakers-block.layout-grid.grid-columns-4 {
    30     grid-template-columns: repeat(4, 1fr); } }
    31 
    32 .wordcamp-speaker-session-list,
    33 .editor-styles-wrapper .wordcamp-speaker-session-list {
    34   list-style: none; }
    35 
    36 .wordcamp-speaker-avatar.align-left, .wordcamp-speaker-avatar.align-center, .wordcamp-speaker-avatar.align-right {
    37   display: block; }
    38 
    39 .wordcamp-speaker-avatar.align-left {
     44.wordcamp-speaker-avatar-container.align-left {
    4045  float: left;
    4146  margin-right: 1em; }
    4247
    43 .wordcamp-speaker-avatar.align-center {
     48.wordcamp-speaker-avatar-container.align-center {
    4449  margin-left: auto;
    45   margin-right: auto; }
     50  margin-right: auto;
     51  text-align: center; }
    4652
    47 .wordcamp-speaker-avatar.align-right {
     53.wordcamp-speaker-avatar-container.align-right {
    4854  float: right;
    4955  margin-left: 1em; }
     
    7985  align-items: center; }
    8086
     87.wordcamp-speakers-select-loading-container,
    8188.wordcamp-speakers-select-option-icon-container {
    82   background-color: #f3f3f4;
    8389  display: inline-flex;
    8490  align-items: center;
     
    8692  width: 24px;
    8793  height: 24px; }
     94
     95.wordcamp-speakers-select-option-icon-container {
     96  background-color: #f3f3f4; }
     97
     98.wordcamp-speakers-select-loading-container .components-spinner {
     99  margin: 0; }
    88100
    89101.wordcamp-speakers-select-option-label {
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/blocks.min.js

    r8063 r8253  
    77  !*** ./assets/src/shared/avatar-size/index.js ***!
    88  \************************************************/
    9 /*! 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 _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      onChange = _ref.onChange,\n      initialPosition = _ref.initialPosition,\n      props = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, [\"className\", \"label\", \"help\", \"value\", \"onChange\", \"initialPosition\"]);\n\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(BaseControl, {\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\"] = (AvatarSizeControl);\n\n//# sourceURL=webpack:///./assets/src/shared/avatar-size/index.js?")},"./assets/src/shared/avatar-size/style.scss":
     9/*! 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 _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/@wordpress/element/build-module/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./style.scss */ \"./assets/src/shared/avatar-size/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_3__);\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 _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      initialPosition = _ref.initialPosition,\n      onChange = _ref.onChange,\n      rangeProps = _ref.rangeProps;\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(BaseControl, {\n    className: classnames__WEBPACK_IMPORTED_MODULE_2___default()('wordcamp-components-avatar-size', className),\n    label: label,\n    help: help\n  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(\"div\", {\n    className: \"wordcamp-components-avatar-size-buttons\"\n  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(ButtonGroup, {\n    \"aria-label\": label\n  }, 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_1__[\"createElement\"])(Button, {\n      key: slug,\n      isLarge: true,\n      isPrimary: isCurrent,\n      \"aria-label\": name,\n      \"aria-pressed\": isCurrent,\n      onClick: function onClick() {\n        return onChange(Number(size));\n      }\n    }, shortName || name);\n  })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__[\"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_1__[\"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    \"aria-label\": label\n  }, rangeProps)));\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AvatarSizeControl);\n\n//# sourceURL=webpack:///./assets/src/shared/avatar-size/index.js?")},"./assets/src/shared/avatar-size/style.scss":
    1010/*!**************************************************!*\
    1111  !*** ./assets/src/shared/avatar-size/style.scss ***!
     
    1919  !*** ./assets/src/shared/image-alignment/index.js ***!
    2020  \****************************************************/
    21 /*! 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$components = wp.components,\n    BaseControl = _wp$components.BaseControl,\n    Toolbar = _wp$components.Toolbar;\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      onChange = _ref.onChange;\n  var options = data.options;\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(BaseControl, {\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"])(Toolbar, {\n    controls: options.align.map(function (alignment) {\n      var isActive = value === alignment.value;\n      var iconSlug = "align-".concat(alignment.value);\n      return {\n        title: alignment.label,\n        icon: iconSlug,\n        isActive: isActive,\n        onClick: function onClick() {\n          onChange(alignment.value);\n        }\n      };\n    })\n  }));\n}\n\n/* harmony default export */ __webpack_exports__["default"] = (ImageAlignmentControl);\n\n//# sourceURL=webpack:///./assets/src/shared/image-alignment/index.js?')},"./assets/src/shared/versatile-select/index.js":
     21/*! 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$components = wp.components,\n    BaseControl = _wp$components.BaseControl,\n    Toolbar = _wp$components.Toolbar;\n\nfunction ImageAlignmentControl(_ref) {\n  var className = _ref.className,\n      label = _ref.label,\n      help = _ref.help,\n      value = _ref.value,\n      onChange = _ref.onChange,\n      alignOptions = _ref.alignOptions;\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(BaseControl, {\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"])(Toolbar, {\n    controls: alignOptions.map(function (alignment) {\n      var isActive = value === alignment.value;\n      var iconSlug = "align-".concat(alignment.value);\n      return {\n        title: alignment.label,\n        icon: iconSlug,\n        isActive: isActive,\n        onClick: function onClick() {\n          onChange(alignment.value);\n        }\n      };\n    })\n  }));\n}\n\n/* harmony default export */ __webpack_exports__["default"] = (ImageAlignmentControl);\n\n//# sourceURL=webpack:///./assets/src/shared/image-alignment/index.js?')},"./assets/src/shared/versatile-select/index.js":
    2222/*!*****************************************************!*\
    2323  !*** ./assets/src/shared/versatile-select/index.js ***!
    2424  \*****************************************************/
    25 /*! 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__ = __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 */ var _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 _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__WEBPACK_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");\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___default()(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      return 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":
     25/*! 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__ = __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 */ var _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-module/index.js");\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-select */ "./node_modules/react-select/dist/react-select.esm.js");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./style.scss */ "./assets/src/shared/versatile-select/style.scss");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_9__);\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 withInstanceId = wp.compose.withInstanceId;\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___default()(VersatileSelect).call(this, props));\n    _this.state = {\n      selectedOptions: null\n    };\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          instanceId = _this$props.instanceId,\n          className = _this$props.className,\n          label = _this$props.label,\n          help = _this$props.help,\n          onChange = _this$props.onChange,\n          selectProps = _this$props.selectProps,\n          submitLabel = _this$props.submitLabel;\n      var value = this.state.selectedOptions || this.props.value;\n      var id = "wordcamp-block-versatile-select-control-".concat(instanceId);\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(BaseControl, {\n        id: id,\n        className: classnames__WEBPACK_IMPORTED_MODULE_8___default()(\'wordcamp-components-versatile-select\', className),\n        label: label,\n        help: help\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {\n        className: "wordcamp-components-versatile-select-inner"\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(react_select__WEBPACK_IMPORTED_MODULE_7__["default"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({\n        id: id,\n        className: "wordcamp-components-versatile-select-select",\n        value: value,\n        "aria-label": label,\n        onChange: function onChange(selectedOptions) {\n          _this2.setState({\n            selectedOptions: selectedOptions\n          });\n        }\n      }, selectProps)), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Button, {\n        className: "wordcamp-components-versatile-select-button",\n        isLarge: true,\n        isDefault: true,\n        onClick: function onClick() {\n          return onChange(_this2.state.selectedOptions);\n        }\n      }, submitLabel || __(\'Select\', \'wordcamporg\'))));\n    }\n  }]);\n\n  return VersatileSelect;\n}(Component);\n\n/* harmony default export */ __webpack_exports__["default"] = (withInstanceId(VersatileSelect));\n\n//# sourceURL=webpack:///./assets/src/shared/versatile-select/index.js?')},"./assets/src/shared/versatile-select/style.scss":
    2626/*!*******************************************************!*\
    2727  !*** ./assets/src/shared/versatile-select/style.scss ***!
     
    3131  !*** ./assets/src/speakers/block-content.js ***!
    3232  \**********************************************/
    33 /*! 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__WEBPACK_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/inherits */ "./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(classnames__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-\' + decodeEntities(post.slug), \'wordcamp-clearfix\')\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"])("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 && 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, Object(_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 default export */ __webpack_exports__["default"] = (SpeakersBlockContent);\n\n//# sourceURL=webpack:///./assets/src/speakers/block-content.js?')},"./assets/src/speakers/block-content.scss":
     33/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\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_runtime_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 */ var _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-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 classnames__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(classnames__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 _block_content_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./block-content.scss */ "./assets/src/speakers/block-content.scss");\n/* harmony import */ var _block_content_scss__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_block_content_scss__WEBPACK_IMPORTED_MODULE_10__);\n\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_5___default()(SpeakersBlockContent, _Component);\n\n  function SpeakersBlockContent() {\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SpeakersBlockContent);\n\n    return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(SpeakersBlockContent).apply(this, arguments));\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(SpeakersBlockContent, [{\n    key: "render",\n    value: function render() {\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          excerpt_more = attributes.excerpt_more,\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_6__["createElement"])("ul", {\n        className: classnames__WEBPACK_IMPORTED_MODULE_8___default()(containerClasses)\n      }, speakerPosts.map(function (post) {\n        return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("li", {\n          key: post.slug,\n          className: classnames__WEBPACK_IMPORTED_MODULE_8___default()(\'wordcamp-speaker\', \'wordcamp-speaker-\' + decodeEntities(post.slug), \'wordcamp-clearfix\')\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("h3", {\n          className: "wordcamp-speaker-name-heading"\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {\n          href: post.link\n        }, decodeEntities(post.title.rendered.trim()) || __(\'(Untitled)\', \'wordcamporg\')))), show_avatars && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {\n          className: classnames__WEBPACK_IMPORTED_MODULE_8___default()(\'wordcamp-speaker-avatar-container\', \'align-\' + decodeEntities(avatar_align))\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {\n          href: post.link,\n          className: "wordcamp-speaker-avatar-link"\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(_shared_avatar__WEBPACK_IMPORTED_MODULE_9__["default"], {\n          className: "wordcamp-speaker-avatar",\n          name: decodeEntities(post.title.rendered.trim()) || \'\',\n          size: avatar_size,\n          url: post.avatar_urls[\'24\']\n        })))), \'none\' !== content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {\n          className: classnames__WEBPACK_IMPORTED_MODULE_8___default()(\'wordcamp-speaker-content\', \'wordcamp-speaker-content-\' + decodeEntities(content))\n        }, \'full\' === content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(RawHTML, {\n          children: post.content.rendered.trim()\n        }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {\n          className: "wordcamp-speaker-permalink"\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {\n          href: post.link\n        }, __(\'Visit speaker page\', \'wordcamporg\')))), \'excerpt\' === content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(RawHTML, {\n          children: post.excerpt.rendered.trim()\n        }), excerpt_more && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {\n          className: "wordcamp-speaker-permalink"\n        }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {\n          href: post.link\n        }, __(\'Read more\', \'wordcamporg\'))))), true === show_session && post._embedded.sessions && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("h4", {\n          className: "wordcamp-speaker-session-heading"\n        }, _n(\'Session\', \'Sessions\', post._embedded.sessions.length, \'wordcamporg\')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("ul", {\n          className: "wordcamp-speaker-session-list"\n        }, post._embedded.sessions.map(function (session) {\n          return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("li", {\n            key: session.slug,\n            className: "wordcamp-speaker-session-content"\n          }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Disabled, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["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_6__["createElement"])("br", null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["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_7__["get"])(tracks.find(function (value) {\n            var _session$session_trac = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(session.session_track, 1),\n                firstTrackId = _session$session_trac[0];\n\n            return parseInt(value.id) === firstTrackId;\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\n  return SpeakersBlockContent;\n}(Component);\n\n/* harmony default export */ __webpack_exports__["default"] = (SpeakersBlockContent);\n\n//# sourceURL=webpack:///./assets/src/speakers/block-content.js?')},"./assets/src/speakers/block-content.scss":
    3434/*!************************************************!*\
    3535  !*** ./assets/src/speakers/block-content.scss ***!
     
    3939  !*** ./assets/src/speakers/block-controls.js ***!
    4040  \***********************************************/
    41 /*! 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__ = __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 */ var _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-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(speakerPosts) && 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_element__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__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: 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: true,\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//# sourceURL=webpack:///./assets/src/speakers/block-controls.js?')},"./assets/src/speakers/edit.js":
     41/*! 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__ = __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 */ var _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-module/index.js");\n/* harmony import */ var _block_content__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./block-content */ "./assets/src/speakers/block-content.js");\n/* harmony import */ var _speakers_select__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./speakers-select */ "./assets/src/speakers/speakers-select.js");\n\n\n\n\n\n\n\n\n/**\n * WordPress dependencies\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 _data$options$mode = data.options.mode,\n          modeOptions = _data$options$mode === void 0 ? {} : _data$options$mode;\n      var hasPosts = Array.isArray(speakerPosts) && 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      var output;\n\n      switch (mode) {\n        case \'all\':\n          output = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(_block_content__WEBPACK_IMPORTED_MODULE_7__["default"], this.props);\n          break;\n\n        case \'specific_posts\':\n          var postsLabel = modeOptions.find(function (modeOption) {\n            return \'specific_posts\' === modeOption.value;\n          }).label;\n          output = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(_block_content__WEBPACK_IMPORTED_MODULE_7__["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_8__["default"], this.props)));\n          break;\n\n        case \'specific_terms\':\n          var termsLabel = modeOptions.find(function (modeOption) {\n            return \'specific_terms\' === modeOption.value;\n          }).label;\n          output = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(_block_content__WEBPACK_IMPORTED_MODULE_7__["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_8__["default"], this.props)));\n          break;\n\n        default:\n          output = 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: true,\n            isLarge: true,\n            onClick: function onClick() {\n              setAttributes({\n                mode: \'all\'\n              });\n            }\n          }, modeOptions.find(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_8__["default"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({\n            label: __(\'Choose specific speakers or groups\', \'wordcamporg\')\n          }, this.props))));\n          break;\n      }\n\n      return output;\n    }\n  }]);\n\n  return SpeakersBlockControls;\n}(Component);\n\n/* harmony default export */ __webpack_exports__["default"] = (SpeakersBlockControls);\n\n//# sourceURL=webpack:///./assets/src/speakers/block-controls.js?')},"./assets/src/speakers/edit.js":
    4242/*!*************************************!*\
    4343  !*** ./assets/src/speakers/edit.js ***!
    4444  \*************************************/
    45 /*! 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_runtime_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 */ var _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-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_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__WEBPACK_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_IMPORTED_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(select, 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 = Object(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":
     45/*! 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_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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 _block_controls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./block-controls */ "./assets/src/speakers/block-controls.js");\n/* harmony import */ var _inspector_controls__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inspector-controls */ "./assets/src/speakers/inspector-controls.js");\n/* harmony import */ var _toolbar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./toolbar */ "./assets/src/speakers/toolbar.js");\n/* harmony import */ var _edit_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./edit.scss */ "./assets/src/speakers/edit.scss");\n/* harmony import */ var _edit_scss__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_edit_scss__WEBPACK_IMPORTED_MODULE_12__);\n\n\n\n\n\n\n\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nvar apiFetch = wp.apiFetch;\nvar withSelect = wp.data.withSelect;\nvar _wp$element = wp.element,\n    Component = _wp$element.Component,\n    Fragment = _wp$element.Fragment;\nvar addQueryArgs = wp.url.addQueryArgs;\n/**\n * Internal dependencies\n */\n\n\n\n\n\nvar MAX_POSTS = 100;\nvar ALL_POSTS_QUERY = {\n  orderby: \'title\',\n  order: \'asc\',\n  per_page: MAX_POSTS,\n  _embed: true\n};\nvar ALL_TERMS_QUERY = {\n  orderby: \'name\',\n  order: \'asc\',\n  per_page: MAX_POSTS\n};\n\nvar SpeakersEdit =\n/*#__PURE__*/\nfunction (_Component) {\n  _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(SpeakersEdit, _Component);\n\n  function SpeakersEdit(props) {\n    var _this;\n\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, SpeakersEdit);\n\n    _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(SpeakersEdit).call(this, props));\n    _this.state = {\n      allSpeakerPosts: null,\n      allSpeakerTerms: null\n    };\n    return _this;\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(SpeakersEdit, [{\n    key: "componentWillMount",\n    value: function componentWillMount() {\n      this.isStillMounted = true;\n      var allSpeakerPosts = apiFetch({\n        path: addQueryArgs("/wp/v2/speakers", ALL_POSTS_QUERY)\n      });\n      var allSpeakerTerms = apiFetch({\n        path: addQueryArgs("/wp/v2/speaker_group", ALL_TERMS_QUERY)\n      });\n\n      if (this.isStillMounted) {\n        this.setState({\n          allSpeakerPosts: allSpeakerPosts,\n          // Promise\n          allSpeakerTerms: allSpeakerTerms // Promise\n\n        });\n      }\n    }\n  }, {\n    key: "componentWillUnmount",\n    value: function componentWillUnmount() {\n      this.isStillMounted = false;\n    }\n  }, {\n    key: "render",\n    value: function render() {\n      var mode = this.props.attributes.mode;\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__["createElement"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__["createElement"])(_block_controls__WEBPACK_IMPORTED_MODULE_9__["default"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1___default()({}, this.props, this.state)), mode && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__["createElement"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__["createElement"])(_inspector_controls__WEBPACK_IMPORTED_MODULE_10__["default"], this.props), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_7__["createElement"])(_toolbar__WEBPACK_IMPORTED_MODULE_11__["default"], this.props)));\n    }\n  }]);\n\n  return SpeakersEdit;\n}(Component);\n\nvar speakersSelect = function speakersSelect(select, 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_8__["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 = Object(lodash__WEBPACK_IMPORTED_MODULE_8__["pickBy"])(args, function (value) {\n    return !Object(lodash__WEBPACK_IMPORTED_MODULE_8__["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":
    4646/*!***************************************!*\
    4747  !*** ./assets/src/speakers/edit.scss ***!
     
    5555  !*** ./assets/src/speakers/inspector-controls.js ***!
    5656  \***************************************************/
    57 /*! 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__WEBPACK_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/inherits */ "./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$components.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(_wordpress_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        initialPosition: 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(_wordpress_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_element__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":
     57/*! 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__WEBPACK_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/inherits */ "./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$components.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 || {};\nvar DEFAULT_SCHEMA = {\n  grid_columns: {\n    default: 2,\n    minimum: 2,\n    maximum: 4\n  },\n  avatar_size: {\n    default: 150,\n    minimum: 25,\n    maximum: 600\n  }\n};\nvar DEFAULT_OPTIONS = {\n  align: {},\n  content: {},\n  sort: {}\n};\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          excerpt_more = attributes.excerpt_more,\n          show_session = attributes.show_session,\n          sort = attributes.sort;\n      var _data$schema = data.schema,\n          schema = _data$schema === void 0 ? DEFAULT_SCHEMA : _data$schema,\n          _data$options = data.options,\n          options = _data$options === void 0 ? DEFAULT_OPTIONS : _data$options;\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(InspectorControls, null, \'grid\' === layout && Object(_wordpress_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        initialPosition: Number(schema.avatar_size.default),\n        onChange: function onChange(value) {\n          return setAttributes({\n            avatar_size: value\n          });\n        },\n        rangeProps: {\n          min: Number(schema.avatar_size.minimum),\n          max: Number(schema.avatar_size.maximum)\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        alignOptions: options.align\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(_wordpress_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      })), \'excerpt\' === content && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelRow, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(ToggleControl, {\n        label: __(\'Read More Link\', \'wordcamporg\'),\n        help: __(\'Show a link at the end of the excerpt (some themes already include this)\', \'wordcamporg\'),\n        checked: excerpt_more,\n        onChange: function onChange(value) {\n          return setAttributes({\n            excerpt_more: 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: __(\'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":
    5858/*!************************************************!*\
    5959  !*** ./assets/src/speakers/speakers-select.js ***!
    6060  \************************************************/
    61 /*! 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__ = __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 */ var _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 _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__WEBPACK_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()(_babel_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    key: \"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\",\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":
     61/*! 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__WEBPACK_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/inherits */ "./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 _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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 _shared_avatar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../shared/avatar */ "./assets/src/shared/avatar/index.js");\n/* harmony import */ var _shared_versatile_select__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../shared/versatile-select */ "./assets/src/shared/versatile-select/index.js");\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 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_4___default()(SpeakersSelect, _Component);\n\n  function SpeakersSelect(props) {\n    var _this;\n\n    _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, SpeakersSelect);\n\n    _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(SpeakersSelect).call(this, props));\n    _this.state = {\n      posts: [],\n      terms: [],\n      loading: true\n    };\n    _this.buildSelectOptions = _this.buildSelectOptions.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)));\n    _this.isOptionDisabled = _this.isOptionDisabled.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)));\n    return _this;\n  }\n\n  _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(SpeakersSelect, [{\n    key: "componentWillMount",\n    value: function componentWillMount() {\n      var _this2 = this;\n\n      this.isStillMounted = true;\n      var _this$props = this.props,\n          allSpeakerPosts = _this$props.allSpeakerPosts,\n          allSpeakerTerms = _this$props.allSpeakerTerms;\n      var parsedPosts = allSpeakerPosts.then(function (fetchedPosts) {\n        var posts = fetchedPosts.map(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        if (_this2.isStillMounted) {\n          _this2.setState({\n            posts: posts\n          });\n        }\n      });\n      var parsedTerms = allSpeakerTerms.then(function (fetchedTerms) {\n        var terms = fetchedTerms.map(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        if (_this2.isStillMounted) {\n          _this2.setState({\n            terms: terms\n          });\n        }\n      });\n      Promise.all([parsedPosts, parsedTerms]).then(function () {\n        _this2.setState({\n          loading: false\n        });\n      });\n    }\n  }, {\n    key: "componentWillUnmount",\n    value: function componentWillUnmount() {\n      this.isStillMounted = false;\n    }\n  }, {\n    key: "buildSelectOptions",\n    value: function buildSelectOptions(mode) {\n      var _this$state = this.state,\n          posts = _this$state.posts,\n          terms = _this$state.terms;\n      var options = [];\n\n      if (!mode || \'specific_terms\' === mode) {\n        options.push({\n          label: __(\'Groups\', \'wordcamporg\'),\n          options: terms\n        });\n      }\n\n      if (!mode || \'specific_posts\' === mode) {\n        options.push({\n          label: __(\'Speakers\', \'wordcamporg\'),\n          options: posts\n        });\n      }\n\n      return options;\n    }\n  }, {\n    key: "isOptionDisabled",\n    value: function isOptionDisabled(option, selected) {\n      var mode = this.props.attributes.mode;\n      var chosen;\n\n      if (\'loading\' === option.type) {\n        return true;\n      }\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    key: "render",\n    value: function render() {\n      var _this$props2 = this.props,\n          label = _this$props2.label,\n          attributes = _this$props2.attributes,\n          setAttributes = _this$props2.setAttributes;\n      var mode = attributes.mode,\n          post_ids = attributes.post_ids,\n          term_ids = attributes.term_ids;\n      var options = this.buildSelectOptions(mode);\n      var value = [];\n\n      if (\'specific_posts\' === mode && options.length) {\n        value = options[0].options.filter(function (option) {\n          return Object(lodash__WEBPACK_IMPORTED_MODULE_7__["includes"])(post_ids, option.value);\n        });\n      } else if (\'specific_terms\' === mode && options.length) {\n        value = options[0].options.filter(function (option) {\n          return Object(lodash__WEBPACK_IMPORTED_MODULE_7__["includes"])(term_ids, option.value);\n        });\n      }\n\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(_shared_versatile_select__WEBPACK_IMPORTED_MODULE_9__["default"], {\n        className: "wordcamp-speakers-select",\n        label: label,\n        value: value,\n        onChange: function onChange(selectedOptions) {\n          var newValue = selectedOptions.map(function (option) {\n            return option.value;\n          });\n\n          if (newValue.length) {\n            var chosen = selectedOptions[0].type;\n\n            switch (chosen) {\n              case \'post\':\n                setAttributes({\n                  mode: \'specific_posts\',\n                  post_ids: newValue\n                });\n                break;\n\n              case \'term\':\n                setAttributes({\n                  mode: \'specific_terms\',\n                  term_ids: newValue\n                });\n                break;\n            }\n          } else {\n            setAttributes({\n              mode: \'\',\n              post_ids: [],\n              term_ids: []\n            });\n          }\n        },\n        selectProps: {\n          isLoading: this.state.loading,\n          options: options,\n          isMulti: true,\n          isOptionDisabled: this.isOptionDisabled,\n          formatGroupLabel: function formatGroupLabel(groupData) {\n            return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["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_6__["createElement"])(SpeakersOption, optionData);\n          }\n        }\n      });\n    }\n  }]);\n\n  return SpeakersSelect;\n}(Component);\n\nfunction SpeakersOption(_ref) {\n  var type = _ref.type,\n      _ref$label = _ref.label,\n      label = _ref$label === void 0 ? \'\' : _ref$label,\n      _ref$avatar = _ref.avatar,\n      avatar = _ref$avatar === void 0 ? \'\' : _ref$avatar,\n      _ref$count = _ref.count,\n      count = _ref$count === void 0 ? 0 : _ref$count;\n  var image, content;\n\n  switch (type) {\n    case \'post\':\n      image = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(_shared_avatar__WEBPACK_IMPORTED_MODULE_8__["default"], {\n        className: "wordcamp-speakers-select-option-avatar",\n        name: label,\n        size: 24,\n        url: avatar\n      });\n      content = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("span", {\n        className: "wordcamp-speakers-select-option-label"\n      }, label);\n      break;\n\n    case \'term\':\n      image = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {\n        className: "wordcamp-speakers-select-option-icon-container"\n      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])(Dashicon, {\n        className: "wordcamp-speakers-select-option-icon",\n        icon: \'megaphone\',\n        size: 16\n      }));\n      content = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("span", {\n        className: "wordcamp-speakers-select-option-label"\n      }, label, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("span", {\n        className: "wordcamp-speakers-select-option-label-term-count"\n      }, count));\n      break;\n  }\n\n  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {\n    className: "wordcamp-speakers-select-option"\n  }, image, content);\n}\n\n/* harmony default export */ __webpack_exports__["default"] = (SpeakersSelect);\n\n//# sourceURL=webpack:///./assets/src/speakers/speakers-select.js?')},"./assets/src/speakers/toolbar.js":
    6262/*!****************************************!*\
    6363  !*** ./assets/src/speakers/toolbar.js ***!
    6464  \****************************************/
    65 /*! 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__WEBPACK_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/inherits */ "./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 === option.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":
     65/*! 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__WEBPACK_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/inherits */ "./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 _data$options$layout = data.options.layout,\n          layoutOptions = _data$options$layout === void 0 ? {} : _data$options$layout;\n      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(BlockControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(Toolbar, {\n        controls: layoutOptions.map(function (option) {\n          var icon = "".concat(option.value, "-view");\n          var isActive = layout === option.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":
    6666/*!***************************************************************!*\
    6767  !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
     
    123123  !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
    124124  \****************************************************************/
    125 /*! 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":
    126 /*!************************************************************************!*\
    127   !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
    128   \************************************************************************/
    129 /*! 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":
    130 /*!*****************************************************************************!*\
    131   !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
    132   \*****************************************************************************/
    133 /*! 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":
     125/*! 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/possibleConstructorReturn.js":
    134126/*!**************************************************************************!*\
    135127  !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
     
    263255  !*** ./node_modules/react-select/dist/react-select.esm.js ***!
    264256  \************************************************************/
    265 /*! 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 components; });\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 import */ 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_IMPORTED_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 TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar 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\"]) _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 pair:\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(value) {\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 change\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.createEvent('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 default state\n  if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n  // we can't trust `scrollParent.scrollHeight` --\x3e 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 && viewSpaceBelow >= 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 ? viewSpaceAbove - 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 (!isFixedPosition && 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, render 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.maxMenuHeight,\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.className,\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 = props.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 = noticeCSS;\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      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    }\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 exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    }\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\\u1E06\\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\\u1E52\\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\\u0201\\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\\u24D5\\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\\u1EF5\\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 = _ignoreCase$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      height: 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_IMPORTED_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 preventTouchMove(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 = targetStyle && 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.addEventListener('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 this 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       * actually 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$scrollTarget.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 > scrollTop) {\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, ScrollCaptorSwitch);\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 (event) {\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 valueFocusAriaMessage(_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.getPrototypeOf(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__WEBPACK_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    padding: 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 ClearIndicator(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': true,\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({}, headingProps, { 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_IMPORTED_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    backgroundColor: 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 render() {\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        }, className)\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 MultiValue;\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: colors.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    marginLeft: 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 the 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  menuShouldBlockScroll: 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.focusedOptionRef && 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.onInputChange('', { 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      var 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('compositionstart', 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.createElement(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 = _components.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__WEBPACK_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: 'renderIndicatorSeparator',\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.isDisabled;\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 = _components3.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          onMenuScrollToBottom = _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({ inputValue: 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          delimiter = _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: name, 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: 'aria-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.renderLoadingIndicator(),\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.getControlRef = 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('', { action: '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(newValue) }\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    _this7.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 = _ref3.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.props.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 weren'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 (_ref5) {\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.blurInput();\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      _this7.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 _props19 = _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    if (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 the 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 manageState = 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.onChange = 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.select = _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.getPrototypeOf(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            passEmptyOptions: 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        onChange(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 = getNewOptionData(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            _this2.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: { opacity: 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  // width 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            children\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 function (_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__WEBPACK_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":
     257/*! 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 components; });\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 import */ 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_IMPORTED_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 TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar 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 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 pair:\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(value) {\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 change\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.createEvent('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 default state\n  if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n  // we can't trust `scrollParent.scrollHeight` --\x3e 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 && viewSpaceBelow >= 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        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\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 (!isFixedPosition && 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, render 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.maxMenuHeight,\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.className,\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 = props.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 = noticeCSS;\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      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    }\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 exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    }\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\\u1E06\\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\\u1E52\\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\\u0201\\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\\u24D5\\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\\u1EF5\\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 = _ignoreCase$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: /*#__PURE__*/ /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])({\n      zIndex: 9999,\n      border: 0,\n      clip: 'rect(1px, 1px, 1px, 1px)',\n      height: 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          emotion = _props.emotion,\n          props = objectWithoutProperties(_props, ['in', 'out', 'onExited', 'appear', 'enter', 'exit', 'innerRef', 'emotion']);\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('input', _extends({\n        ref: innerRef\n      }, props, {\n        className: /*#__PURE__*/ /*#__PURE__*/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 preventTouchMove(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 = targetStyle && 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.addEventListener('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 this 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       * actually 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: /*#__PURE__*/ /*#__PURE__*/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$scrollTarget.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 > scrollTop) {\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, ScrollCaptorSwitch);\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 (event) {\n    case 'menu':\n      return 'Use Up and Down to choose options, press Enter 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 valueFocusAriaMessage(_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.getPrototypeOf(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__WEBPACK_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    padding: 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 || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DownChevron, null)\n  );\n};\n\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(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 || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(CrossIcon, null)\n  );\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';\nvar keyframesInjected = false;\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: /*#__PURE__*/ /*#__PURE__*/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\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  if (!keyframesInjected) {\n    // eslint-disable-next-line no-unused-expressions\n    Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"injectGlobal\"])('@keyframes ', keyframesName, '{0%,80%,100%{opacity:0;}40%{opacity:1;}};');\n    keyframesInjected = true;\n  }\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      menuIsOpen = props.menuIsOpen;\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': true,\n        'control--is-disabled': isDisabled,\n        'control--is-focused': isFocused,\n        'control--menu-is-open': menuIsOpen\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      selectProps = props.selectProps;\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({}, headingProps, {\n        selectProps: selectProps,\n        theme: theme,\n        getStyles: getStyles,\n        cx: cx\n      }),\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      selectProps = props.selectProps,\n      cleanProps = objectWithoutProperties(props, ['className', 'cx', 'getStyles', 'theme', 'selectProps']);\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('div', _extends({\n    className: cx( /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_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      selectProps = _ref2.selectProps,\n      props = objectWithoutProperties(_ref2, ['className', 'cx', 'getStyles', 'innerRef', 'isHidden', 'isDisabled', 'theme', 'selectProps']);\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n    'div',\n    { className: /*#__PURE__*/ /*#__PURE__*/Object(emotion__WEBPACK_IMPORTED_MODULE_2__[\"css\"])(getStyles('input', _extends({ theme: theme }, props))) },\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    backgroundColor: 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 render() {\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 || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(CrossIcon, { size: 14 })\n      );\n    }\n  }]);\n  return MultiValueRemove;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\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        }, className)\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 MultiValue;\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: colors.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    marginLeft: 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 the 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  menuShouldBlockScroll: 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.focusedOptionRef && 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.onInputChange('', { 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      var 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('compositionstart', 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          disabled: isDisabled,\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          selectProps = _commonProps.selectProps;\n\n\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(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        selectProps: selectProps,\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 = _components.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          isFocused = _state6.isFocused;\n\n\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\n          Placeholder,\n          _extends({}, commonProps, {\n            key: 'placeholder',\n            isDisabled: isDisabled,\n            isFocused: isFocused\n          }),\n          placeholder\n        );\n      }\n\n      if (isMulti) {\n        var selectValues = selectValue.map(function (opt) {\n          var isFocused = opt === focusedValue;\n          return react__WEBPACK_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: 'renderIndicatorSeparator',\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.isDisabled;\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 = _components3.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          onMenuScrollToBottom = _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({ inputValue: 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          delimiter = _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: name, 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: 'aria-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          menuIsOpen = _props13.menuIsOpen;\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            menuIsOpen: menuIsOpen\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.renderLoadingIndicator(),\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.getControlRef = 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.onChange = function (newValue, actionMeta) {\n    var _props14 = _this7.props,\n        onChange = _props14.onChange,\n        name = _props14.name;\n\n    onChange(newValue, _extends({}, actionMeta, { name: name }));\n  };\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 _props15 = _this7.props,\n        closeMenuOnSelect = _props15.closeMenuOnSelect,\n        isMulti = _props15.isMulti;\n\n    _this7.onInputChange('', { action: '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    _this7.onChange(newValue, { action: action, option: option });\n  };\n\n  this.selectOption = function (newValue) {\n    var _props16 = _this7.props,\n        blurInputOnSelect = _props16.blurInputOnSelect,\n        isMulti = _props16.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(newValue) }\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 selectValue = _this7.state.selectValue;\n\n    var candidate = _this7.getOptionValue(removedValue);\n    _this7.onChange(selectValue.filter(function (i) {\n      return _this7.getOptionValue(i) !== candidate;\n    }), {\n      action: 'remove-value',\n      removedValue: removedValue\n    });\n    _this7.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 isMulti = _this7.props.isMulti;\n\n    _this7.onChange(isMulti ? [] : null, { action: 'clear' });\n  };\n\n  this.popValue = function () {\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    _this7.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 = _ref3.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.props.menuIsOpen) {\n      _this7.openMenu('first');\n    } else {\n      // $FlowFixMe HTMLElement type does not have tagName property\n      if (event.target.tagName !== 'INPUT') {\n        _this7.onMenuClose();\n      }\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 weren'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 (_ref5) {\n    var touches = _ref5.touches;\n\n    var touch = touches.item(0);\n    if (!touch) {\n      return;\n    }\n\n    _this7.initialTouchX = touch.clientX;\n    _this7.initialTouchY = touch.clientY;\n    _this7.userIsDragging = false;\n  };\n\n  this.onTouchMove = function (_ref6) {\n    var touches = _ref6.touches;\n\n    var touch = touches.item(0);\n    if (!touch) {\n      return;\n    }\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.blurInput();\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      _this7.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.menuListRef && _this7.menuListRef.contains(document.activeElement)) {\n      _this7.inputRef.focus();\n      return;\n    }\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 _props19 = _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    if (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          if (isMulti) {\n            _this7.popValue();\n          } else if (isClearable) {\n            _this7.clearValue();\n          }\n        }\n        break;\n      case 'Tab':\n        if (isComposing) return;\n\n        if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n        // don't capture the event if the menu opens on focus and the 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 defaultProps$1 = {\n  defaultInputValue: '',\n  defaultMenuIsOpen: false,\n  defaultValue: null\n};\n\nvar manageState = 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.onChange = 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.select = _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 = defaultProps$1, _temp2;\n};\n\nvar defaultProps$2 = {\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.getPrototypeOf(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            passEmptyOptions: 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: typeof props.inputValue !== 'undefined' ? props.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        var inputValue = this.state.inputValue;\n\n        if (defaultOptions === true) {\n          this.loadOptions(inputValue, 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$2, _temp;\n};\nvar Async = makeAsyncSelect(manageState(Select));\n\nvar compareOption = function compareOption() {\n  var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var option = arguments[1];\n\n  var candidate = String(inputValue).toLowerCase();\n  var optionValue = String(option.value).toLowerCase();\n  var optionLabel = String(option.label).toLowerCase();\n  return optionValue === candidate || optionLabel === 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$3 = _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        onChange(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 = getNewOptionData(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            _this2.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$3, _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: { opacity: 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        /*\n          Here we're invoking requestAnimationFrame with a callback invoking our\n          call to getBoundingClientRect and setState in order to resolve an edge case\n          around portalling. Certain portalling solutions briefly remove children from the DOM\n          before appending them to the target node. This is to avoid us trying to call getBoundingClientrect\n          while the Select component is in this state.\n        */\n        // cannot use `offsetWidth` because it is rounded\n        _this.rafID = window.requestAnimationFrame(function () {\n          var _ref$getBoundingClien = ref.getBoundingClientRect(),\n              width = _ref$getBoundingClien.width;\n\n          _this.setState({ width: width });\n        });\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  createClass(Collapse, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      if (this.rafID) {\n        window.cancelAnimationFrame(this.rafID);\n      }\n    }\n\n    // width must be calculated; cannot transition from `undefined` to `number`\n\n\n    // get base styles\n\n\n    // get transition styles\n\n  }, {\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            children\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 function (_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__WEBPACK_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":
    266258/*!**************************************************************!*\
    267259  !*** ./node_modules/react-transition-group/CSSTransition.js ***!
    268260  \**************************************************************/
    269 /*! 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 _extends.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 after 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 the `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.activeClassName;\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.getClassNames('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      node && 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":
     261/*! 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 _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\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/**\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 the `classNames` prop.\n */\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, appearing);\n      }\n    };\n\n    _this.onEntering = function (node, appearing) {\n      var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          activeClassName = _this$getClassNames2.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(node, appearing);\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, appearing);\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.getClassNames('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      node && 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 ? _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 after 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;\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":
    270262/*!******************************************************************!*\
    271263  !*** ./node_modules/react-transition-group/ReplaceTransition.js ***!
    272264  \******************************************************************/
    273 /*! 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$Component);\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.handleLifecycle = 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    return _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":
     265/*! 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\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 */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReplaceTransition, _React$Component);\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.handleLifecycle = 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    return _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 ? {\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;\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":
    274266/*!***********************************************************!*\
    275267  !*** ./node_modules/react-transition-group/Transition.js ***!
     
    279271  !*** ./node_modules/react-transition-group/TransitionGroup.js ***!
    280272  \****************************************************************/
    281 /*! 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 override 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 (Component === 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":
     273/*! 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 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    this.mounted = true;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\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    if (this.mounted) {\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\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 (Component === 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 ? {\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 override 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;\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":
    282274/*!******************************************************!*\
    283275  !*** ./node_modules/react-transition-group/index.js ***!
     
    291283  !*** ./node_modules/react-transition-group/utils/PropTypes.js ***!
    292284  \****************************************************************/
    293 /*! 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":
     285/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nexports.__esModule = true;\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\nvar timeoutsShape =  true ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n  enter: _propTypes.default.number,\n  exit: _propTypes.default.number\n}).isRequired]) : undefined;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape =  true ? _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})]) : undefined;\nexports.classNamesShape = classNamesShape;\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/utils/PropTypes.js?')},"./node_modules/stylis-rule-sheet/index.js":
    294286/*!*************************************************!*\
    295287  !*** ./node_modules/stylis-rule-sheet/index.js ***!
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/avatar-size/index.js

    r8063 r8253  
    4747    help,
    4848    value,
     49    initialPosition,
    4950    onChange,
    50     initialPosition,
    51     ...props
     51    rangeProps,
    5252} ) {
    5353    return (
     
    5757            help={ help }
    5858        >
    59             <div className={ 'wordcamp-components-avatar-size-buttons' }>
    60                 <ButtonGroup>
     59            <div className="wordcamp-components-avatar-size-buttons">
     60                <ButtonGroup aria-label={ label }>
    6161                    { sizePresets.map( ( preset ) => {
    6262                        const { name, shortName, size, slug } = preset;
     
    6868                                isLarge
    6969                                isPrimary={ isCurrent }
     70                                aria-label={ name }
    7071                                aria-pressed={ isCurrent }
    7172                                onClick={ () => onChange( Number( size ) ) }
     
    7879
    7980                <Button
    80                     className={ 'wordcamp-components-avatar-size-button-reset' }
     81                    className="wordcamp-components-avatar-size-button-reset"
    8182                    isLarge
    8283                    isDefault
     
    8889
    8990            <RangeControl
    90                 className={ 'wordcamp-components-avatar-size-range' }
     91                className="wordcamp-components-avatar-size-range"
    9192                value={ value }
    9293                initialPosition={ initialPosition }
    9394                onChange={ onChange }
    94                 beforeIcon={ 'format-image' }
    95                 afterIcon={ 'format-image' }
    96                 { ...props }
     95                beforeIcon="format-image"
     96                afterIcon="format-image"
     97                aria-label={ label }
     98                { ...rangeProps }
    9799            />
    98100        </BaseControl>
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/image-alignment/index.js

    r8063 r8253  
    99const { BaseControl, Toolbar } = wp.components;
    1010
    11 const data = window.WordCampBlocks.speakers || {};
    12 
    1311function ImageAlignmentControl( {
    1412    className,
     
    1715    value,
    1816    onChange,
     17    alignOptions,
    1918} ) {
    20     const { options } = data;
    21 
    2219    return (
    2320        <BaseControl
     
    2724        >
    2825            <Toolbar
    29                 controls={ options.align.map( ( alignment ) => {
     26                controls={ alignOptions.map( ( alignment ) => {
    3027                    const isActive = value === alignment.value;
    3128                    const iconSlug = `align-${ alignment.value }`;
    3229
    3330                    return {
    34                         title : alignment.label,
    35                         icon : iconSlug,
     31                        title    : alignment.label,
     32                        icon     : iconSlug,
    3633                        isActive : isActive,
    37                         onClick : () => { onChange( alignment.value ); }
    38                     }
     34                        onClick  : () => {
     35                            onChange( alignment.value );
     36                        },
     37                    };
    3938                } ) }
    4039            />
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/shared/versatile-select/index.js

    r8005 r8253  
    99 */
    1010const { BaseControl, Button } = wp.components;
     11const { withInstanceId } = wp.compose;
    1112const { Component } = wp.element;
    1213const { __ } = wp.i18n;
     
    2425            selectedOptions: null,
    2526        };
    26 
    27         this.render = this.render.bind( this );
    2827    }
    2928
    3029    render() {
    31         const { className, label, help, instanceId, onChange, submitLabel } = this.props;
     30        const { instanceId, className, label, help, onChange, selectProps, submitLabel } = this.props;
     31        const value = this.state.selectedOptions || this.props.value;
    3232        const id = `wordcamp-block-versatile-select-control-${ instanceId }`;
    33         const value = this.state.selectedOptions || this.props.value;
    3433
    3534        return (
     
    4039                help={ help }
    4140            >
    42                 <div className={ 'wordcamp-components-versatile-select-inner' }>
     41                <div className="wordcamp-components-versatile-select-inner">
    4342                    <Select
    44                         isMulti={ true }
    45                         { ...this.props }
     43                        id={ id }
     44                        className="wordcamp-components-versatile-select-select"
    4645                        value={ value }
    47                         className={ 'wordcamp-components-versatile-select-select' }
     46                        aria-label={ label }
    4847                        onChange={ ( selectedOptions ) => {
    49                             this.setState( { selectedOptions: selectedOptions } );
     48                            this.setState( { selectedOptions } );
    5049                        } }
     50                        { ...selectProps }
    5151                    />
    5252                    <Button
    53                         className={ 'wordcamp-components-versatile-select-button' }
     53                        className="wordcamp-components-versatile-select-button"
    5454                        isLarge
    5555                        isDefault
    56                         onClick={ () => {
    57                             const { selectedOptions } = this.state;
    58                             onChange( selectedOptions );
    59                         } }
     56                        onClick={ () => onChange( this.state.selectedOptions ) }
    6057                    >
    6158                        { submitLabel || __( 'Select', 'wordcamporg' ) }
     
    6764}
    6865
    69 export default VersatileSelect;
     66export default withInstanceId( VersatileSelect );
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.js

    r8063 r8253  
    22 * External dependencies
    33 */
    4 import { find, get, head } from 'lodash';
     4import { get } from 'lodash';
    55import classnames from 'classnames';
    66
     
    2020
    2121class SpeakersBlockContent extends Component {
    22     static maybeAddMoreLink( content, add ) {
    23         if ( add ) {
    24             const more = sprintf(
    25                 '<a href="#" class="wordcamp-speaker-more-link">%s</a>',
    26                 __( 'Read more', 'wordcamporg' )
    27             );
    28 
    29             const pattern = /<\/p>$/;
    30 
    31             if ( Array.isArray( content.match( pattern ) ) ) {
    32                 content = content.replace( pattern, ' ' + more + '</p>' );
    33             } else {
    34                 content += ' ' + more;
    35             }
    36         }
    37 
    38         return content;
    39     }
    40 
    4122    render() {
    4223        const { attributes, speakerPosts, tracks } = this.props;
     
    4425            layout, grid_columns, className,
    4526            show_avatars, avatar_size, avatar_align,
    46             content, speaker_link, show_session,
     27            content, excerpt_more, show_session,
    4728        } = attributes;
    4829
    49         let containerClasses = [
     30        const containerClasses = [
    5031            'wordcamp-speakers-block',
    5132            'layout-' + layout,
     
    5940        return (
    6041            <ul className={ classnames( containerClasses ) }>
    61                 { speakerPosts.map( ( post, i ) =>
     42                { speakerPosts.map( ( post ) =>
    6243                    <li
    63                         key={ i }
     44                        key={ post.slug }
    6445                        className={ classnames(
    6546                            'wordcamp-speaker',
     
    6849                        ) }
    6950                    >
    70                         <h3 className={ 'wordcamp-speaker-name-heading' }>
    71                             { decodeEntities( post.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ) }
     51                        <h3 className="wordcamp-speaker-name-heading">
     52                            <Disabled>
     53                                <a href={ post.link }>
     54                                    { decodeEntities( post.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ) }
     55                                </a>
     56                            </Disabled>
    7257                        </h3>
    7358
    7459                        { show_avatars &&
    75                             <AvatarImage
    76                                 className={ classnames( 'wordcamp-speaker-avatar', 'align-' + avatar_align ) }
    77                                 name={ decodeEntities( post.title.rendered.trim() ) || '' }
    78                                 size={ avatar_size }
    79                                 url={ post[ 'avatar_urls' ][ '24' ] }
    80                             />
     60                            <div className={ classnames( 'wordcamp-speaker-avatar-container', 'align-' + decodeEntities( avatar_align ) ) }>
     61                                <Disabled>
     62                                    <a href={ post.link } className="wordcamp-speaker-avatar-link">
     63                                        <AvatarImage
     64                                            className="wordcamp-speaker-avatar"
     65                                            name={ decodeEntities( post.title.rendered.trim() ) || '' }
     66                                            size={ avatar_size }
     67                                            url={ post.avatar_urls[ '24' ] }
     68                                        />
     69                                    </a>
     70                                </Disabled>
     71                            </div>
    8172                        }
    8273
    83                         { ( 'none' !== content || true === speaker_link ) &&
    84                             <div className={ 'wordcamp-speaker-content' }>
     74                        { ( 'none' !== content ) &&
     75                            <div className={ classnames( 'wordcamp-speaker-content', 'wordcamp-speaker-content-' + decodeEntities( content ) ) }>
    8576                                { 'full' === content &&
    8677                                    <Disabled>
    87                                         <RawHTML>
    88                                             { this.constructor.maybeAddMoreLink( post.content.rendered.trim(), speaker_link ).trim() }
    89                                         </RawHTML>
     78                                        <RawHTML children={ post.content.rendered.trim() } />
     79                                        <p className="wordcamp-speaker-permalink">
     80                                            <a href={ post.link }>
     81                                                { __( 'Visit speaker page', 'wordcamporg' ) }
     82                                            </a>
     83                                        </p>
    9084                                    </Disabled>
    9185                                }
    9286                                { 'excerpt' === content &&
    9387                                    <Disabled>
    94                                         <RawHTML>
    95                                             { this.constructor.maybeAddMoreLink( post.excerpt.rendered.trim(), speaker_link ).trim() }
    96                                         </RawHTML>
    97                                     </Disabled>
    98                                 }
    99                                 { 'none' === content &&
    100                                     <Disabled>
    101                                         <RawHTML>
    102                                             { this.constructor.maybeAddMoreLink( '', speaker_link ).trim() }
    103                                         </RawHTML>
     88                                        <RawHTML children={ post.excerpt.rendered.trim() } />
     89                                        { excerpt_more &&
     90                                            <p className="wordcamp-speaker-permalink">
     91                                                <a href={ post.link }>
     92                                                    { __( 'Read more', 'wordcamporg' ) }
     93                                                </a>
     94                                            </p>
     95                                        }
    10496                                    </Disabled>
    10597                                }
     
    109101                        { true === show_session && post._embedded.sessions &&
    110102                            <Fragment>
    111                                 <h4 className={ 'wordcamp-speaker-session-heading' }>
     103                                <h4 className="wordcamp-speaker-session-heading">
    112104                                    { _n( 'Session', 'Sessions', post._embedded.sessions.length, 'wordcamporg' ) }
    113105                                </h4>
    114106
    115                                 <ul className={ 'wordcamp-speaker-session-list' }>
    116                                     { post._embedded.sessions.map( ( session, x ) =>
     107                                <ul className="wordcamp-speaker-session-list">
     108                                    { post._embedded.sessions.map( ( session ) =>
    117109                                        <li
    118                                             key={ x }
    119                                             className={ 'wordcamp-speaker-session-content' }
     110                                            key={ session.slug }
     111                                            className="wordcamp-speaker-session-content"
    120112                                        >
    121113                                            <Disabled>
    122114                                                <a
    123                                                     className={ 'wordcamp-speaker-session-link' }
     115                                                    className="wordcamp-speaker-session-link"
    124116                                                    href={ session.link }
    125117                                                >
     
    127119                                                </a>
    128120                                                <br />
    129                                                 <span className={ 'wordcamp-speaker-session-info' }>
     121                                                <span className="wordcamp-speaker-session-info">
    130122                                                    { session.session_track.length &&
    131123                                                        sprintf(
     
    134126                                                            session.session_date_time.date,
    135127                                                            session.session_date_time.time,
    136                                                             get( find( tracks, ( value ) => { return parseInt( value.id ) === head( session.session_track ) } ), 'name' )
     128                                                            get( tracks.find( ( value ) => {
     129                                                                const [ firstTrackId ] = session.session_track;
     130                                                                return parseInt( value.id ) === firstTrackId;
     131                                                            } ), 'name' )
    137132                                                        )
    138133                                                    }
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-content.scss

    r8063 r8253  
    66
    77.wordcamp-speakers-block {
    8     &,
    9     .editor-styles-wrapper & {
     8    /* The double-ampersand defeats an overzealous ul rule in Core's editor-blocks.css. */
     9    /* https://css-tricks.com/the-sass-ampersand/#article-header-id-11 */
     10    &#{&},
     11    .block-editor &#{&} {
    1012        list-style: none;
     13        margin: 0 0 1em 0;
     14    }
     15
     16    &.layout-list > li {
     17        margin-bottom: 1em;
     18        &:last-child {
     19            margin-bottom: 0;
     20        }
    1121    }
    1222
     
    4353
    4454.wordcamp-speaker-session-list {
    45     &,
    46     .editor-styles-wrapper & {
     55    /* See note above about the double-ampersand. */
     56    ul#{&},
     57    .block-editor ul#{&} {
    4758        list-style: none;
     59        margin: 0
    4860    }
    4961}
    5062
    51 .wordcamp-speaker-avatar {
    52     &.align-left,
    53     &.align-center,
    54     &.align-right {
    55         display: block;
    56     }
    57 
     63.wordcamp-speaker-avatar-container {
    5864    &.align-left {
    5965        float: left;
     
    6470        margin-left: auto;
    6571        margin-right: auto;
     72        text-align: center;
    6673    }
    6774
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/block-controls.js

    r8005 r8253  
    1 /**
    2  * External dependencies
    3  */
    4 import { find } from 'lodash';
    5 
    61/**
    72 * WordPress dependencies
     
    2318        const { attributes, setAttributes, speakerPosts } = this.props;
    2419        const { mode } = attributes;
    25         const { options } = data;
     20        const { mode: modeOptions = {} } = data.options;
    2621
    2722        const hasPosts = Array.isArray( speakerPosts ) && speakerPosts.length;
     
    4136        }
    4237
     38        let output;
     39
    4340        switch ( mode ) {
    4441            case 'all' :
    45                 return (
     42                output = (
    4643                    <SpeakersBlockContent { ...this.props } />
    4744                );
     45                break;
    4846
    4947            case 'specific_posts' :
    50                 const postsLabel = find( options.mode, ( modeOption ) => {
     48                const postsLabel = modeOptions.find( ( modeOption ) => {
    5149                    return 'specific_posts' === modeOption.value;
    5250                } ).label;
    5351
    54                 return (
     52                output = (
    5553                    <Fragment>
    5654                        <SpeakersBlockContent { ...this.props } />
     
    6361                    </Fragment>
    6462                );
     63                break;
    6564
    6665            case 'specific_terms' :
    67                 const termsLabel = find( options.mode, ( modeOption ) => {
     66                const termsLabel = modeOptions.find( ( modeOption ) => {
    6867                    return 'specific_terms' === modeOption.value;
    6968                } ).label;
    7069
    71                 return (
     70                output = (
    7271                    <Fragment>
    7372                        <SpeakersBlockContent { ...this.props } />
     
    8079                    </Fragment>
    8180                );
     81                break;
     82
     83            default :
     84                output = (
     85                    <Placeholder
     86                        icon="megaphone"
     87                        label={ __( 'Speakers', 'wordcamporg' ) }
     88                    >
     89                        <div className="wordcamp-block-speakers-mode-option">
     90                            <Button
     91                                isDefault
     92                                isLarge
     93                                onClick={ () => {
     94                                    setAttributes( { mode: 'all' } );
     95                                } }
     96                            >
     97                                { modeOptions.find( ( modeOption ) => {
     98                                    return 'all' === modeOption.value;
     99                                } ).label }
     100                            </Button>
     101                        </div>
     102
     103                        <div className="wordcamp-block-speakers-mode-option">
     104                            <SpeakersSelect
     105                                label={ __( 'Choose specific speakers or groups', 'wordcamporg' ) }
     106                                { ...this.props }
     107                            />
     108                        </div>
     109                    </Placeholder>
     110                );
     111                break;
    82112        }
    83113
    84         return (
    85             <Placeholder
    86                 icon={ 'megaphone' }
    87                 label={ __( 'Speakers', 'wordcamporg' ) }
    88             >
    89                 <div className={ 'wordcamp-block-speakers-mode-option' }>
    90                     <Button
    91                         isDefault
    92                         isLarge
    93                         onClick={ () => {
    94                             setAttributes( { mode: 'all' } );
    95                         } }
    96                     >
    97                         { find( options.mode, ( modeOption ) => {
    98                             return 'all' === modeOption.value;
    99                         } ).label }
    100                     </Button>
    101                 </div>
    102 
    103                 <div className={ 'wordcamp-block-speakers-mode-option' }>
    104                     <SpeakersSelect
    105                         label={ __( 'Choose specific speakers or groups', 'wordcamporg' ) }
    106                         { ...this.props }
    107                     />
    108                 </div>
    109             </Placeholder>
    110         );
     114        return output;
    111115    }
    112116}
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.js

    r8005 r8253  
    77 * WordPress dependencies
    88 */
     9const apiFetch = wp.apiFetch;
    910const { withSelect } = wp.data;
    1011const { Component, Fragment } = wp.element;
     12const { addQueryArgs } = wp.url;
    1113
    1214/**
     
    2022const MAX_POSTS = 100;
    2123
     24const ALL_POSTS_QUERY = {
     25    orderby  : 'title',
     26    order    : 'asc',
     27    per_page : MAX_POSTS,
     28    _embed   : true,
     29};
     30
     31const ALL_TERMS_QUERY = {
     32    orderby  : 'name',
     33    order    : 'asc',
     34    per_page : MAX_POSTS,
     35};
     36
    2237class SpeakersEdit extends Component {
     38    constructor( props ) {
     39        super( props );
     40
     41        this.state = {
     42            allSpeakerPosts : null,
     43            allSpeakerTerms : null,
     44        };
     45    }
     46
     47    componentWillMount() {
     48        this.isStillMounted = true;
     49
     50        const allSpeakerPosts = apiFetch( {
     51            path: addQueryArgs( `/wp/v2/speakers`, ALL_POSTS_QUERY ),
     52        } );
     53        const allSpeakerTerms = apiFetch( {
     54            path: addQueryArgs( `/wp/v2/speaker_group`, ALL_TERMS_QUERY ),
     55        } );
     56
     57        if ( this.isStillMounted ) {
     58            this.setState( {
     59                allSpeakerPosts : allSpeakerPosts, // Promise
     60                allSpeakerTerms : allSpeakerTerms, // Promise
     61            } );
     62        }
     63    }
     64
     65    componentWillUnmount() {
     66        this.isStillMounted = false;
     67    }
     68
    2369    render() {
    2470        const { mode } = this.props.attributes;
     
    2672        return (
    2773            <Fragment>
    28                 <SpeakersBlockControls { ...this.props } />
     74                <SpeakersBlockControls { ...this.props } { ...this.state } />
    2975                { mode &&
    3076                    <Fragment>
     
    56102
    57103    if ( 'specific_terms' === mode && Array.isArray( term_ids ) ) {
    58         args[ 'speaker_group' ] = term_ids;
     104        args.speaker_group = term_ids;
    59105    }
    60106
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/edit.scss

    r8005 r8253  
    77    align-items: center;
    88}
     9.wordcamp-speakers-select-loading-container,
    910.wordcamp-speakers-select-option-icon-container {
    10     background-color: #f3f3f4;
    1111    display: inline-flex;
    1212    align-items: center;
     
    1515    height: 24px;
    1616}
     17.wordcamp-speakers-select-option-icon-container {
     18    background-color: #f3f3f4;
     19}
     20.wordcamp-speakers-select-loading-container .components-spinner {
     21    margin: 0;
     22}
    1723.wordcamp-speakers-select-option-label {
    1824    margin: 0 0.5em;
    1925}
    20 
    2126.wordcamp-speakers-select-option-label-term-count {
    2227    font-size: 0.6em;
     
    3136    vertical-align: text-top;
    3237}
    33 
    3438.wordcamp-components-versatile-select {
    3539    width: 100%;
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/inspector-controls.js

    r8005 r8253  
    1515const data = window.WordCampBlocks.speakers || {};
    1616
     17const DEFAULT_SCHEMA = {
     18    grid_columns: {
     19        default : 2,
     20        minimum : 2,
     21        maximum : 4,
     22    },
     23    avatar_size: {
     24        default : 150,
     25        minimum : 25,
     26        maximum : 600,
     27    },
     28};
     29
     30const DEFAULT_OPTIONS = {
     31    align   : {},
     32    content : {},
     33    sort    : {},
     34};
     35
    1736class SpeakerInspectorControls extends Component {
    1837    render() {
    1938        const { attributes, setAttributes } = this.props;
    20         const { layout, grid_columns, show_avatars, avatar_size, avatar_align, content, speaker_link, show_session, sort } = attributes;
    21         const { schema, options } = data;
     39        const { layout, grid_columns, show_avatars, avatar_size, avatar_align, content, excerpt_more, show_session, sort } = attributes;
     40        const { schema = DEFAULT_SCHEMA, options = DEFAULT_OPTIONS } = data;
    2241
    2342        return (
     
    2948                                label={ __( 'Grid Columns', 'wordcamporg' ) }
    3049                                value={ Number( grid_columns ) }
    31                                 min={ Number( schema[ 'grid_columns' ].minimum ) }
    32                                 max={ Number( schema[ 'grid_columns' ].maximum ) }
    33                                 initialPosition={ Number( schema[ 'grid_columns' ].default ) }
     50                                min={ Number( schema.grid_columns.minimum ) }
     51                                max={ Number( schema.grid_columns.maximum ) }
     52                                initialPosition={ Number( schema.grid_columns.default ) }
    3453                                onChange={ ( value ) => setAttributes( { grid_columns: value } ) }
    3554                            />
     
    5271                                    label={ __( 'Size', 'wordcamporg' ) }
    5372                                    value={ Number( avatar_size ) }
    54                                     min={ Number( schema[ 'avatar_size' ].minimum ) }
    55                                     max={ Number( schema[ 'avatar_size' ].maximum ) }
    56                                     initialPosition={ Number( schema[ 'avatar_size' ].default ) }
     73                                    initialPosition={ Number( schema.avatar_size.default ) }
    5774                                    onChange={ ( value ) => setAttributes( { avatar_size: value } ) }
     75                                    rangeProps={ {
     76                                        min : Number( schema.avatar_size.minimum ),
     77                                        max : Number( schema.avatar_size.maximum ),
     78                                    } }
    5879                                />
    5980                            </PanelRow>
     
    6384                                    value={ avatar_align }
    6485                                    onChange={ ( value ) => setAttributes( { avatar_align: value } ) }
     86                                    alignOptions={ options.align }
    6587                                />
    6688                            </PanelRow>
     
    78100                        />
    79101                    </PanelRow>
    80                     <PanelRow>
    81                         <ToggleControl
    82                             label={ __( 'Speaker Link', 'wordcamporg' ) }
    83                             help={ __( "Link to a speaker's biography page", 'wordcamporg' ) }
    84                             checked={ speaker_link }
    85                             onChange={ ( value ) => setAttributes( { speaker_link: value } ) }
    86                         />
    87                     </PanelRow>
     102                    { 'excerpt' === content &&
     103                        <PanelRow>
     104                            <ToggleControl
     105                                label={ __( 'Read More Link', 'wordcamporg' ) }
     106                                help={ __( 'Show a link at the end of the excerpt (some themes already include this)', 'wordcamporg' ) }
     107                                checked={ excerpt_more }
     108                                onChange={ ( value ) => setAttributes( { excerpt_more: value } ) }
     109                            />
     110                        </PanelRow>
     111                    }
    88112                    <PanelRow>
    89113                        <ToggleControl
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/speakers-select.js

    r8005 r8253  
    22 * External dependencies
    33 */
    4 import { filter, includes, map } from 'lodash';
     4import { includes } from 'lodash';
    55
    66/**
     
    88 */
    99const { Dashicon } = wp.components;
    10 const { withSelect } = wp.data;
    1110const { Component } = wp.element;
    1211const { decodeEntities } = wp.htmlEntities;
     
    2322        super( props );
    2423
    25         this.optionDisabled = this.optionDisabled.bind( this );
    26         this.render = this.render.bind( this );
    27     }
    28 
    29     static optionImage( optionData ) {
    30         const { type } = optionData;
    31 
    32         let image;
    33 
    34         switch ( type ) {
    35             case 'post' :
    36                 image = (
    37                     <AvatarImage
    38                         className={ 'wordcamp-speakers-select-option-avatar' }
    39                         name={ optionData.label }
    40                         size={ 24 }
    41                         url={ optionData.avatar }
    42                     />
    43                 );
    44                 break;
    45 
    46             case 'term' :
    47                 image = (
    48                     <div className={ 'wordcamp-speakers-select-option-icon-container' }>
    49                         <Dashicon
    50                             className={ 'wordcamp-speakers-select-option-icon' }
    51                             icon={ 'megaphone' }
    52                             size={ 16 }
    53                         />
    54                     </div>
    55                 );
    56                 break;
    57         }
    58 
    59         return image;
    60     }
    61 
    62     static optionLabel( optionData ) {
    63         const { type } = optionData;
    64 
    65         let label;
    66 
    67         switch ( type ) {
    68             case 'post' :
    69                 label = (
    70                     <span className={ 'wordcamp-speakers-select-option-label' }>
    71                         { optionData.label }
    72                     </span>
    73                 );
    74                 break;
    75 
    76             case 'term' :
    77                 label = (
    78                     <span className={ 'wordcamp-speakers-select-option-label' }>
    79                         { optionData.label }
    80                         <span className={ 'wordcamp-speakers-select-option-label-term-count' }>
    81                             { optionData.count }
    82                         </span>
    83                     </span>
    84                 );
    85                 break;
    86         }
    87 
    88         return label;
    89     }
    90 
    91     optionDisabled( option, selected ) {
     24        this.state = {
     25            posts   : [],
     26            terms   : [],
     27            loading : true,
     28        };
     29
     30        this.buildSelectOptions = this.buildSelectOptions.bind( this );
     31        this.isOptionDisabled = this.isOptionDisabled.bind( this );
     32    }
     33
     34    componentWillMount() {
     35        this.isStillMounted = true;
     36
     37        const { allSpeakerPosts, allSpeakerTerms } = this.props;
     38
     39        const parsedPosts = allSpeakerPosts.then(
     40            ( fetchedPosts ) => {
     41                const posts = fetchedPosts.map( ( post ) => {
     42                    return {
     43                        label  : decodeEntities( post.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ),
     44                        value  : post.id,
     45                        type   : 'post',
     46                        avatar : post.avatar_urls[ '24' ],
     47                    };
     48                } );
     49
     50                if ( this.isStillMounted ) {
     51                    this.setState( { posts } );
     52                }
     53            }
     54        );
     55
     56        const parsedTerms = allSpeakerTerms.then(
     57            ( fetchedTerms ) => {
     58                const terms = fetchedTerms.map( ( term ) => {
     59                    return {
     60                        label : decodeEntities( term.name ) || __( '(Untitled)', 'wordcamporg' ),
     61                        value : term.id,
     62                        type  : 'term',
     63                        count : term.count,
     64                    };
     65                } );
     66
     67                if ( this.isStillMounted ) {
     68                    this.setState( { terms } );
     69                }
     70            }
     71        );
     72
     73        Promise.all( [ parsedPosts, parsedTerms ] ).then( () => {
     74            this.setState( { loading: false } );
     75        } );
     76    }
     77
     78    componentWillUnmount() {
     79        this.isStillMounted = false;
     80    }
     81
     82    buildSelectOptions( mode ) {
     83        const { posts, terms } = this.state;
     84        const options = [];
     85
     86        if ( ! mode || 'specific_terms' === mode ) {
     87            options.push( {
     88                label   : __( 'Groups', 'wordcamporg' ),
     89                options : terms,
     90            } );
     91        }
     92
     93        if ( ! mode || 'specific_posts' === mode ) {
     94            options.push( {
     95                label   : __( 'Speakers', 'wordcamporg' ),
     96                options : posts,
     97            } );
     98        }
     99
     100        return options;
     101    }
     102
     103    isOptionDisabled( option, selected ) {
    92104        const { mode } = this.props.attributes;
    93105        let chosen;
    94106
     107        if ( 'loading' === option.type ) {
     108            return true;
     109        }
     110
    95111        if ( Array.isArray( selected ) && selected.length ) {
    96112            chosen = selected[ 0 ].type;
     
    109125
    110126    render() {
    111         const { label, attributes, setAttributes, selectOptions } = this.props;
     127        const { label, attributes, setAttributes } = this.props;
    112128        const { mode, post_ids, term_ids } = attributes;
    113 
    114         let currentValue, ids;
    115 
    116         switch ( mode ) {
    117             case 'specific_posts' :
    118                 ids = post_ids;
    119                 break;
    120 
    121             case 'specific_terms' :
    122                 ids = term_ids;
    123                 break;
    124         }
    125 
    126         if ( ids ) {
    127             currentValue = filter( selectOptions[ 0 ].options, ( o ) => {
    128                 return includes( ids, o.value );
     129        const options = this.buildSelectOptions( mode );
     130
     131        let value = [];
     132
     133        if ( 'specific_posts' === mode && options.length ) {
     134            value = options[ 0 ].options.filter( ( option ) => {
     135                return includes( post_ids, option.value );
     136            } );
     137        } else if ( 'specific_terms' === mode && options.length ) {
     138            value = options[ 0 ].options.filter( ( option ) => {
     139                return includes( term_ids, option.value );
    129140            } );
    130141        }
     
    132143        return (
    133144            <VersatileSelect
     145                className="wordcamp-speakers-select"
    134146                label={ label }
    135                 value={ currentValue }
    136                 options={ selectOptions }
    137                 isOptionDisabled={ this.optionDisabled }
    138                 formatGroupLabel={ ( groupData ) => {
    139                     return (
    140                         <span className={ 'wordcamp-speakers-select-option-group-label' }>
    141                             { groupData.label }
    142                         </span>
    143                     );
    144                 } }
    145                 formatOptionLabel={ ( optionData ) => {
    146                     return (
    147                         <div className={ 'wordcamp-speakers-select-option' }>
    148                             { this.constructor.optionImage( optionData ) }
    149                             { this.constructor.optionLabel( optionData ) }
    150                         </div>
    151                     );
    152                 } }
     147                value={ value }
    153148                onChange={ ( selectedOptions ) => {
    154                     const value = map( selectedOptions, 'value' );
    155 
    156                     if ( ! value.length ) {
     149                    const newValue = selectedOptions.map( ( option ) => option.value );
     150
     151                    if ( newValue.length ) {
     152                        const chosen = selectedOptions[ 0 ].type;
     153
     154                        switch ( chosen ) {
     155                            case 'post' :
     156                                setAttributes( {
     157                                    mode     : 'specific_posts',
     158                                    post_ids : newValue,
     159                                } );
     160                                break;
     161
     162                            case 'term' :
     163                                setAttributes( {
     164                                    mode     : 'specific_terms',
     165                                    term_ids : newValue,
     166                                } );
     167                                break;
     168                        }
     169                    } else {
    157170                        setAttributes( {
    158171                            mode     : '',
     
    160173                            term_ids : [],
    161174                        } );
    162                     } else {
    163                         const chosen = selectedOptions[ 0 ].type;
    164 
    165                         switch ( chosen ) {
    166                             case 'post' :
    167                                 setAttributes( {
    168                                     mode     : 'specific_posts',
    169                                     post_ids : value,
    170                                 } );
    171                                 break;
    172 
    173                             case 'term' :
    174                                 setAttributes( {
    175                                     mode     : 'specific_terms',
    176                                     term_ids : value,
    177                                 } );
    178                                 break;
    179                         }
    180175                    }
    181176                } }
    182                 { ...this.props }
     177                selectProps={ {
     178                    isLoading        : this.state.loading,
     179                    options          : options,
     180                    isMulti          : true,
     181                    isOptionDisabled : this.isOptionDisabled,
     182                    formatGroupLabel : ( groupData ) => {
     183                        return (
     184                            <span className="wordcamp-speakers-select-option-group-label">
     185                                { groupData.label }
     186                            </span>
     187                        );
     188                    },
     189                    formatOptionLabel: ( optionData ) => {
     190                        return (
     191                            <SpeakersOption { ...optionData } />
     192                        );
     193                    },
     194                } }
    183195            />
    184196        );
     
    186198}
    187199
    188 const optionsSelect = ( select, props ) => {
    189     const { mode } = props.attributes;
    190     const { getEntityRecords } = select( 'core' );
    191 
    192     let options = [];
    193 
    194     if ( ! mode || 'specific_terms' === mode ) {
    195         const terms = getEntityRecords( 'taxonomy', 'wcb_speaker_group', {
    196             orderby  : 'name',
    197             order    : 'asc',
    198             per_page : 100,
    199         } );
    200 
    201         options.push( {
    202             label   : __( 'Groups', 'wordcamporg' ),
    203             options : map( terms || [], ( term ) => {
    204                 return {
    205                     label : decodeEntities( term.name ) || __( '(Untitled)', 'wordcamporg' ),
    206                     value : term.id,
    207                     type  : 'term',
    208                     count : term.count,
    209                 };
    210             } ),
    211         } );
    212     }
    213 
    214     if ( ! mode || 'specific_posts' === mode ) {
    215         const posts = getEntityRecords( 'postType', 'wcb_speaker', {
    216             orderby  : 'title',
    217             order    : 'asc',
    218             per_page : 100,
    219             _embed   : true,
    220         } );
    221 
    222         options.push( {
    223             label   : __( 'Speakers', 'wordcamporg' ),
    224             options : map( posts || [], ( post ) => {
    225                 return {
    226                     label  : decodeEntities( post.title.rendered.trim() ) || __( '(Untitled)', 'wordcamporg' ),
    227                     value  : post.id,
    228                     type   : 'post',
    229                     avatar : post[ 'avatar_urls' ][ '24' ],
    230                 };
    231             } ),
    232         } );
    233     }
    234 
    235     return {
    236         selectOptions: options,
    237     };
    238 };
    239 
    240 export default withSelect( optionsSelect )( SpeakersSelect );
     200function SpeakersOption( { type, label = '', avatar = '', count = 0 } ) {
     201    let image, content;
     202
     203    switch ( type ) {
     204        case 'post' :
     205            image = (
     206                <AvatarImage
     207                    className="wordcamp-speakers-select-option-avatar"
     208                    name={ label }
     209                    size={ 24 }
     210                    url={ avatar }
     211                />
     212            );
     213            content = (
     214                <span className="wordcamp-speakers-select-option-label">
     215                    { label }
     216                </span>
     217            );
     218            break;
     219
     220        case 'term' :
     221            image = (
     222                <div className="wordcamp-speakers-select-option-icon-container">
     223                    <Dashicon
     224                        className="wordcamp-speakers-select-option-icon"
     225                        icon={ 'megaphone' }
     226                        size={ 16 }
     227                    />
     228                </div>
     229            );
     230            content = (
     231                <span className="wordcamp-speakers-select-option-label">
     232                    { label }
     233                    <span className="wordcamp-speakers-select-option-label-term-count">
     234                        { count }
     235                    </span>
     236                </span>
     237            );
     238            break;
     239    }
     240
     241    return (
     242        <div className="wordcamp-speakers-select-option">
     243            { image }
     244            { content }
     245        </div>
     246    );
     247}
     248
     249export default SpeakersSelect;
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/assets/src/speakers/toolbar.js

    r8005 r8253  
    1212        const { attributes, setAttributes } = this.props;
    1313        const { layout } = attributes;
    14         const { options } = data;
     14        const { layout: layoutOptions = {} } = data.options;
    1515
    1616        return (
    1717            <BlockControls>
    1818                <Toolbar
    19                     controls={ options.layout.map( ( option ) => {
     19                    controls={ layoutOptions.map( ( option ) => {
    2020                        const icon     = `${ option.value }-view`;
    2121                        const isActive = layout === option.value;
  • sites/trunk/wordcamp.org/public_html/wp-content/mu-plugins/blocks/babel.config.js

    r8011 r8253  
    33
    44    return {
    5         presets: [ '@wordpress/babel-preset-default' ],