From 626cf5901d9f5dedf06960f4fe5e1bcbffd86044 Mon Sep 17 00:00:00 2001
From: Jure Triglav <juretriglav@gmail.com>
Date: Fri, 2 Feb 2018 18:49:02 +0100
Subject: [PATCH] feat(client): upgrade React to version 16

BREAKING CHANGE: Upgrade React to version 16

closes #65
---
 packages/client/package.json                  |   9 +-
 .../test/components/UpdateSubscriber.test.jsx |   9 +-
 .../client/test/helpers/Authorize.test.jsx    |   6 +-
 packages/client/test/jest-setup.js            |   4 +
 packages/components/package.json              |   8 +-
 .../components/packages/Blog/package.json     |   2 +-
 .../packages/FormGroup/package.json           |   6 +-
 .../packages/InkFrontend/package.json         |   4 +-
 .../components/packages/Login/package.json    |   2 +-
 .../packages/Navigation/package.json          |   2 +-
 .../PasswordResetFrontend/package.json        |   2 +-
 .../packages/PostsManager/package.json        |   4 +-
 .../components/packages/Signup/package.json   |   2 +-
 .../packages/TeamsManager/package.json        |   4 +-
 .../packages/UsersManager/package.json        |   2 +-
 packages/components/test/jest-setup.js        |   4 +
 packages/styleguide/package.json              |   4 +-
 packages/ui/package.json                      |   6 +-
 packages/ui/test/AlignmentBox.test.js         |   2 +-
 packages/ui/test/StateItem.test.js            |   2 +-
 packages/ui/test/setup/enzyme.js              |   2 +-
 yarn.lock                                     | 186 +++++++++++++-----
 22 files changed, 184 insertions(+), 88 deletions(-)

diff --git a/packages/client/package.json b/packages/client/package.json
index 823ecdf44..19b41d8ab 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -23,7 +23,7 @@
     "lodash": "^4.0.0",
     "prop-types": "^15.5.8",
     "pubsweet-component-login": "^0.6.0",
-    "react": "^15.4.4",
+    "react": "^16.2.0",
     "react-css-themr": "^2.1.2",
     "react-redux": "^5.0.2",
     "react-router-dom": "^4.2.2",
@@ -39,13 +39,14 @@
     "babel-preset-env": "^1.6.0",
     "babel-preset-react": "^6.24.1",
     "babel-preset-stage-2": "^6.24.1",
-    "enzyme": "^2.9.1",
+    "enzyme": "^3.3.0",
+    "enzyme-adapter-react-16": "^1.1.1",
     "eventsourcemock": "^1.0.1",
     "isomorphic-form-data": "^1.0.0",
     "jest": "^22.1.4",
     "nock": "^9.0.14",
