diff --git a/package-lock.json b/package-lock.json index 92f3673f..cc7fc028 100644 --- a/package-lock.json +++ b/package-lock.json @@ -132,6 +132,21 @@ "integrity": "sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg==", "dev": true }, + "@babel/runtime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", + "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", + "requires": { + "regenerator-runtime": "^0.12.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + } + } + }, "@babel/template": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.0.tgz", @@ -2505,16 +2520,6 @@ "capture-stack-trace": "^1.0.0" } }, - "create-react-class": { - "version": "15.6.3", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", - "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", - "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, "create-torrent": { "version": "3.33.0", "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-3.33.0.tgz", @@ -2966,9 +2971,27 @@ } }, "dom-helpers": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", - "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + } + } }, "dot-prop": { "version": "4.2.0", @@ -3935,9 +3958,9 @@ "dev": true }, "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { "core-js": "^1.0.0", "isomorphic-fetch": "^2.1.1", @@ -3945,7 +3968,7 @@ "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" + "ua-parser-js": "^0.7.18" }, "dependencies": { "core-js": { @@ -4763,9 +4786,9 @@ "dev": true }, "hoist-non-react-statics": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", - "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" }, "home-path": { "version": "1.0.6", @@ -5989,20 +6012,19 @@ } }, "material-ui": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/material-ui/-/material-ui-0.17.4.tgz", - "integrity": "sha1-GTmZ7LScPsFa4Ku06Q/fmnvTQ+A=", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/material-ui/-/material-ui-0.20.2.tgz", + "integrity": "sha512-VeqgQkdvtK193w+FFvXDEwlVxI4rWk83eWbpYLeOIHDPWr3rbB9B075JRnJt/8IsI2X8q5Aia5W3+7m4KkleDg==", "requires": { "babel-runtime": "^6.23.0", - "inline-style-prefixer": "^3.0.2", + "inline-style-prefixer": "^3.0.8", "keycode": "^2.1.8", "lodash.merge": "^4.6.0", "lodash.throttle": "^4.1.1", "prop-types": "^15.5.7", - "react-addons-create-fragment": "^15.4.0", - "react-addons-transition-group": "^15.4.0", - "react-event-listener": "^0.4.5", - "recompose": "^0.23.0", + "react-event-listener": "^0.6.2", + "react-transition-group": "^1.2.1", + "recompose": "^0.26.0", "simple-assign": "^0.1.0", "warning": "^3.0.0" } @@ -6034,7 +6056,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mediasource": { @@ -7319,11 +7341,10 @@ } }, "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } @@ -7491,63 +7512,45 @@ "dev": true }, "react": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", - "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", + "version": "16.6.3", + "resolved": "https://registry.npmjs.org/react/-/react-16.6.3.tgz", + "integrity": "sha512-zCvmH2vbEolgKxtqXL2wmGCUxUyNheYn/C+PD1YAjfxHC54+MhdruyhO7QieQrYsYeTxrn93PM2y0jRH1zEExw==", "requires": { - "create-react-class": "^15.6.0", - "fbjs": "^0.8.9", "loose-envify": "^1.1.0", - "object-assign": "^4.1.0", - "prop-types": "^15.5.10" - } - }, - "react-addons-create-fragment": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz", - "integrity": "sha1-o5TefCx77Na1R1uhuXrEcs58dPg=", - "requires": { - "fbjs": "^0.8.4", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.0" - } - }, - "react-addons-transition-group": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react-addons-transition-group/-/react-addons-transition-group-15.6.2.tgz", - "integrity": "sha1-i668Kukczb8kX+Kcn9PTb4tHGSM=", - "requires": { - "react-transition-group": "^1.2.0" + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.11.2" } }, "react-dom": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", - "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", + "version": "16.6.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.6.3.tgz", + "integrity": "sha512-8ugJWRCWLGXy+7PmNh8WJz3g1TaTUt1XyoIcFN+x0Zbkoz+KKdUyx1AQLYJdbFXjuF41Nmjn5+j//rxvhFjgSQ==", "requires": { - "fbjs": "^0.8.9", "loose-envify": "^1.1.0", - "object-assign": "^4.1.0", - "prop-types": "^15.5.10" + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.11.2" } }, "react-event-listener": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.4.5.tgz", - "integrity": "sha1-4+iVoJcM8U7o+JAROvaBl6vz0LE=", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.4.tgz", + "integrity": "sha512-t7VSjIuUFmN+GeyKb+wm025YLeojVB85kJL6sSs0wEBJddfmKBEQz+CNBZ2zBLKVWkPy/fZXM6U5yvojjYBVYQ==", "requires": { - "babel-runtime": "^6.20.0", - "fbjs": "^0.8.4", - "prop-types": "^15.5.4", - "warning": "^3.0.0" - } - }, - "react-tap-event-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/react-tap-event-plugin/-/react-tap-event-plugin-2.0.1.tgz", - "integrity": "sha1-MWvrO8ZVbinshppyk+icgmqQdNI=", - "requires": { - "fbjs": "^0.8.6" + "@babel/runtime": "7.0.0", + "prop-types": "^15.6.0", + "warning": "^4.0.1" + }, + "dependencies": { + "warning": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz", + "integrity": "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==", + "requires": { + "loose-envify": "^1.0.0" + } + } } }, "react-transition-group": { @@ -7647,13 +7650,13 @@ } }, "recompose": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.23.5.tgz", - "integrity": "sha1-cqyCYSRr7DeCNdGHRn0CpyHosd4=", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", + "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", "requires": { "change-emitter": "^0.1.2", "fbjs": "^0.8.1", - "hoist-non-react-statics": "^1.0.0", + "hoist-non-react-statics": "^2.3.1", "symbol-observable": "^1.0.4" } }, @@ -8080,6 +8083,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "scheduler": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.11.3.tgz", + "integrity": "sha512-i9X9VRRVZDd3xZw10NY5Z2cVMbdYg6gqFecfj79USv1CFN+YrJ3gIPRKf1qlY+Sxly4djoKdfx1T+m9dnRB8kQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -9750,9 +9762,9 @@ } }, "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + "version": "0.7.19", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", + "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" }, "uint64be": { "version": "2.0.2", diff --git a/package.json b/package.json index b2eeb3c9..80787b01 100644 --- a/package.json +++ b/package.json @@ -30,15 +30,15 @@ "iso-639-1": "^1.2.1", "languagedetect": "^1.2.0", "location-history": "^1.0.0", - "material-ui": "^0.17.0", + "material-ui": "^0.20.2", "mkdirp": "^0.5.1", "music-metadata": "^3.1.0", "network-address": "^1.1.0", "parse-torrent": "^6.0.1", "prettier-bytes": "^1.0.1", - "react": "^15.4.2", - "react-dom": "^15.4.2", - "react-tap-event-plugin": "^2.0.1", + "prop-types": "^15.6.2", + "react": "^16.5.2", + "react-dom": "^16.5.2", "rimraf": "^2.5.2", "run-parallel": "^1.1.6", "semver": "^5.6.0", diff --git a/src/renderer/components/heading.js b/src/renderer/components/heading.js index 2a68fb91..43e78de0 100644 --- a/src/renderer/components/heading.js +++ b/src/renderer/components/heading.js @@ -1,11 +1,12 @@ const React = require('react') +const PropTypes = require('prop-types') const colors = require('material-ui/styles/colors') class Heading extends React.Component { static get propTypes () { return { - level: React.PropTypes.number + level: PropTypes.number } } diff --git a/src/renderer/components/path-selector.js b/src/renderer/components/path-selector.js index ca377c65..6ad66d4b 100644 --- a/src/renderer/components/path-selector.js +++ b/src/renderer/components/path-selector.js @@ -1,6 +1,7 @@ const colors = require('material-ui/styles/colors') const electron = require('electron') const React = require('react') +const PropTypes = require('prop-types') const remote = electron.remote @@ -11,15 +12,15 @@ const TextField = require('material-ui/TextField').default // Uses the system Open File dialog. // You can't edit the text field directly. class PathSelector extends React.Component { - static get propTypes () { + static propTypes () { return { - className: React.PropTypes.string, - dialog: React.PropTypes.object, - displayValue: React.PropTypes.string, - id: React.PropTypes.string, - onChange: React.PropTypes.func, - title: React.PropTypes.string.isRequired, - value: React.PropTypes.string + className: PropTypes.string, + dialog: PropTypes.object, + displayValue: PropTypes.string, + id: PropTypes.string, + onChange: PropTypes.func, + title: PropTypes.string.isRequired, + value: PropTypes.string } } @@ -64,7 +65,8 @@ class PathSelector extends React.Component { const textFieldStyle = { flex: '1' } - const text = this.props.displayValue || this.props.value + + const text = this.props.displayValue || this.props.value || '' const buttonStyle = { marginLeft: 10 } diff --git a/src/renderer/components/show-more.js b/src/renderer/components/show-more.js index bb0084e1..1ddb44d4 100644 --- a/src/renderer/components/show-more.js +++ b/src/renderer/components/show-more.js @@ -1,13 +1,14 @@ const React = require('react') +const PropTypes = require('prop-types') const RaisedButton = require('material-ui/RaisedButton').default class ShowMore extends React.Component { static get propTypes () { return { - defaultExpanded: React.PropTypes.bool, - hideLabel: React.PropTypes.string, - showLabel: React.PropTypes.string + defaultExpanded: PropTypes.bool, + hideLabel: PropTypes.string, + showLabel: PropTypes.string } } diff --git a/src/renderer/main.js b/src/renderer/main.js index ae333be7..887fb4db 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -39,9 +39,6 @@ const TorrentPlayer = require('./lib/torrent-player') // Perf optimization: Needed immediately, so do not lazy load it below const TorrentListController = require('./controllers/torrent-list-controller') -// Required by Material UI -- adds `onTouchTap` event -require('react-tap-event-plugin')() - const App = require('./pages/app') // Electron apps have two processes: a main process (node) runs first and starts diff --git a/src/renderer/pages/preferences-page.js b/src/renderer/pages/preferences-page.js index 3dd32adf..687af900 100644 --- a/src/renderer/pages/preferences-page.js +++ b/src/renderer/pages/preferences-page.js @@ -1,5 +1,6 @@ const path = require('path') const React = require('react') +const PropTypes = require('prop-types') const colors = require('material-ui/styles/colors') const Checkbox = require('material-ui/Checkbox').default @@ -238,7 +239,7 @@ class PreferencesPage extends React.Component { class PreferencesSection extends React.Component { static get propTypes () { return { - title: React.PropTypes.string + title: PropTypes.string } } diff --git a/src/renderer/pages/torrent-list-page.js b/src/renderer/pages/torrent-list-page.js index 2f816e49..f4106d34 100644 --- a/src/renderer/pages/torrent-list-page.js +++ b/src/renderer/pages/torrent-list-page.js @@ -147,7 +147,7 @@ module.exports = class TorrentList extends React.Component { } } return ( -