├── .npmignore
├── webpack.build.config.js
├── tests.webpack.js
├── example
└── index.html
├── src
├── index.js
└── Component.jsx
├── test
└── test.spec.js
├── karma.conf.js
├── LICENSE
├── README.md
├── webpack.config.js
├── .gitignore
├── package.json
├── .eslintrc
└── lib
└── app.min.js
/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | webpack.conf.js
--------------------------------------------------------------------------------
/webpack.build.config.js:
--------------------------------------------------------------------------------
1 | process.env.WEBPACK_ENV = 'build';
2 |
3 | module.exports = require('./webpack.config');
4 |
--------------------------------------------------------------------------------
/tests.webpack.js:
--------------------------------------------------------------------------------
1 | var context = require.context('./test', true, /.+\.spec\.jsx?$/);
2 |
3 | require('core-js/es5');
4 |
5 | context.keys().forEach(context);
6 | module.exports = context;
7 |
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | React webpack starter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import Component from './Component';
4 |
5 | window.onload = () => {
6 | ReactDOM.render(
7 | ,
8 | document.querySelector('#container')
9 | );
10 | };
11 |
--------------------------------------------------------------------------------
/src/Component.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | var Component = React.createClass({
4 | render: function () {
5 | if (this.props.onRender) {
6 | this.props.onRender();
7 | }
8 | return (
9 | Hello world
10 | );
11 | },
12 | propTypes: {
13 | onRender: React.PropTypes.func
14 | }
15 | });
16 |
17 | export default Component;
18 |
--------------------------------------------------------------------------------
/test/test.spec.js:
--------------------------------------------------------------------------------
1 | import Component from '../src/Component.jsx';
2 | import TestUtils from 'react-addons-test-utils';
3 | import React from 'react';
4 |
5 | var component;
6 | var spy = sinon.spy();
7 |
8 | describe('Given an instance of the Component', () => {
9 | describe('when we render the component', () => {
10 | before(() => {
11 | component = TestUtils.renderIntoDocument();
12 | });
13 | it('should render a paragraph', () => {
14 | var paragraph = TestUtils.scryRenderedDOMComponentsWithTag(component, 'p');
15 |
16 | expect(paragraph).to.have.length.above(0, 'Expected to have element with tag ');
17 | expect(spy).to.be.calledOnce;
18 | });
19 | });
20 | });
21 |
--------------------------------------------------------------------------------
/karma.conf.js:
--------------------------------------------------------------------------------
1 | var webpackConfig = require('./webpack.config');
2 | webpackConfig.devtool = 'inline-source-map';
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | browsers: [ 'PhantomJS' ],
7 | singleRun: true,
8 | frameworks: [ 'mocha', 'chai', 'sinon', 'sinon-chai' ],
9 | files: [
10 | 'tests.webpack.js'
11 | ],
12 | plugins: [
13 | 'karma-phantomjs-launcher',
14 | 'karma-chai',
15 | 'karma-mocha',
16 | 'karma-sourcemap-loader',
17 | 'karma-webpack',
18 | 'karma-mocha-reporter',
19 | 'karma-sinon',
20 | 'karma-sinon-chai'
21 | ],
22 | preprocessors: {
23 | 'tests.webpack.js': [ 'webpack', 'sourcemap' ]
24 | },
25 | reporters: [ 'mocha' ],
26 | webpack: webpackConfig,
27 | webpackServer: {
28 | noInfo: true
29 | },
30 | autoWatch: true
31 | });
32 | };
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Krasimir Tsonev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React webpack starter template
2 |
3 | The aim of this repository is to provide a template for developing [React](https://facebook.github.io/react/) based applications using ES6 syntax and [webpack](https://webpack.github.io/) as a module bundler.
4 |
5 | ## Features
6 |
7 | * Bundles [React](https://facebook.github.io/react/) with `jsx` syntax
8 | * Compiles ES6 (with [Babel](https://babeljs.io/))
9 | * Linting (with [ESLint](http://eslint.org/))
10 | * Build with [webpack](https://webpack.github.io/)
11 | * Test with [Mocha](http://mochajs.org/), [Chai](http://chaijs.com/) and [Sinon](http://sinonjs.org/)
12 | * Use [Karma](http://karma-runner.github.io/) to run the tests
13 | * Develop locally with [webpack-dev-server](http://webpack.github.io/docs/webpack-dev-server.html)
14 |
15 | ## Usage
16 |
17 | * Download the files and place them in your project directory
18 | * Run `npm i` to install the dependencies
19 | * Run `npm run build` to build the project
20 | * Run `npm run dev` to build the project, start watching files and run the local server
21 | * Run `npm test` to run the tests once
22 | * Run `npm run test:ci` to watch the `src` directory for changes and run the tests
23 |
24 | ## MISC
25 |
26 | * [A modern React starter pack based on webpack](http://krasimirtsonev.com/blog/article/a-modern-react-starter-pack-based-on-webpack)
27 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack');
2 | var UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
3 | var env = process.env.WEBPACK_ENV || 'dev';
4 | var WebpackDevServer = require('webpack-dev-server');
5 | var path = require('path');
6 |
7 | var appName = 'app';
8 | var host = '0.0.0.0';
9 | var port = '9000';
10 |
11 | var plugins = [], outputFile;
12 |
13 | if (env === 'build') {
14 | plugins.push(new UglifyJsPlugin({ minimize: true }));
15 | outputFile = appName + '.min.js';
16 | } else {
17 | outputFile = appName + '.js';
18 | }
19 |
20 | var config = {
21 | entry: './src/index.js',
22 | devtool: 'source-map',
23 | output: {
24 | path: __dirname + '/lib',
25 | filename: outputFile,
26 | publicPath: __dirname + '/example'
27 | },
28 | module: {
29 | loaders: [
30 | {
31 | test: /(\.jsx|\.js)$/,
32 | loader: 'babel',
33 | exclude: /(node_modules|bower_components)/,
34 | query: {
35 | presets: ['react', 'es2015']
36 | }
37 | },
38 | {
39 | test: /(\.jsx|\.js)$/,
40 | loader: "eslint-loader",
41 | exclude: /node_modules/
42 | }
43 | ]
44 | },
45 | resolve: {
46 | root: path.resolve('./src'),
47 | extensions: ['', '.js', '.jsx']
48 | },
49 | plugins: plugins
50 | };
51 |
52 | if (env === 'dev') {
53 | new WebpackDevServer(webpack(config), {
54 | contentBase: './example',
55 | hot: true,
56 | debug: true
57 | }).listen(port, host, function (err, result) {
58 | if (err) {
59 | console.log(err);
60 | }
61 | });
62 | console.log('-------------------------');
63 | console.log('Local web server runs at http://' + host + ':' + port);
64 | console.log('-------------------------');
65 | }
66 |
67 | module.exports = config;
68 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Build ...
2 | node_modules
3 | npm-debug.log
4 | public
5 | tmp
6 |
7 | # Created by https://www.gitignore.io
8 |
9 | ### OSX ###
10 | .DS_Store
11 | .AppleDouble
12 | .LSOverride
13 |
14 | # Icon must end with two \r
15 | Icon
16 |
17 |
18 | # Thumbnails
19 | ._*
20 |
21 | # Files that might appear in the root of a volume
22 | .DocumentRevisions-V100
23 | .fseventsd
24 | .Spotlight-V100
25 | .TemporaryItems
26 | .Trashes
27 | .VolumeIcon.icns
28 |
29 | # Directories potentially created on remote AFP share
30 | .AppleDB
31 | .AppleDesktop
32 | Network Trash Folder
33 | Temporary Items
34 | .apdisk
35 |
36 |
37 | ### Vim ###
38 | [._]*.s[a-w][a-z]
39 | [._]s[a-w][a-z]
40 | *.un~
41 | Session.vim
42 | .netrwhist
43 | *~
44 |
45 |
46 | ### SublimeText ###
47 | # cache files for sublime text
48 | *.tmlanguage.cache
49 | *.tmPreferences.cache
50 | *.stTheme.cache
51 |
52 | # workspace files are user-specific
53 | *.sublime-workspace
54 |
55 | # project files should be checked into the repository, unless a significant
56 | # proportion of contributors will probably not be using SublimeText
57 | # *.sublime-project
58 |
59 | # sftp configuration file
60 | sftp-config.json
61 |
62 |
63 | ### Node ###
64 | # Logs
65 | logs
66 | *.log
67 |
68 | # Runtime data
69 | pids
70 | *.pid
71 | *.seed
72 |
73 | # Directory for instrumented libs generated by jscoverage/JSCover
74 | lib-cov
75 |
76 | # Coverage directory used by tools like istanbul
77 | coverage
78 |
79 | # node-waf configuration
80 | .lock-wscript
81 |
82 | # Compiled binary addons (http://nodejs.org/api/addons.html)
83 | build
84 |
85 | # Dependency directory
86 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
87 | node_modules
88 |
89 |
90 | ### Linux ###
91 | *~
92 |
93 | # KDE directory preferences
94 | .directory
95 |
96 | # Linux trash folder which might appear on any partition or disk
97 | .Trash-*
98 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-webpack-starter",
3 | "version": "1.0.0",
4 | "description": "React webpack starter template",
5 | "main": "lib/index.js",
6 | "dependencies": {},
7 | "author": {
8 | "name": "Krasimir Tsonev",
9 | "email": "info@krasimirtsonev.com",
10 | "url": "http://krasimirtsonev.com"
11 | },
12 | "license": "MIT",
13 | "keywords": [
14 | "react",
15 | "carousel",
16 | "responsive"
17 | ],
18 | "repository": {
19 | "type": "git",
20 | "url": "git@github.com:krasimir/react-webpack-starter.git"
21 | },
22 | "scripts": {
23 | "dev": "./node_modules/.bin/webpack --watch --inline",
24 | "build": "./node_modules/.bin/webpack --config=webpack.build.config.js",
25 | "test": "karma start",
26 | "test:ci": "watch 'npm run test' src/"
27 | },
28 | "devDependencies": {
29 | "babel": "6.5.2",
30 | "babel-core": "6.6.5",
31 | "babel-eslint": "7.2.1",
32 | "babel-loader": "6.2.4",
33 | "babel-preset-es2015": "6.6.0",
34 | "babel-preset-react": "6.5.0",
35 | "chai": "3.3.0",
36 | "core-js": "1.1.4",
37 | "eslint": "3.19.0",
38 | "eslint-loader": "1.7.1",
39 | "eslint-plugin-react": "6.10.3",
40 | "karma": "0.13.19",
41 | "karma-chai": "0.1.0",
42 | "karma-chai-plugins": "0.6.0",
43 | "karma-chai-sinon": "0.1.5",
44 | "karma-chrome-launcher": "0.2.0",
45 | "karma-mocha": "0.2.0",
46 | "karma-mocha-reporter": "1.1.1",
47 | "karma-phantomjs-launcher": "1.0.2",
48 | "karma-sinon": "1.0.4",
49 | "karma-sinon-chai": "1.1.0",
50 | "karma-sourcemap-loader": "0.3.5",
51 | "karma-webpack": "1.7.0",
52 | "mocha": "2.3.4",
53 | "phantomjs": "1.9.19",
54 | "react": "15.2.0",
55 | "react-addons-test-utils": "15.2.0",
56 | "react-dom": "15.2.0",
57 | "watch": "0.16.0",
58 | "webpack": "1.12.2",
59 | "webpack-dev-server": "1.11.0"
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "esversion": 6,
3 |
4 | "ecmaFeatures": {
5 | "globalReturn": true,
6 | "jsx": true,
7 | "modules": true
8 | },
9 |
10 | "env": {
11 | "browser": true,
12 | "es6": true,
13 | "node": true
14 | },
15 |
16 | "globals": {
17 | "document": false,
18 | "escape": false,
19 | "navigator": false,
20 | "unescape": false,
21 | "window": false,
22 | "describe": true,
23 | "before": true,
24 | "it": true,
25 | "expect": true,
26 | "sinon": true
27 | },
28 |
29 | "parser": "babel-eslint",
30 |
31 | "plugins": [
32 | "react"
33 | ],
34 |
35 | "rules": {
36 | "block-scoped-var": 2,
37 | "brace-style": [2, "1tbs", { "allowSingleLine": true }],
38 | "camelcase": [2, { "properties": "always" }],
39 | "comma-dangle": [2, "never"],
40 | "comma-spacing": [2, { "before": false, "after": true }],
41 | "comma-style": [2, "last"],
42 | "complexity": 0,
43 | "consistent-return": 2,
44 | "consistent-this": 0,
45 | "curly": [2, "multi-line"],
46 | "default-case": 0,
47 | "dot-location": [2, "property"],
48 | "dot-notation": 0,
49 | "eol-last": 2,
50 | "eqeqeq": [2, "allow-null"],
51 | "func-names": 0,
52 | "func-style": 0,
53 | "generator-star-spacing": [2, "both"],
54 | "guard-for-in": 0,
55 | "handle-callback-err": [2, "^(err|error|anySpecificError)$" ],
56 | "indent": [2, 2, { "SwitchCase": 1 }],
57 | "key-spacing": [2, { "beforeColon": false, "afterColon": true }],
58 | "linebreak-style": 0,
59 | "max-depth": 0,
60 | "max-len": [2, 120, 4],
61 | "max-nested-callbacks": 0,
62 | "max-params": 0,
63 | "max-statements": 0,
64 | "new-cap": [2, { "newIsCap": true, "capIsNew": false }],
65 | "newline-after-var": [2, "always"],
66 | "new-parens": 2,
67 | "no-alert": 0,
68 | "no-array-constructor": 2,
69 | "no-bitwise": 0,
70 | "no-caller": 2,
71 | "no-catch-shadow": 0,
72 | "no-cond-assign": 2,
73 | "no-console": 0,
74 | "no-constant-condition": 0,
75 | "no-continue": 0,
76 | "no-control-regex": 2,
77 | "no-debugger": 2,
78 | "no-delete-var": 2,
79 | "no-div-regex": 0,
80 | "no-dupe-args": 2,
81 | "no-dupe-keys": 2,
82 | "no-duplicate-case": 2,
83 | "no-else-return": 2,
84 | "no-empty": 0,
85 | "no-empty-character-class": 2,
86 | "no-eq-null": 0,
87 | "no-eval": 2,
88 | "no-ex-assign": 2,
89 | "no-extend-native": 2,
90 | "no-extra-bind": 2,
91 | "no-extra-boolean-cast": 2,
92 | "no-extra-parens": 0,
93 | "no-extra-semi": 0,
94 | "no-extra-strict": 0,
95 | "no-fallthrough": 2,
96 | "no-floating-decimal": 2,
97 | "no-func-assign": 2,
98 | "no-implied-eval": 2,
99 | "no-inline-comments": 0,
100 | "no-inner-declarations": [2, "functions"],
101 | "no-invalid-regexp": 2,
102 | "no-irregular-whitespace": 2,
103 | "no-iterator": 2,
104 | "no-label-var": 2,
105 | "no-labels": 2,
106 | "no-lone-blocks": 0,
107 | "no-lonely-if": 0,
108 | "no-loop-func": 0,
109 | "no-mixed-requires": 0,
110 | "no-mixed-spaces-and-tabs": [2, false],
111 | "no-multi-spaces": 2,
112 | "no-multi-str": 2,
113 | "no-multiple-empty-lines": [2, { "max": 1 }],
114 | "no-native-reassign": 2,
115 | "no-negated-in-lhs": 2,
116 | "no-nested-ternary": 0,
117 | "no-new": 2,
118 | "no-new-func": 2,
119 | "no-new-object": 2,
120 | "no-new-require": 2,
121 | "no-new-wrappers": 2,
122 | "no-obj-calls": 2,
123 | "no-octal": 2,
124 | "no-octal-escape": 2,
125 | "no-path-concat": 0,
126 | "no-plusplus": 0,
127 | "no-process-env": 0,
128 | "no-process-exit": 0,
129 | "no-proto": 2,
130 | "no-redeclare": 2,
131 | "no-regex-spaces": 2,
132 | "no-reserved-keys": 0,
133 | "no-restricted-modules": 0,
134 | "no-return-assign": 2,
135 | "no-script-url": 0,
136 | "no-self-compare": 2,
137 | "no-sequences": 2,
138 | "no-shadow": 0,
139 | "no-shadow-restricted-names": 2,
140 | "no-spaced-func": 2,
141 | "no-sparse-arrays": 2,
142 | "no-sync": 0,
143 | "no-ternary": 0,
144 | "no-throw-literal": 2,
145 | "no-trailing-spaces": 2,
146 | "no-undef": 2,
147 | "no-undef-init": 2,
148 | "no-undefined": 0,
149 | "no-underscore-dangle": 0,
150 | "no-unneeded-ternary": 2,
151 | "no-unreachable": 2,
152 | "no-unused-expressions": 0,
153 | "no-unused-vars": [2, { "vars": "all", "args": "none" }],
154 | "no-use-before-define": 2,
155 | "no-var": 0,
156 | "no-void": 0,
157 | "no-warning-comments": 0,
158 | "no-with": 2,
159 | "one-var": 0,
160 | "operator-assignment": 0,
161 | "operator-linebreak": [2, "after"],
162 | "padded-blocks": 0,
163 | "quote-props": 0,
164 | "quotes": [2, "single", "avoid-escape"],
165 | "radix": 2,
166 | "jsx-quotes": [2, "prefer-single"],
167 | "react/display-name": 0,
168 | "react/jsx-boolean-value": 2,
169 | "react/jsx-no-undef": 2,
170 | "react/jsx-sort-prop-types": 0,
171 | "react/jsx-sort-props": 0,
172 | "react/jsx-uses-react": 2,
173 | "react/jsx-uses-vars": 2,
174 | "react/no-did-mount-set-state": 2,
175 | "react/no-did-update-set-state": 2,
176 | "react/no-multi-comp": 2,
177 | "react/no-unknown-property": 2,
178 | "react/prop-types": 2,
179 | "react/react-in-jsx-scope": 2,
180 | "react/self-closing-comp": 2,
181 | "react/sort-comp": 0,
182 | "react/jsx-wrap-multilines": 2,
183 | "semi": [2, "always"],
184 | "semi-spacing": 0,
185 | "sort-vars": 0,
186 | "keyword-spacing": [2, {"before": true, "after": true}],
187 | "space-before-blocks": [2, "always"],
188 | "space-before-function-paren": [2, {"anonymous": "always", "named": "never"}],
189 | "space-in-brackets": 0,
190 | "space-in-parens": [2, "never"],
191 | "space-infix-ops": 2,
192 | "space-unary-ops": [2, { "words": true, "nonwords": false }],
193 | "spaced-comment": [2, "always"],
194 | "strict": 0,
195 | "use-isnan": 2,
196 | "valid-jsdoc": 0,
197 | "valid-typeof": 2,
198 | "vars-on-top": 2,
199 | "wrap-iife": [2, "any"],
200 | "wrap-regex": 0,
201 | "yoda": [2, "never"]
202 | }
203 | }
204 |
--------------------------------------------------------------------------------
/lib/app.min.js:
--------------------------------------------------------------------------------
1 | !function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="/Users/krasimir/Work/Krasimir/react-webpack-starter/example",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),i=o(r),a=n(33),u=o(a),s=n(170),c=o(s);window.onload=function(){u["default"].render(i["default"].createElement(c["default"],null),document.querySelector("#container"))}},function(e,t,n){"use strict";e.exports=n(2)},function(e,t,n){(function(t){"use strict";var o=n(4),r=n(5),i=n(17),a=n(20),u=n(25),s=n(9),c=n(30),l=n(31),p=n(32),d=n(11),f=s.createElement,h=s.createFactory,m=s.cloneElement;if("production"!==t.env.NODE_ENV){var v=n(27);f=v.createElement,h=v.createFactory,m=v.cloneElement}var g=o;if("production"!==t.env.NODE_ENV){var E=!1;g=function(){return"production"!==t.env.NODE_ENV?d(E,"React.__spread is deprecated and should not be used. Use Object.assign directly or another helper function with similar semantics. You may be seeing this warning due to your compiler. See https://fb.me/react-spread-deprecation for more details."):void 0,E=!0,o.apply(null,arguments)}}var y={Children:{map:r.map,forEach:r.forEach,count:r.count,toArray:r.toArray,only:p},Component:i,createElement:f,cloneElement:m,isValidElement:s.isValidElement,PropTypes:c,createClass:a.createClass,createFactory:h,createMixin:function(e){return e},DOM:u,version:l,__spread:g};e.exports=y}).call(t,n(3))},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function i(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function a(){m&&f&&(m=!1,f.length?h=f.concat(h):v=-1,h.length&&u())}function u(){if(!m){var e=r(a);m=!0;for(var t=h.length;t;){for(f=h,h=[];++v1)for(var n=1;nn;n++)t["_"+String.fromCharCode(n)]=n;var o=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==o.join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},r)).join("")?!1:!0}catch(i){return!1}}var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=o()?Object.assign:function(e,t){for(var o,u,s=n(e),c=1;co;o++)n+="&args[]="+encodeURIComponent(arguments[o+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var r=new Error(n);throw r.name="Invariant Violation",r.framesToPop=1,r}e.exports=n},function(e,t,n){(function(t){"use strict";function n(e,t,n,r,i,a,u,s){if(o(t),!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,i,a,u,s],p=0;c=new Error(t.replace(/%s/g,function(){return l[p++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}}var o=function(e){};"production"!==t.env.NODE_ENV&&(o=function(e){if(void 0===e)throw new Error("invariant requires an error message argument")}),e.exports=n}).call(t,n(3))},function(e,t,n){(function(t){"use strict";function o(e){if("production"!==t.env.NODE_ENV&&p.call(e,"ref")){var n=Object.getOwnPropertyDescriptor(e,"ref").get;if(n&&n.isReactWarning)return!1}return void 0!==e.ref}function r(e){if("production"!==t.env.NODE_ENV&&p.call(e,"key")){var n=Object.getOwnPropertyDescriptor(e,"key").get;if(n&&n.isReactWarning)return!1}return void 0!==e.key}var i,a,u=n(4),s=n(10),c=n(11),l=n(13),p=Object.prototype.hasOwnProperty,d="function"==typeof Symbol&&Symbol["for"]&&Symbol["for"]("react.element")||60103,f={key:!0,ref:!0,__self:!0,__source:!0},h=function(e,n,o,r,i,a,u){var s={$$typeof:d,type:e,key:n,ref:o,props:u,_owner:a};return"production"!==t.env.NODE_ENV&&(s._store={},l?(Object.defineProperty(s._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(s,"_self",{configurable:!1,enumerable:!1,writable:!1,value:r}),Object.defineProperty(s,"_source",{configurable:!1,enumerable:!1,writable:!1,value:i})):(s._store.validated=!1,s._self=r,s._source=i),Object.freeze&&(Object.freeze(s.props),Object.freeze(s))),s};h.createElement=function(e,n,u){var l,m={},v=null,g=null,E=null,y=null;if(null!=n){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?c(null==n.__proto__||n.__proto__===Object.prototype,"React.createElement(...): Expected props argument to be a plain object. Properties defined in its prototype chain will be ignored."):void 0),o(n)&&(g=n.ref),r(n)&&(v=""+n.key),E=void 0===n.__self?null:n.__self,y=void 0===n.__source?null:n.__source;for(l in n)p.call(n,l)&&!f.hasOwnProperty(l)&&(m[l]=n[l])}var b=arguments.length-2;if(1===b)m.children=u;else if(b>1){for(var _=Array(b),N=0;b>N;N++)_[N]=arguments[N+2];m.children=_}if(e&&e.defaultProps){var C=e.defaultProps;for(l in C)void 0===m[l]&&(m[l]=C[l])}if("production"!==t.env.NODE_ENV){var D="function"==typeof e?e.displayName||e.name||"Unknown":e,O=function(){return void(i||(i=!0,"production"!==t.env.NODE_ENV?c(!1,"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",D):void 0))};O.isReactWarning=!0;var T=function(){return void(a||(a=!0,"production"!==t.env.NODE_ENV?c(!1,"%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",D):void 0))};T.isReactWarning=!0,("undefined"==typeof m.$$typeof||m.$$typeof!==d)&&(m.hasOwnProperty("key")||Object.defineProperty(m,"key",{get:O,configurable:!0}),m.hasOwnProperty("ref")||Object.defineProperty(m,"ref",{get:T,configurable:!0}))}return h(e,v,g,E,y,s.current,m)},h.createFactory=function(e){var t=h.createElement.bind(null,e);return t.type=e,t},h.cloneAndReplaceKey=function(e,t){var n=h(e.type,t,e.ref,e._self,e._source,e._owner,e.props);return n},h.cloneElement=function(e,n,i){var a,l=u({},e.props),d=e.key,m=e.ref,v=e._self,g=e._source,E=e._owner;if(null!=n){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?c(null==n.__proto__||n.__proto__===Object.prototype,"React.cloneElement(...): Expected props argument to be a plain object. Properties defined in its prototype chain will be ignored."):void 0),o(n)&&(m=n.ref,E=s.current),r(n)&&(d=""+n.key);var y;e.type&&e.type.defaultProps&&(y=e.type.defaultProps);for(a in n)p.call(n,a)&&!f.hasOwnProperty(a)&&(void 0===n[a]&&void 0!==y?l[a]=y[a]:l[a]=n[a])}var b=arguments.length-2;if(1===b)l.children=i;else if(b>1){for(var _=Array(b),N=0;b>N;N++)_[N]=arguments[N+2];l.children=_}return h(e.type,d,m,v,g,E,l)},h.isValidElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===d},h.REACT_ELEMENT_TYPE=d,e.exports=h}).call(t,n(3))},function(e,t){"use strict";var n={current:null};e.exports=n},function(e,t,n){(function(t){"use strict";var o=n(12),r=o;"production"!==t.env.NODE_ENV&&!function(){var e=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;t>o;o++)n[o-1]=arguments[o];var r=0,i="Warning: "+e.replace(/%s/g,function(){return n[r++]});"undefined"!=typeof console&&console.error(i);try{throw new Error(i)}catch(a){}};r=function(t,n){if(void 0===n)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==n.indexOf("Failed Composite propType: ")&&!t){for(var o=arguments.length,r=Array(o>2?o-2:0),i=2;o>i;i++)r[i-2]=arguments[i];e.apply(void 0,[n].concat(r))}}}(),e.exports=r}).call(t,n(3))},function(e,t){"use strict";function n(e){return function(){return e}}var o=function(){};o.thatReturns=n,o.thatReturnsFalse=n(!1),o.thatReturnsTrue=n(!0),o.thatReturnsNull=n(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){(function(t){"use strict";var n=!1;if("production"!==t.env.NODE_ENV)try{Object.defineProperty({},"x",{get:function(){}}),n=!0}catch(o){}e.exports=n}).call(t,n(3))},function(e,t,n){(function(t){"use strict";function o(e,t){return e&&"object"==typeof e&&null!=e.key?p.escape(e.key):t.toString(36)}function r(e,n,i,v){var g=typeof e;if(("undefined"===g||"boolean"===g)&&(e=null),null===e||"string"===g||"number"===g||s.isValidElement(e))return i(v,e,""===n?f+o(e,0):n),1;var E,y,b=0,_=""===n?f:n+h;if(Array.isArray(e))for(var N=0;N1?u-1:0),c=1;u>c;c++)s[c-1]=arguments[c];if(a!==e&&null!==a)"production"!==t.env.NODE_ENV?C(!1,"bind(): React component methods may only be bound to the component instance. See %s",r):void 0;else if(!s.length)return"production"!==t.env.NODE_ENV?C(!1,"bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See %s",r):void 0,o;var l=i.apply(o,arguments);return l.__reactBoundContext=e,l.__reactBoundMethod=n,l.__reactBoundArguments=s,l}}return o}function p(e){for(var t=e.__reactAutoBindPairs,n=0;n.")}return t}function i(e,n){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var o=v.uniqueKey||(v.uniqueKey={}),i=r(n);if(!o[i]){o[i]=!0;var a="";e&&e._owner&&e._owner!==s.current&&(a=" It was passed a child from "+e._owner.getName()+"."),"production"!==t.env.NODE_ENV?m(!1,'Each child in an array or iterator should have a unique "key" prop.%s%s See https://fb.me/react-warning-keys for more information.%s',i,a,c.getCurrentStackAddendum(e)):void 0}}}function a(e,t){if("object"==typeof e)if(Array.isArray(e))for(var n=0;n>",O={array:i("array"),bool:i("boolean"),func:i("function"),number:i("number"),object:i("object"),string:i("string"),symbol:i("symbol"),any:a(),arrayOf:u,element:s(),instanceOf:c,node:f(),objectOf:p,oneOf:l,oneOfType:d,shape:h};e.exports=O},function(e,t){"use strict";e.exports="15.2.0"},function(e,t,n){(function(t){"use strict";function o(e){return i.isValidElement(e)?void 0:"production"!==t.env.NODE_ENV?a(!1,"onlyChild must be passed a children with exactly one child."):r("23"),e}var r=n(7),i=n(9),a=n(8);e.exports=o}).call(t,n(3))},function(e,t,n){"use strict";e.exports=n(34)},function(e,t,n){(function(t){"use strict";var o=n(35),r=n(38),i=n(162),a=n(64),u=n(55),s=n(31),c=n(167),l=n(168),p=n(169),d=n(11);r.inject();var f={findDOMNode:c,render:i.render,unmountComponentAtNode:i.unmountComponentAtNode,version:s,unstable_batchedUpdates:u.batchedUpdates,unstable_renderSubtreeIntoContainer:p};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ComponentTree:{getClosestInstanceFromNode:o.getClosestInstanceFromNode,getNodeFromInstance:function(e){return e._renderedComponent&&(e=l(e)),e?o.getNodeFromInstance(e):null}},Mount:i,Reconciler:a}),"production"!==t.env.NODE_ENV){var h=n(48);if(h.canUseDOM&&window.top===window.self){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&(navigator.userAgent.indexOf("Chrome")>-1&&-1===navigator.userAgent.indexOf("Edge")||navigator.userAgent.indexOf("Firefox")>-1)){var m=-1===window.location.protocol.indexOf("http")&&-1===navigator.userAgent.indexOf("Firefox");console.debug("Download the React DevTools "+(m?"and use an HTTP server (instead of a file: URL) ":"")+"for a better development experience: https://fb.me/react-devtools")}var v=function(){};"production"!==t.env.NODE_ENV?d(-1!==(v.name||v.toString()).indexOf("testFn"),"It looks like you're using a minified copy of the development build of React. When deploying React apps to production, make sure to use the production build which skips development warnings and is faster. See https://fb.me/react-minification for more details."):void 0;var g=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV?d(!g,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var E=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim],y=0;y8&&11>=C),T=32,w=String.fromCharCode(T),x=f.topLevelTypes,I={beforeInput:{phasedRegistrationNames:{bubbled:y({onBeforeInput:null}),captured:y({onBeforeInputCapture:null})},dependencies:[x.topCompositionEnd,x.topKeyPress,x.topTextInput,x.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:y({onCompositionEnd:null}),captured:y({onCompositionEndCapture:null})},dependencies:[x.topBlur,x.topCompositionEnd,x.topKeyDown,x.topKeyPress,x.topKeyUp,x.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:y({onCompositionStart:null}),captured:y({onCompositionStartCapture:null})},dependencies:[x.topBlur,x.topCompositionStart,x.topKeyDown,x.topKeyPress,x.topKeyUp,x.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:y({onCompositionUpdate:null}),captured:y({onCompositionUpdateCapture:null})},dependencies:[x.topBlur,x.topCompositionUpdate,x.topKeyDown,x.topKeyPress,x.topKeyUp,x.topMouseDown]}},k=!1,P=null,S={eventTypes:I,extractEvents:function(e,t,n,o){return[c(e,t,n,o),d(e,t,n,o)]}};e.exports=S},function(e,t,n){"use strict";var o=n(22),r=o({bubbled:null,captured:null}),i=o({topAbort:null,topAnimationEnd:null,topAnimationIteration:null,topAnimationStart:null,topBlur:null,topCanPlay:null,topCanPlayThrough:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topDurationChange:null,topEmptied:null,topEncrypted:null,topEnded:null,topError:null,topFocus:null,topInput:null,topInvalid:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topLoadedData:null,topLoadedMetadata:null,topLoadStart:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topPause:null,topPlay:null,topPlaying:null,topProgress:null,topRateChange:null,topReset:null,topScroll:null,topSeeked:null,topSeeking:null,topSelectionChange:null,topStalled:null,topSubmit:null,topSuspend:null,topTextInput:null,topTimeUpdate:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topTransitionEnd:null,topVolumeChange:null,topWaiting:null,topWheel:null}),a={topLevelTypes:i,PropagationPhases:r};e.exports=a},function(e,t,n){(function(t){"use strict";function o(e,t,n){var o=t.dispatchConfig.phasedRegistrationNames[n];return b(e,o)}function r(e,n,r){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?E(e,"Dispatching inst must not be null"):void 0);var i=n?y.bubbled:y.captured,a=o(e,r,i);a&&(r._dispatchListeners=v(r._dispatchListeners,a),r._dispatchInstances=v(r._dispatchInstances,e))}function i(e){e&&e.dispatchConfig.phasedRegistrationNames&&m.traverseTwoPhase(e._targetInst,r,e)}function a(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._targetInst,n=t?m.getParentInstance(t):null;m.traverseTwoPhase(n,r,e)}}function u(e,t,n){if(n&&n.dispatchConfig.registrationName){var o=n.dispatchConfig.registrationName,r=b(e,o);r&&(n._dispatchListeners=v(n._dispatchListeners,r),n._dispatchInstances=v(n._dispatchInstances,e))}}function s(e){e&&e.dispatchConfig.registrationName&&u(e._targetInst,null,e)}function c(e){g(e,i)}function l(e){g(e,a)}function p(e,t,n,o){m.traverseEnterLeave(n,o,u,e,t)}function d(e){g(e,s)}var f=n(40),h=n(42),m=n(44),v=n(46),g=n(47),E=n(11),y=f.PropagationPhases,b=h.getListener,_={accumulateTwoPhaseDispatches:c,accumulateTwoPhaseDispatchesSkipTarget:l,accumulateDirectDispatches:d,accumulateEnterLeaveDispatches:p};e.exports=_}).call(t,n(3))},function(e,t,n){(function(t){"use strict";var o=n(7),r=n(43),i=n(44),a=n(45),u=n(46),s=n(47),c=n(8),l={},p=null,d=function(e,t){e&&(i.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},f=function(e){return d(e,!0)},h=function(e){return d(e,!1)},m={injection:{injectEventPluginOrder:r.injectEventPluginOrder,injectEventPluginsByName:r.injectEventPluginsByName},putListener:function(e,n,i){"function"!=typeof i?"production"!==t.env.NODE_ENV?c(!1,"Expected %s listener to be a function, instead got type %s",n,typeof i):o("94",n,typeof i):void 0;var a=l[n]||(l[n]={});a[e._rootNodeID]=i;var u=r.registrationNameModules[n];u&&u.didPutListener&&u.didPutListener(e,n,i)},getListener:function(e,t){var n=l[t];return n&&n[e._rootNodeID]},deleteListener:function(e,t){var n=r.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var o=l[t];o&&delete o[e._rootNodeID]},deleteAllListeners:function(e){for(var t in l)if(l.hasOwnProperty(t)&&l[t][e._rootNodeID]){var n=r.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t),delete l[t][e._rootNodeID]}},extractEvents:function(e,t,n,o){for(var i,a=r.plugins,s=0;s-1?void 0:"production"!==t.env.NODE_ENV?u(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a("96",e),!l.plugins[o]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?u(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a("97",e),l.plugins[o]=n;var i=n.eventTypes;for(var p in i)r(i[p],n,p)?void 0:"production"!==t.env.NODE_ENV?u(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",p,e):a("98",p,e)}}}function r(e,n,o){l.eventNameDispatchConfigs.hasOwnProperty(o)?"production"!==t.env.NODE_ENV?u(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",o):a("99",o):void 0,l.eventNameDispatchConfigs[o]=e;var r=e.phasedRegistrationNames;if(r){for(var s in r)if(r.hasOwnProperty(s)){var c=r[s];i(c,n,o)}return!0}return e.registrationName?(i(e.registrationName,n,o),!0):!1}function i(e,n,o){if(l.registrationNameModules[e]?"production"!==t.env.NODE_ENV?u(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a("100",e):void 0,l.registrationNameModules[e]=n,l.registrationNameDependencies[e]=n.eventTypes[o].dependencies,"production"!==t.env.NODE_ENV){var r=e.toLowerCase();l.possibleRegistrationNames[r]=e,"onDoubleClick"===e&&(l.possibleRegistrationNames.ondblclick=e)}}var a=n(7),u=n(8),s=null,c={},l={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==t.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){s?"production"!==t.env.NODE_ENV?u(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a("101"):void 0,s=Array.prototype.slice.call(e),o()},injectEventPluginsByName:function(e){var n=!1;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];c.hasOwnProperty(r)&&c[r]===i||(c[r]?"production"!==t.env.NODE_ENV?u(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",r):a("102",r):void 0,c[r]=i,n=!0)}n&&o()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return l.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var o=l.registrationNameModules[t.phasedRegistrationNames[n]];if(o)return o}return null},_resetEventPlugins:function(){s=null;for(var e in c)c.hasOwnProperty(e)&&delete c[e];l.plugins.length=0;var n=l.eventNameDispatchConfigs;for(var o in n)n.hasOwnProperty(o)&&delete n[o];var r=l.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i];if("production"!==t.env.NODE_ENV){var a=l.possibleRegistrationNames;for(var u in a)a.hasOwnProperty(u)&&delete a[u]}}};e.exports=l}).call(t,n(3))},function(e,t,n){(function(t){"use strict";function o(e){return e===_.topMouseUp||e===_.topTouchEnd||e===_.topTouchCancel}function r(e){return e===_.topMouseMove||e===_.topTouchMove}function i(e){return e===_.topMouseDown||e===_.topTouchStart}function a(e,t,n,o){var r=e.type||"unknown-event";e.currentTarget=N.getNodeFromInstance(o),t?g.invokeGuardedCallbackWithCatch(r,n,e):g.invokeGuardedCallback(r,n,e),e.currentTarget=null}function u(e,n){var o=e._dispatchListeners,r=e._dispatchInstances;if("production"!==t.env.NODE_ENV&&h(e),Array.isArray(o))for(var i=0;ie&&n[e]===r[e];e++);var a=o-e;for(t=1;a>=t&&n[o-t]===r[i-t];t++);var u=t>1?1-t:void 0;return this._fallbackText=r.slice(e,u),this._fallbackText}}),i.addPoolingTo(o),e.exports=o},function(e,t,n){"use strict";function o(){return!i&&r.canUseDOM&&(i="textContent"in document.documentElement?"textContent":"innerText"),i}var r=n(48),i=null;e.exports=o},function(e,t,n){"use strict";function o(e,t,n,o){return r.call(this,e,t,n,o)}var r=n(52),i={data:null};r.augmentClass(o,i),e.exports=o},function(e,t,n){(function(t){"use strict";function o(e,n,o,r){"production"!==t.env.NODE_ENV&&(delete this.nativeEvent,delete this.preventDefault,delete this.stopPropagation),this.dispatchConfig=e,this._targetInst=n,this.nativeEvent=o;var i=this.constructor.Interface;for(var a in i)if(i.hasOwnProperty(a)){"production"!==t.env.NODE_ENV&&delete this[a];var s=i[a];s?this[a]=s(o):"target"===a?this.target=r:this[a]=o[a]}var c=null!=o.defaultPrevented?o.defaultPrevented:o.returnValue===!1;return c?this.isDefaultPrevented=u.thatReturnsTrue:this.isDefaultPrevented=u.thatReturnsFalse,this.isPropagationStopped=u.thatReturnsFalse,this}function r(e,n){function o(e){var t=a?"setting the method":"setting the property";return i(t,"This is effectively a no-op"),e}function r(){var e=a?"accessing the method":"accessing the property",t=a?"This is a no-op function":"This is set to null";return i(e,t),n}function i(n,o){var r=!1;"production"!==t.env.NODE_ENV?s(r,"This synthetic event is reused for performance reasons. If you're seeing this, you're %s `%s` on a released/nullified synthetic event. %s. If you must keep the original synthetic event around, use event.persist(). See https://fb.me/react-event-pooling for more information.",n,e,o):void 0}var a="function"==typeof n;return{configurable:!0,set:o,get:r}}var i=n(4),a=n(6),u=n(12),s=n(11),c=!1,l="function"==typeof Proxy,p=["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"],d={type:null,target:null,currentTarget:u.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};i(o.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():e.returnValue=!1,this.isDefaultPrevented=u.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,this.isPropagationStopped=u.thatReturnsTrue)},persist:function(){this.isPersistent=u.thatReturnsTrue},isPersistent:u.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var n in e)"production"!==t.env.NODE_ENV?Object.defineProperty(this,n,r(n,e[n])):this[n]=null;for(var o=0;o8));var A=!1;_.canUseDOM&&(A=T("input")&&(!("documentMode"in document)||document.documentMode>11));var L={get:function(){return V.get.call(this)},set:function(e){R=""+e,V.set.call(this,e)}},U={eventTypes:k,extractEvents:function(e,t,n,r){var i,a,u=t?N.getNodeFromInstance(t):window;if(o(u)?M?i=s:a=c:w(u)?A?i=f:(i=m,a=h):v(u)&&(i=g),i){var l=i(e,t);if(l){var p=D.getPooled(k.change,l,n,r);return p.type="change",b.accumulateTwoPhaseDispatches(p),p}}a&&a(e,u,t)}};e.exports=U},function(e,t,n){(function(t){"use strict";function o(){I.ReactReconcileTransaction&&C?void 0:"production"!==t.env.NODE_ENV?E(!1,"ReactUpdates: must inject a reconcile transaction class and batching strategy"):l("123")}function r(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=d.getPooled(),this.reconcileTransaction=I.ReactReconcileTransaction.getPooled(!0)}function i(e,t,n,r,i,a){o(),C.batchedUpdates(e,t,n,r,i,a)}function a(e,t){return e._mountOrder-t._mountOrder}function u(e){var n=e.dirtyComponentsLength;n!==y.length?"production"!==t.env.NODE_ENV?E(!1,"Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).",n,y.length):l("124",n,y.length):void 0,y.sort(a),b++;for(var o=0;n>o;o++){var r=y[o],i=r._pendingCallbacks;r._pendingCallbacks=null;var u;if(h.logTopLevelRenders){var s=r;r._currentElement.props===r._renderedComponent._currentElement&&(s=r._renderedComponent),u="React update: "+s.getName(),console.time(u)}if(v.performUpdateIfNecessary(r,e.reconcileTransaction,b),u&&console.timeEnd(u),i)for(var c=0;c]/,s=n(83),c=s(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{o=o||document.createElement("div"),o.innerHTML="";for(var n=o.firstChild.childNodes,r=0;r]/;e.exports=o},function(e,t,n){(function(t){"use strict";function o(e){return e.substring(1,e.indexOf(" "))}var r=n(7),i=n(80),a=n(48),u=n(87),s=n(12),c=n(89),l=n(8),p=/^(<[^ \/>]+)/,d="data-danger-index",f={dangerouslyRenderMarkup:function(e){a.canUseDOM?void 0:"production"!==t.env.NODE_ENV?l(!1,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString for server rendering."):r("51");for(var n,i={},f=0;f node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString()."):r("58"):void 0,"string"==typeof n){var o=u(n,s)[0];e.parentNode.replaceChild(o,e)}else i.replaceChildWithTree(e,n)}};e.exports=f}).call(t,n(3))},function(e,t,n){(function(t){"use strict";function o(e){var t=e.match(l);return t&&t[1].toLowerCase()}function r(e,n){var r=c;c?void 0:"production"!==t.env.NODE_ENV?s(!1,"createNodesFromMarkup dummy not initialized"):s(!1);var i=o(e),l=i&&u(i);if(l){r.innerHTML=l[1]+e+l[2];for(var p=l[0];p--;)r=r.lastChild}else r.innerHTML=e;var d=r.getElementsByTagName("script");d.length&&(n?void 0:"production"!==t.env.NODE_ENV?s(!1,"createNodesFromMarkup(...): Unexpected