-    "react-dom": "^15.6.1",
-    "react-test-renderer": "^15.6.1",
+    "react-dom": "^16.2.0",
+    "react-test-renderer": "^16.2.0",
     "redux-mock-store": "^1.3.0"
   },
   "peerDependencies": {
diff --git a/packages/client/test/components/UpdateSubscriber.test.jsx b/packages/client/test/components/UpdateSubscriber.test.jsx
index 124d36ed0..c014807f5 100644
--- a/packages/client/test/components/UpdateSubscriber.test.jsx
+++ b/packages/client/test/components/UpdateSubscriber.test.jsx
@@ -29,7 +29,7 @@ describe('<UpdateSubscriber/>', () => {
   it('is connected after open event', () => {
     const wrapper = makeWrapper()
     sources['/updates?access_token=tok'].emit('open')
-
+    wrapper.update()
     expect(wrapper.html()).toContain('color:green')
   })
 
@@ -37,6 +37,7 @@ describe('<UpdateSubscriber/>', () => {
     const wrapper = makeWrapper()
 
     sources['/updates?access_token=tok'].emit('open')
+    wrapper.update()
     expect(wrapper.html()).toContain('color:green')
 
     sources['/updates?access_token=tok'].readyState = 0
@@ -49,6 +50,7 @@ describe('<UpdateSubscriber/>', () => {
     const wrapper = makeWrapper()
 
     sources['/updates?access_token=tok'].emit('open')
+    wrapper.update()
     expect(wrapper.html()).toContain('color:green')
 
     sources['/updates?access_token=tok'].emit('close')
@@ -69,9 +71,7 @@ describe('<UpdateSubscriber/>', () => {
     })
   })
 
-  // TODO enable this test once PR is merged
-  // https://github.com/gcedo/eventsourcemock/pull/1
-  it.skip('unregisters listeners on unmount', () => {
+  it('unregisters listeners on unmount', () => {
     const handleUpdate = jest.fn()
     const wrapper = makeWrapper({ handleUpdate })
     wrapper.instance().componentWillUnmount()
@@ -91,6 +91,7 @@ describe('<UpdateSubscriber/>', () => {
 
     wrapper.setProps({ currentUser: {} }).update()
     sources['/updates?access_token=tok'].emit('open')
+    wrapper.update()
     expect(wrapper.html()).toContain('color:green')
   })
 
diff --git a/packages/client/test/helpers/Authorize.test.jsx b/packages/client/test/helpers/Authorize.test.jsx
index d745946a2..c893d4577 100644
--- a/packages/client/test/helpers/Authorize.test.jsx
+++ b/packages/client/test/helpers/Authorize.test.jsx
@@ -49,6 +49,7 @@ describe('<Authorize/>', () => {
 
     resolveMode(false)
     await modePromise
+    wrapper.update()
     expect(wrapper.type()).toBe('span')
   })
 
@@ -61,6 +62,7 @@ describe('<Authorize/>', () => {
     try {
       await modePromise
     } catch (err) {
+      wrapper.update()
       expect(wrapper.type()).toBe(null)
       expect(console.error).toHaveBeenCalled()
     }
@@ -73,7 +75,8 @@ describe('<Authorize/>', () => {
 
     resolveMode(true)
     await modePromise
-    expect(wrapper.type()).toBe('div')
+    wrapper.update()
+    expect(wrapper.find('div')).toHaveLength(1)
   })
 
   it('rechecks auth when props change', () => {
@@ -83,6 +86,7 @@ describe('<Authorize/>', () => {
     mode.mockClear()
 
     wrapper.setProps({ authsome, currentUser: { id: 'user2' } })
+    wrapper.update()
     expect(mode).toHaveBeenCalled()
   })
 })
diff --git a/packages/client/test/jest-setup.js b/packages/client/test/jest-setup.js
index 124ebaac6..bc711820f 100644
--- a/packages/client/test/jest-setup.js
+++ b/packages/client/test/jest-setup.js
@@ -1,3 +1,7 @@
+import Enzyme from 'enzyme'
+import Adapter from 'enzyme-adapter-react-16'
 import path from 'path'
 
+Enzyme.configure({ adapter: new Adapter() })
+
 process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config')
diff --git a/packages/components/package.json b/packages/components/package.json
index 36eef56e8..cea20ff81 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -18,7 +18,7 @@
     "babel-preset-stage-2": "^6.24.1",
     "config": "^1.28.1",
     "css-loader": "^0.28.7",
-    "enzyme": "^2.9.1",
+    "enzyme": "^3.3.0",
     "express": "^4.15.4",
     "file-loader": "^0.11.2",
     "font-awesome": "^4.7.0",
@@ -31,11 +31,11 @@
     "pubsweet-client": "^1.1.4",
     "pubsweet-server": "^1.1.0",
     "pubsweet-theme-plugin": "^0.0.3",
-    "react": "^15.6.1",
-    "react-dom": "^15.6.1",
+    "react": "^16.2.0",
+    "react-dom": "^16.2.0",
     "react-router-dom": "^4.2.2",
     "react-styleguidist": "^6.0.24",
-    "react-test-renderer": "^15.6.1",
+    "react-test-renderer": "^16.2.0",
     "redux": "^3.7.2",
     "redux-mock-store": "^1.3.0",
     "redux-thunk": "^2.2.0",
diff --git a/packages/components/packages/Blog/package.json b/packages/components/packages/Blog/package.json
index f5b424b12..39b1aa25a 100644
--- a/packages/components/packages/Blog/package.json
+++ b/packages/components/packages/Blog/package.json
@@ -8,7 +8,7 @@
   "dependencies": {
     "prop-types": "^15.5.10",
     "pubsweet-component-manage": "^0.2.2",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^0.32.0",
     "react-redux": "^5.0.6",
     "react-router-bootstrap": "^0.24.4",
     "react-router-dom": "^4.2.2",
diff --git a/packages/components/packages/FormGroup/package.json b/packages/components/packages/FormGroup/package.json
index e62237014..959784e7e 100644
--- a/packages/components/packages/FormGroup/package.json
+++ b/packages/components/packages/FormGroup/package.json
@@ -10,11 +10,11 @@
     "joi-browser": "^13.0.1",
     "prop-types": "^15.5.10",
     "pubsweet-server": "^1.1.0",
-    "react-bootstrap": "^0.31.3"
+    "react-bootstrap": "^0.32.0"
   },
   "peerDependencies": {
-    "pubsweet-client": ">=1.0.0-alpha.1",
-    "react": ">=15"
+    "pubsweet-client": ">=1.0.0",
+    "react": ">=16"
   },
   "repository": {
     "type": "git",
diff --git a/packages/components/packages/InkFrontend/package.json b/packages/components/packages/InkFrontend/package.json
index b63f3ced4..0de5cf368 100644
--- a/packages/components/packages/InkFrontend/package.json
+++ b/packages/components/packages/InkFrontend/package.json
@@ -21,8 +21,8 @@
   "dependencies": {
     "prop-types": "^15.5.10",
     "query-string": "^5.0.1",
-    "react-bootstrap": "^0.31.3",
-    "react-dropzone": "^3.7.3",
+    "react-bootstrap": "^0.32.0",
+    "react-dropzone": "^4.2.7",
     "react-redux": "^5.0.6",
     "redux": "^3.7.2"
   },
diff --git a/packages/components/packages/Login/package.json b/packages/components/packages/Login/package.json
index 1e8543287..1e28b7f1d 100644
--- a/packages/components/packages/Login/package.json
+++ b/packages/components/packages/Login/package.json
@@ -7,7 +7,7 @@
   "license": "MIT",
   "dependencies": {
     "prop-types": "^15.5.10",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^0.32.0",
     "react-redux": "^5.0.6",
     "react-router-dom": "^4.2.2",
     "react-router-redux": "^4.0.8",
diff --git a/packages/components/packages/Navigation/package.json b/packages/components/packages/Navigation/package.json
index 1e379b34e..84fbb8c78 100644
--- a/packages/components/packages/Navigation/package.json
+++ b/packages/components/packages/Navigation/package.json
@@ -7,7 +7,7 @@
   "license": "MIT",
   "dependencies": {
     "prop-types": "^15.5.10",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^0.32.0",
     "react-router-bootstrap": "^0.24.4",
     "react-router-dom": "^4.2.2"
   },
diff --git a/packages/components/packages/PasswordResetFrontend/package.json b/packages/components/packages/PasswordResetFrontend/package.json
index 8dc2f34cc..95decb6ea 100644
--- a/packages/components/packages/PasswordResetFrontend/package.json
+++ b/packages/components/packages/PasswordResetFrontend/package.json
@@ -8,7 +8,7 @@
   "dependencies": {
     "prop-types": "^15.5.10",
     "query-string": "^5.0.0",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^0.32.0",
     "react-router": "^4.2.0"
   },
   "peerDependencies": {
diff --git a/packages/components/packages/PostsManager/package.json b/packages/components/packages/PostsManager/package.json
index 6b8a4aef0..7f1e7d630 100644
--- a/packages/components/packages/PostsManager/package.json
+++ b/packages/components/packages/PostsManager/package.json
@@ -8,8 +8,8 @@
   "dependencies": {
     "prop-types": "^15.5.10",
     "pubsweet-component-form-group": "^0.1.10",
-    "react-bootstrap": "^0.31.3",
-    "react-dom": "^15.6.1",
+    "react-bootstrap": "^0.32.0",
+    "react-dom": "^16.2.0",
     "react-redux": "^5.0.6",
     "react-router-bootstrap": "^0.24.4",
     "react-router-dom": "^4.2.2",
diff --git a/packages/components/packages/Signup/package.json b/packages/components/packages/Signup/package.json
index 82116fae7..e8260c749 100644
--- a/packages/components/packages/Signup/package.json
+++ b/packages/components/packages/Signup/package.json
@@ -7,7 +7,7 @@
   "license": "MIT",
   "dependencies": {
     "prop-types": "^15.5.10",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^0.32.0",
     "react-redux": "^5.0.6",
     "react-router": "^4.2.0",
     "redux": "^3.7.2"
diff --git a/packages/components/packages/TeamsManager/package.json b/packages/components/packages/TeamsManager/package.json
index d9f1af7dd..b50b588b5 100644
--- a/packages/components/packages/TeamsManager/package.json
+++ b/packages/components/packages/TeamsManager/package.json
@@ -7,8 +7,8 @@
   "license": "MIT",
   "dependencies": {
     "prop-types": "^15.5.10",
-    "react-bootstrap": "^0.31.3",
-    "react-dom": "^15.6.1",
+    "react-bootstrap": "^0.32.0",
+    "react-dom": "^16.2.0",
     "react-redux": "^5.0.6",
     "react-select": "^1.0.0-rc.10",
     "redux": "^3.7.2"
diff --git a/packages/components/packages/UsersManager/package.json b/packages/components/packages/UsersManager/package.json
index 2ce0402f1..b38502e25 100644
--- a/packages/components/packages/UsersManager/package.json
+++ b/packages/components/packages/UsersManager/package.json
@@ -7,7 +7,7 @@
   "license": "MIT",
   "dependencies": {
     "prop-types": "^15.5.10",
-    "react-bootstrap": "^0.31.3",
+    "react-bootstrap": "^0.32.0",
     "react-redux": "^5.0.6",
     "redux": "^3.7.2"
   },
diff --git a/packages/components/test/jest-setup.js b/packages/components/test/jest-setup.js
index 124ebaac6..bc711820f 100644
--- a/packages/components/test/jest-setup.js
+++ b/packages/components/test/jest-setup.js
@@ -1,3 +1,7 @@
+import Enzyme from 'enzyme'
+import Adapter from 'enzyme-adapter-react-16'
 import path from 'path'
 
+Enzyme.configure({ adapter: new Adapter() })
+
 process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config')
diff --git a/packages/styleguide/package.json b/packages/styleguide/package.json
index 8f6dda52a..b2862b76c 100644
--- a/packages/styleguide/package.json
+++ b/packages/styleguide/package.json
@@ -5,8 +5,8 @@
   "main": "src",
   "dependencies": {
     "@pubsweet/theme": "^0.1.3",
-    "react": "^15.6.1",
-    "react-dom": "^15.6.1",
+    "react": "^16.2.0",
+    "react-dom": "^16.2.0",
     "react-redux": "^5.0.2",
     "react-router-dom": "^4.2.2",
     "recompose": "^0.26.0",
diff --git a/packages/ui/package.json b/packages/ui/package.json
index a9e917e07..f991f140f 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -16,8 +16,8 @@
     "humps": "^2.0.1",
     "lodash": "^4.17.4",
     "prop-types": "^15.5.10",
-    "react": "^15.6.1",
-    "react-dom": "^15.6.1",
+    "react": "^16.2.0",
+    "react-dom": "^16.2.0",
     "react-feather": "^1.0.7",
     "react-redux": "^5.0.2",
     "react-router-dom": "^4.2.2",
@@ -40,7 +40,7 @@
     "jest": "^22.1.4",
     "node-sass": "^4.5.3",
     "react-styleguidist": "^6.0.8",
-    "react-test-renderer": "^15.6.1",
+    "react-test-renderer": "^16.2.0",
     "sass-loader": "^6.0.6",
     "style-loader": "^0.19.0",
     "webpack": "^3.8.1",
diff --git a/packages/ui/test/AlignmentBox.test.js b/packages/ui/test/AlignmentBox.test.js
index 0d4b8af1d..dacaab237 100644
--- a/packages/ui/test/AlignmentBox.test.js
+++ b/packages/ui/test/AlignmentBox.test.js
@@ -65,6 +65,6 @@ describe('AlignmentBox', () => {
   test('on click the corresponding method is triggered', () => {
     const newWrapper = shallow(<AlignmentBox {...props} />)
     newWrapper.simulate('click')
-    expect(newWrapper.instance().props.onClick).toHaveBeenCalled()
+    expect(newWrapper.props().onClick).toHaveBeenCalled()
   })
 })
diff --git a/packages/ui/test/StateItem.test.js b/packages/ui/test/StateItem.test.js
index a109adf70..3fb631c16 100644
--- a/packages/ui/test/StateItem.test.js
+++ b/packages/ui/test/StateItem.test.js
@@ -41,6 +41,6 @@ describe('StateItem', () => {
 
   test('update method should be triggered upon click', () => {
     wrapper.simulate('click')
-    expect(wrapper.instance().props.update).toHaveBeenCalled()
+    expect(props.update).toHaveBeenCalled()
   })
 })
diff --git a/packages/ui/test/setup/enzyme.js b/packages/ui/test/setup/enzyme.js
index 7ae191afc..88c8c3b32 100644
--- a/packages/ui/test/setup/enzyme.js
+++ b/packages/ui/test/setup/enzyme.js
@@ -1,4 +1,4 @@
 import Enzyme from 'enzyme'
-import Adapter from 'enzyme-adapter-react-15'
+import Adapter from 'enzyme-adapter-react-16'
 
 Enzyme.configure({ adapter: new Adapter() })
diff --git a/yarn.lock b/yarn.lock
index a0a33b1e2..fbf26e9f1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -218,8 +218,8 @@
     react-router-redux next
 
 "@types/node@*":
-  version "8.0.58"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.58.tgz#5b3881c0be3a646874803fee3197ea7f1ed6df90"
+  version "9.3.0"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5"
 
 "@types/zen-observable@0.5.3":
   version "0.5.3"
@@ -2756,14 +2756,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
-create-react-class@^15.6.0:
-  version "15.6.2"
-  resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
-  dependencies:
-    fbjs "^0.8.9"
-    loose-envify "^1.3.1"
-    object-assign "^4.1.1"
-
 cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
   version "5.1.0"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -3490,6 +3482,18 @@ enzyme-adapter-react-15@^1.0.5:
     object.values "^1.0.4"
     prop-types "^15.5.10"
 
+enzyme-adapter-react-16@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz#a8f4278b47e082fbca14f5bfb1ee50ee650717b4"
+  dependencies:
+    enzyme-adapter-utils "^1.3.0"
+    lodash "^4.17.4"
+    object.assign "^4.0.4"
+    object.values "^1.0.4"
+    prop-types "^15.6.0"
+    react-reconciler "^0.7.0"
+    react-test-renderer "^16.0.0-0"
+
 enzyme-adapter-utils@^1.1.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2"
@@ -3498,32 +3502,30 @@ enzyme-adapter-utils@^1.1.0:
     object.assign "^4.0.4"
     prop-types "^15.5.10"
 
-enzyme@^2.9.1:
-  version "2.9.1"
-  resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.9.1.tgz#07d5ce691241240fb817bf2c4b18d6e530240df6"
+enzyme-adapter-utils@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz#d6c85756826c257a8544d362cc7a67e97ea698c7"
   dependencies:
-    cheerio "^0.22.0"
-    function.prototype.name "^1.0.0"
-    is-subset "^0.1.1"
     lodash "^4.17.4"
-    object-is "^1.0.1"
     object.assign "^4.0.4"
-    object.entries "^1.0.4"
-    object.values "^1.0.4"
-    prop-types "^15.5.10"
-    uuid "^3.0.1"
+    prop-types "^15.6.0"
 
-enzyme@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.2.0.tgz#998bdcda0fc71b8764a0017f7cc692c943f54a7a"
+enzyme@^3.2.0, enzyme@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.3.0.tgz#0971abd167f2d4bf3f5bd508229e1c4b6dc50479"
   dependencies:
     cheerio "^1.0.0-rc.2"
     function.prototype.name "^1.0.3"
     has "^1.0.1"
+    is-boolean-object "^1.0.0"
+    is-callable "^1.1.3"
+    is-number-object "^1.0.3"
+    is-string "^1.0.4"
     is-subset "^0.1.1"
     lodash "^4.17.4"
+    object-inspect "^1.5.0"
     object-is "^1.0.1"
-    object.assign "^4.0.4"
+    object.assign "^4.1.0"
     object.entries "^1.0.4"
     object.values "^1.0.4"
     raf "^3.4.0"
@@ -4016,8 +4018,8 @@ eventsource@^1.0.4:
     original "^1.0.0"
 
 eventsourcemock@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/eventsourcemock/-/eventsourcemock-1.0.1.tgz#1bcd88f602097c33d4e95f85923bbba7bd847a86"
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/eventsourcemock/-/eventsourcemock-1.1.0.tgz#388984a51fe1678b5b959bbcf2ca7a6fedff32e9"
 
 evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
   version "1.0.3"
@@ -4577,12 +4579,12 @@ function.name-polyfill@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/function.name-polyfill/-/function.name-polyfill-1.0.5.tgz#d349bb4e24a324f08120455ee78a04142b1257bb"
 
-function.prototype.name@^1.0.0, function.prototype.name@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.3.tgz#0099ae5572e9dd6f03c97d023fd92bcc5e639eac"
+function.prototype.name@^1.0.3:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
   dependencies:
     define-properties "^1.1.2"
-    function-bind "^1.1.0"
+    function-bind "^1.1.1"
     is-callable "^1.1.3"
 
 functional-red-black-tree@^1.0.1:
@@ -5038,6 +5040,10 @@ has-symbol-support-x@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c"
 
+has-symbols@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+
 has-to-string-tag-x@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
@@ -5636,6 +5642,10 @@ is-binary-path@^1.0.0:
   dependencies:
     binary-extensions "^1.0.0"
 
+is-boolean-object@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93"
+
 is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -5792,6 +5802,10 @@ is-nil-x@^1.4.1:
     lodash.isnull "^3.0.0"
     validate.io-undefined "^1.0.3"
 
+is-number-object@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799"
+
 is-number@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -7910,21 +7924,26 @@ object-get-own-property-descriptor-x@^3.2.0:
     to-object-x "^1.4.1"
     to-property-key-x "^2.0.1"
 
+object-inspect@^1.5.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.5.0.tgz#9d876c11e40f485c79215670281b767488f9bfe3"
+
 object-is@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
 
-object-keys@^1.0.10, object-keys@^1.0.6, object-keys@^1.0.8:
+object-keys@^1.0.11, object-keys@^1.0.6, object-keys@^1.0.8:
   version "1.0.11"
   resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
 
-object.assign@^4.0.4:
-  version "4.0.4"
-  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
+object.assign@^4.0.4, object.assign@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
   dependencies:
     define-properties "^1.1.2"
-    function-bind "^1.1.0"
-    object-keys "^1.0.10"
+    function-bind "^1.1.1"
+    has-symbols "^1.0.0"
+    object-keys "^1.0.11"
 
 object.entries@^1.0.4:
   version "1.0.4"
@@ -9357,6 +9376,23 @@ react-bootstrap@^0.31.3:
     uncontrollable "^4.1.0"
     warning "^3.0.0"
 
+react-bootstrap@^0.32.0:
+  version "0.32.0"
+  resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.32.0.tgz#7f656be7b0f88e4bdda819135956bad10d3f167e"
+  dependencies:
+    babel-runtime "^6.11.6"
+    classnames "^2.2.5"
+    dom-helpers "^3.2.0"
+    invariant "^2.2.1"
+    keycode "^2.1.2"
+    prop-types "^15.5.10"
+    prop-types-extra "^1.0.1"
+    react-overlays "^0.8.0"
+    react-prop-types "^0.4.0"
+    react-transition-group "^2.0.0"
+    uncontrollable "^4.1.0"
+    warning "^3.0.0"
+
 react-codemirror2@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-2.0.2.tgz#68b2ae8923174a2b3d8b6fe905d0fd3c91d97d97"
@@ -9419,9 +9455,18 @@ react-dom@^15.6.1:
     object-assign "^4.1.0"
     prop-types "^15.5.10"
 
-react-dropzone@^3.7.3:
-  version "3.13.4"
-  resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-3.13.4.tgz#84da26815c40339691c49b4544c2ef7a16912ccc"
+react-dom@^16.2.0:
+  version "16.2.0"
+  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.1.0"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
+
+react-dropzone@^4.2.7:
+  version "4.2.7"
+  resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.2.7.tgz#a4963b1f725d5a91e63cd1c2b55ddce537953d46"
   dependencies:
     attr-accept "^1.0.3"
     prop-types "^15.5.7"
@@ -9462,6 +9507,32 @@ react-overlays@^0.7.4:
     prop-types-extra "^1.0.1"
     warning "^3.0.0"
 
+react-overlays@^0.8.0:
+  version "0.8.3"
+  resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz#fad65eea5b24301cca192a169f5dddb0b20d3ac5"
+  dependencies:
+    classnames "^2.2.5"
+    dom-helpers "^3.2.1"
+    prop-types "^15.5.10"
+    prop-types-extra "^1.0.1"
+    react-transition-group "^2.2.0"
+    warning "^3.0.0"
+
+react-prop-types@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/react-prop-types/-/react-prop-types-0.4.0.tgz#f99b0bfb4006929c9af2051e7c1414a5c75b93d0"
+  dependencies:
+    warning "^3.0.0"
+
+react-reconciler@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.7.0.tgz#9614894103e5f138deeeb5eabaf3ee80eb1d026d"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.1.0"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
+
 react-redux@^5.0.2, react-redux@^5.0.6:
   version "5.0.6"
   resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946"
@@ -9585,12 +9656,13 @@ react-tag-autocomplete@^5.4.1:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/react-tag-autocomplete/-/react-tag-autocomplete-5.5.0.tgz#49841388b88323f6bccb0c10039bd0252875b49f"
 
-react-test-renderer@^15.6.1:
-  version "15.6.2"
-  resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.6.2.tgz#d0333434fc2c438092696ca770da5ed48037efa8"
+react-test-renderer@^16.0.0-0, react-test-renderer@^16.2.0:
+  version "16.2.0"
+  resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211"
   dependencies:
-    fbjs "^0.8.9"
-    object-assign "^4.1.0"
+    fbjs "^0.8.16"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
 
 react-transition-group@^1.1.2:
   version "1.2.1"
@@ -9602,15 +9674,25 @@ react-transition-group@^1.1.2:
     prop-types "^15.5.6"
     warning "^3.0.0"
 
-react@^15.4.4, react@^15.6.1:
-  version "15.6.2"
-  resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72"
+react-transition-group@^2.0.0, react-transition-group@^2.2.0:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.1.tgz#e9fb677b79e6455fd391b03823afe84849df4a10"
   dependencies:
-    create-react-class "^15.6.0"
-    fbjs "^0.8.9"
+    chain-function "^1.0.0"
+    classnames "^2.2.5"
+    dom-helpers "^3.2.0"
+    loose-envify "^1.3.1"
+    prop-types "^15.5.8"
+    warning "^3.0.0"
+
+react@^16.2.0:
+  version "16.2.0"
+  resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba"
+  dependencies:
+    fbjs "^0.8.16"
     loose-envify "^1.1.0"
-    object-assign "^4.1.0"
-    prop-types "^15.5.10"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
 
 read-cmd-shim@^1.0.1:
   version "1.0.1"
-- 
GitLab