Add Page Populator from Sonarr

pull/6/head
Qstick 7 years ago
parent 52e3d96f4a
commit 023452e1c3

@ -114,6 +114,8 @@ RunGulp()
#npm-cache install npm || CheckExitCode npm install --no-optional --no-bin-links #npm-cache install npm || CheckExitCode npm install --no-optional --no-bin-links
ProgressEnd 'npm install' ProgressEnd 'npm install'
LintUI
ProgressStart 'Running gulp' ProgressStart 'Running gulp'
CheckExitCode npm run build -- --production CheckExitCode npm run build -- --production
ProgressEnd 'Running gulp' ProgressEnd 'Running gulp'
@ -265,7 +267,6 @@ case "$(uname -s)" in
;; ;;
esac esac
LintUI
Build Build
RunGulp RunGulp
PackageMono PackageMono

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import createCommandsSelector from 'Store/Selectors/createCommandsSelector'; import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
import * as blacklistActions from 'Store/Actions/blacklistActions'; import * as blacklistActions from 'Store/Actions/blacklistActions';
import { executeCommand } from 'Store/Actions/commandActions'; import { executeCommand } from 'Store/Actions/commandActions';
@ -35,6 +36,7 @@ class BlacklistConnector extends Component {
// Lifecycle // Lifecycle
componentDidMount() { componentDidMount() {
registerPagePopulator(this.repopulate);
this.props.gotoBlacklistFirstPage(); this.props.gotoBlacklistFirstPage();
} }
@ -44,6 +46,17 @@ class BlacklistConnector extends Component {
} }
} }
componentWillUnmount() {
unregisterPagePopulator(this.repopulate);
}
//
// Control
repopulate = () => {
this.props.fetchBlacklist();
}
// //
// Listeners // Listeners

@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems'; import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import selectUniqueIds from 'Utilities/Object/selectUniqueIds'; import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
import * as historyActions from 'Store/Actions/historyActions'; import * as historyActions from 'Store/Actions/historyActions';
@ -35,6 +36,7 @@ class HistoryConnector extends Component {
// Lifecycle // Lifecycle
componentDidMount() { componentDidMount() {
registerPagePopulator(this.repopulate);
this.props.gotoHistoryFirstPage(); this.props.gotoHistoryFirstPage();
} }
@ -46,10 +48,18 @@ class HistoryConnector extends Component {
} }
componentWillUnmount() { componentWillUnmount() {
unregisterPagePopulator(this.repopulate);
this.props.clearHistory(); this.props.clearHistory();
this.props.clearEpisodes(); this.props.clearEpisodes();
} }
//
// Control
repopulate = () => {
this.props.fetchHistory();
}
// //
// Listeners // Listeners

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems'; import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import selectUniqueIds from 'Utilities/Object/selectUniqueIds'; import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
import createCommandsSelector from 'Store/Selectors/createCommandsSelector'; import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
@ -44,6 +45,7 @@ class QueueConnector extends Component {
// Lifecycle // Lifecycle
componentDidMount() { componentDidMount() {
registerPagePopulator(this.repopulate);
this.props.gotoQueueFirstPage(); this.props.gotoQueueFirstPage();
} }
@ -56,10 +58,18 @@ class QueueConnector extends Component {
} }
componentWillUnmount() { componentWillUnmount() {
unregisterPagePopulator(this.repopulate);
this.props.clearQueue(); this.props.clearQueue();
this.props.clearEpisodes(); this.props.clearEpisodes();
} }
//
// Control
repopulate = () => {
this.props.fetchQueue();
}
// //
// Listeners // Listeners

@ -4,6 +4,7 @@ import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { findCommand } from 'Utilities/Command'; import { findCommand } from 'Utilities/Command';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector'; import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector';
import createCommandsSelector from 'Store/Selectors/createCommandsSelector'; import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
import { fetchEpisodes, clearEpisodes } from 'Store/Actions/episodeActions'; import { fetchEpisodes, clearEpisodes } from 'Store/Actions/episodeActions';
@ -86,7 +87,8 @@ class ArtistDetailsConnector extends Component {
// Lifecycle // Lifecycle
componentDidMount() { componentDidMount() {
this._populate(); registerPagePopulator(this.populate);
this.populate();
} }
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
@ -102,26 +104,27 @@ class ArtistDetailsConnector extends Component {
(prevProps.isRenamingFiles && !isRenamingFiles) || (prevProps.isRenamingFiles && !isRenamingFiles) ||
(prevProps.isRenamingArtist && !isRenamingArtist) (prevProps.isRenamingArtist && !isRenamingArtist)
) { ) {
this._populate(); this.populate();
} }
// If the id has changed we need to clear the episodes/episode // If the id has changed we need to clear the episodes/episode
// files and fetch from the server. // files and fetch from the server.
if (prevProps.id !== id) { if (prevProps.id !== id) {
this._unpopulate(); this.unpopulate();
this._populate(); this.populate();
} }
} }
componentWillUnmount() { componentWillUnmount() {
this._unpopulate(); unregisterPagePopulator(this.populate);
this.unpopulate();
} }
// //
// Control // Control
_populate() { populate = () => {
const artistId = this.props.id; const artistId = this.props.id;
this.props.fetchEpisodes({ artistId }); this.props.fetchEpisodes({ artistId });
@ -129,7 +132,7 @@ class ArtistDetailsConnector extends Component {
this.props.fetchQueueDetails({ artistId }); this.props.fetchQueueDetails({ artistId });
} }
_unpopulate() { unpopulate = () => {
this.props.clearEpisodes(); this.props.clearEpisodes();
this.props.clearTrackFiles(); this.props.clearTrackFiles();
this.props.clearQueueDetails(); this.props.clearQueueDetails();

@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems'; import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import selectUniqueIds from 'Utilities/Object/selectUniqueIds'; import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
import * as calendarActions from 'Store/Actions/calendarActions'; import * as calendarActions from 'Store/Actions/calendarActions';
@ -40,6 +41,7 @@ class CalendarConnector extends Component {
} }
componentDidMount() { componentDidMount() {
registerPagePopulator(this.repopulate);
this.props.gotoCalendarToday(); this.props.gotoCalendarToday();
this.scheduleUpdate(); this.scheduleUpdate();
} }
@ -67,6 +69,7 @@ class CalendarConnector extends Component {
} }
componentWillUnmount() { componentWillUnmount() {
unregisterPagePopulator(this.repopulate);
this.props.clearCalendar(); this.props.clearCalendar();
this.props.clearQueueDetails(); this.props.clearQueueDetails();
this.props.clearTrackFiles(); this.props.clearTrackFiles();
@ -75,11 +78,20 @@ class CalendarConnector extends Component {
// //
// Control // Control
repopulate = () => {
const {
time,
view
} = this.props;
this.props.fetchQueueDetails({ time, view });
this.props.fetchCalendar({ time, view });
}
scheduleUpdate = () => { scheduleUpdate = () => {
this.clearUpdateTimeout(); this.clearUpdateTimeout();
this.updateTimeoutId = setTimeout(this.scheduleUpdate, UPDATE_DELAY); this.updateTimeoutId = setTimeout(this.updateCalendar, UPDATE_DELAY);
} }
clearUpdateTimeout = () => { clearUpdateTimeout = () => {
@ -130,12 +142,14 @@ class CalendarConnector extends Component {
CalendarConnector.propTypes = { CalendarConnector.propTypes = {
time: PropTypes.string, time: PropTypes.string,
view: PropTypes.string.isRequired,
items: PropTypes.arrayOf(PropTypes.object).isRequired, items: PropTypes.arrayOf(PropTypes.object).isRequired,
setCalendarView: PropTypes.func.isRequired, setCalendarView: PropTypes.func.isRequired,
gotoCalendarToday: PropTypes.func.isRequired, gotoCalendarToday: PropTypes.func.isRequired,
gotoCalendarPreviousRange: PropTypes.func.isRequired, gotoCalendarPreviousRange: PropTypes.func.isRequired,
gotoCalendarNextRange: PropTypes.func.isRequired, gotoCalendarNextRange: PropTypes.func.isRequired,
clearCalendar: PropTypes.func.isRequired, clearCalendar: PropTypes.func.isRequired,
fetchCalendar: PropTypes.func.isRequired,
fetchTrackFiles: PropTypes.func.isRequired, fetchTrackFiles: PropTypes.func.isRequired,
clearTrackFiles: PropTypes.func.isRequired, clearTrackFiles: PropTypes.func.isRequired,
fetchQueueDetails: PropTypes.func.isRequired, fetchQueueDetails: PropTypes.func.isRequired,

@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
import { Component } from 'react'; import { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { repopulatePage } from 'Utilities/pagePopulator';
import { updateCommand, finishCommand } from 'Store/Actions/commandActions'; import { updateCommand, finishCommand } from 'Store/Actions/commandActions';
import { setAppValue, setVersion } from 'Store/Actions/appActions'; import { setAppValue, setVersion } from 'Store/Actions/appActions';
import { update, updateItem, removeItem } from 'Store/Actions/baseActions'; import { update, updateItem, removeItem } from 'Store/Actions/baseActions';
@ -28,10 +29,12 @@ function getState(status) {
function createMapStateToProps() { function createMapStateToProps() {
return createSelector( return createSelector(
(state) => state.app.isReconnecting, (state) => state.app.isReconnecting,
(state) => state.app.isDisconnected,
(state) => state.queue.paged.isPopulated, (state) => state.queue.paged.isPopulated,
(isReconnecting, isQueuePopulated) => { (isReconnecting, isDisconnected, isQueuePopulated) => {
return { return {
isReconnecting, isReconnecting,
isDisconnected,
isQueuePopulated isQueuePopulated
}; };
} }
@ -170,7 +173,8 @@ class SignalRConnector extends Component {
this.props.updateItem({ this.props.updateItem({
section: 'calendar', section: 'calendar',
updateOnly: true, updateOnly: true,
...body.resource }); ...body.resource
});
} }
} }
@ -193,7 +197,8 @@ class SignalRConnector extends Component {
this.props.updateItem({ this.props.updateItem({
section: 'episodes', section: 'episodes',
updateOnly: true, updateOnly: true,
...body.resource }); ...body.resource
});
} }
} }
@ -202,7 +207,8 @@ class SignalRConnector extends Component {
this.props.updateItem({ this.props.updateItem({
section: 'tracks', section: 'tracks',
updateOnly: true, updateOnly: true,
...body.resource }); ...body.resource
});
} }
} }
@ -210,7 +216,8 @@ class SignalRConnector extends Component {
if (body.action === 'updated') { if (body.action === 'updated') {
this.props.updateItem({ this.props.updateItem({
section: 'trackFiles', section: 'trackFiles',
...body.resource }); ...body.resource
});
} }
} }
@ -254,7 +261,8 @@ class SignalRConnector extends Component {
this.props.updateItem({ this.props.updateItem({
section: 'cutoffUnmet', section: 'cutoffUnmet',
updateOnly: true, updateOnly: true,
...body.resource }); ...body.resource
});
} }
} }
@ -263,7 +271,8 @@ class SignalRConnector extends Component {
this.props.updateItem({ this.props.updateItem({
section: 'missing', section: 'missing',
updateOnly: true, updateOnly: true,
...body.resource }); ...body.resource
});
} }
} }
@ -275,6 +284,13 @@ class SignalRConnector extends Component {
console.log(`SignalR: [${state}]`); console.log(`SignalR: [${state}]`);
if (state === 'connected') { if (state === 'connected') {
// Repopulate the page (if a repopulator is set) to ensure things
// are in sync after reconnecting.
if (this.props.isReconnecting || this.props.isDisconnected) {
repopulatePage();
}
this.props.setAppValue({ this.props.setAppValue({
isConnected: true, isConnected: true,
isReconnecting: false, isReconnecting: false,
@ -329,6 +345,7 @@ class SignalRConnector extends Component {
SignalRConnector.propTypes = { SignalRConnector.propTypes = {
isReconnecting: PropTypes.bool.isRequired, isReconnecting: PropTypes.bool.isRequired,
isDisconnected: PropTypes.bool.isRequired,
isQueuePopulated: PropTypes.bool.isRequired, isQueuePopulated: PropTypes.bool.isRequired,
updateCommand: PropTypes.func.isRequired, updateCommand: PropTypes.func.isRequired,
finishCommand: PropTypes.func.isRequired, finishCommand: PropTypes.func.isRequired,

@ -0,0 +1,17 @@
let currentPopulator = null;
export function registerPagePopulator(populator) {
currentPopulator = populator;
}
export function unregisterPagePopulator(populator) {
if (currentPopulator === populator) {
currentPopulator = null;
}
}
export function repopulatePage() {
if (currentPopulator) {
currentPopulator();
}
}

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems'; import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import selectUniqueIds from 'Utilities/Object/selectUniqueIds'; import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
import createCommandsSelector from 'Store/Selectors/createCommandsSelector'; import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
@ -46,6 +47,7 @@ class CutoffUnmetConnector extends Component {
// Lifecycle // Lifecycle
componentDidMount() { componentDidMount() {
registerPagePopulator(this.repopulate);
this.props.gotoCutoffUnmetFirstPage(); this.props.gotoCutoffUnmetFirstPage();
} }
@ -63,11 +65,19 @@ class CutoffUnmetConnector extends Component {
} }
componentWillUnmount() { componentWillUnmount() {
unregisterPagePopulator(this.repopulate);
this.props.clearCutoffUnmet(); this.props.clearCutoffUnmet();
this.props.clearQueueDetails(); this.props.clearQueueDetails();
this.props.clearTrackFiles(); this.props.clearTrackFiles();
} }
//
// Control
repopulate = () => {
this.props.fetchCutoffUnmet();
}
// //
// Listeners // Listeners

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { registerPagePopulator, unregisterPagePopulator } from 'Utilities/pagePopulator';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems'; import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import selectUniqueIds from 'Utilities/Object/selectUniqueIds'; import selectUniqueIds from 'Utilities/Object/selectUniqueIds';
import createCommandsSelector from 'Store/Selectors/createCommandsSelector'; import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
@ -43,6 +44,7 @@ class MissingConnector extends Component {
// Lifecycle // Lifecycle
componentDidMount() { componentDidMount() {
registerPagePopulator(this.repopulate);
this.props.gotoMissingFirstPage(); this.props.gotoMissingFirstPage();
} }
@ -54,10 +56,18 @@ class MissingConnector extends Component {
} }
componentWillUnmount() { componentWillUnmount() {
unregisterPagePopulator(this.repopulate);
this.props.clearMissing(); this.props.clearMissing();
this.props.clearQueueDetails(); this.props.clearQueueDetails();
} }
//
// Control
repopulate = () => {
this.props.fetchMissing();
}
// //
// Listeners // Listeners

@ -17,7 +17,7 @@
"license": "GPL-3.0", "license": "GPL-3.0",
"readmeFilename": "readme.md", "readmeFilename": "readme.md",
"dependencies": { "dependencies": {
"autoprefixer": "7.1.4", "autoprefixer": "7.1.5",
"babel-core": "6.26.0", "babel-core": "6.26.0",
"babel-eslint": "8.0.1", "babel-eslint": "8.0.1",
"babel-loader": "7.1.2", "babel-loader": "7.1.2",
@ -33,13 +33,13 @@
"del": "3.0.0", "del": "3.0.0",
"element-class": "0.2.2", "element-class": "0.2.2",
"esformatter": "0.10.0", "esformatter": "0.10.0",
"eslint": "4.7.2", "eslint": "4.8.0",
"eslint-loader": "1.9.0", "eslint-loader": "1.9.0",
"eslint-plugin-filenames": "1.2.0", "eslint-plugin-filenames": "1.2.0",
"eslint-plugin-react": "7.4.0", "eslint-plugin-react": "7.4.0",
"esprint": "0.4.0", "esprint": "0.4.0",
"extract-text-webpack-plugin": "3.0.0", "extract-text-webpack-plugin": "3.0.1",
"file-loader": "0.11.2", "file-loader": "1.1.5",
"filesize": "3.5.10", "filesize": "3.5.10",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-cached": "1.1.1", "gulp-cached": "1.1.1",
@ -56,7 +56,7 @@
"gulp-wrap": "0.13.0", "gulp-wrap": "0.13.0",
"history": "4.7.2", "history": "4.7.2",
"jdu": "1.0.0", "jdu": "1.0.0",
"jquery": "2.2.4", "jquery": "3.2.1",
"loader-utils": "^1.1.0", "loader-utils": "^1.1.0",
"lodash": "4.17.4", "lodash": "4.17.4",
"mobile-detect": "1.3.7", "mobile-detect": "1.3.7",
@ -89,7 +89,7 @@
"react-router-dom": "4.2.2", "react-router-dom": "4.2.2",
"react-router-redux": "5.0.0-alpha.6", "react-router-redux": "5.0.0-alpha.6",
"react-slider": "0.9.0", "react-slider": "0.9.0",
"react-tabs": "1.1.0", "react-tabs": "2.1.0",
"react-tag-autocomplete": "5.4.1", "react-tag-autocomplete": "5.4.1",
"react-tether": "0.5.7", "react-tether": "0.5.7",
"react-virtualized": "9.10.1", "react-virtualized": "9.10.1",
@ -103,11 +103,11 @@
"run-sequence": "2.2.0", "run-sequence": "2.2.0",
"signalr": "2.2.2", "signalr": "2.2.2",
"streamqueue": "1.1.1", "streamqueue": "1.1.1",
"style-loader": "^0.18.2", "style-loader": "0.19.0",
"stylelint": "8.1.1", "stylelint": "8.2.0",
"stylelint-order": "0.7.0", "stylelint-order": "0.7.0",
"tar.gz": "1.0.5", "tar.gz": "1.0.5",
"url-loader": "0.5.9", "url-loader": "0.6.2",
"webpack": "3.6.0", "webpack": "3.6.0",
"webpack-stream": "^4.0.0" "webpack-stream": "^4.0.0"
}, },

@ -257,15 +257,15 @@ atob@~1.1.0:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
autoprefixer@7.1.4, autoprefixer@^7.1.2: autoprefixer@7.1.5:
version "7.1.4" version "7.1.5"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.5.tgz#d65d14b83c7cd1dd7bc801daa00557addf5a06b2"
dependencies: dependencies:
browserslist "^2.4.0" browserslist "^2.5.0"
caniuse-lite "^1.0.30000726" caniuse-lite "^1.0.30000744"
normalize-range "^0.1.2" normalize-range "^0.1.2"
num2fraction "^1.2.2" num2fraction "^1.2.2"
postcss "^6.0.11" postcss "^6.0.13"
postcss-value-parser "^3.2.3" postcss-value-parser "^3.2.3"
autoprefixer@^6.3.1: autoprefixer@^6.3.1:
@ -279,6 +279,17 @@ autoprefixer@^6.3.1:
postcss "^5.0.19" postcss "^5.0.19"
postcss-value-parser "^3.2.3" postcss-value-parser "^3.2.3"
autoprefixer@^7.1.2:
version "7.1.4"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748"
dependencies:
browserslist "^2.4.0"
caniuse-lite "^1.0.30000726"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^6.0.11"
postcss-value-parser "^3.2.3"
aws-sign2@~0.7.0: aws-sign2@~0.7.0:
version "0.7.0" version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@ -1160,6 +1171,13 @@ browserslist@^2.4.0:
caniuse-lite "^1.0.30000718" caniuse-lite "^1.0.30000718"
electron-to-chromium "^1.3.18" electron-to-chromium "^1.3.18"
browserslist@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.5.0.tgz#0ea00d22813a4dfae5786485225a9c584b3ef37c"
dependencies:
caniuse-lite "^1.0.30000744"
electron-to-chromium "^1.3.24"
browserslist@~1.3.1: browserslist@~1.3.1:
version "1.3.6" version "1.3.6"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.3.6.tgz#952ff48d56463d3b538f85ef2f8eaddfd284b133" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.3.6.tgz#952ff48d56463d3b538f85ef2f8eaddfd284b133"
@ -1256,6 +1274,10 @@ caniuse-lite@^1.0.30000718, caniuse-lite@^1.0.30000726:
version "1.0.30000733" version "1.0.30000733"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000733.tgz#ebfc48254117cc0c66197a4536cb4397a6cfbccd" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000733.tgz#ebfc48254117cc0c66197a4536cb4397a6cfbccd"
caniuse-lite@^1.0.30000744:
version "1.0.30000744"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000744.tgz#860fa5c83ba34fe619397d607f30bb474821671b"
caseless@~0.12.0: caseless@~0.12.0:
version "0.12.0" version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@ -1532,7 +1554,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
cosmiconfig@^2.1.0, cosmiconfig@^2.1.1, cosmiconfig@^2.1.3: cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
version "2.2.2" version "2.2.2"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
dependencies: dependencies:
@ -1544,6 +1566,15 @@ cosmiconfig@^2.1.0, cosmiconfig@^2.1.1, cosmiconfig@^2.1.3:
parse-json "^2.2.0" parse-json "^2.2.0"
require-from-string "^1.1.0" require-from-string "^1.1.0"
cosmiconfig@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-3.1.0.tgz#640a94bf9847f321800403cd273af60665c73397"
dependencies:
is-directory "^0.3.1"
js-yaml "^3.9.0"
parse-json "^3.0.0"
require-from-string "^2.0.1"
create-ecdh@^4.0.0: create-ecdh@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
@ -1962,6 +1993,10 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18:
version "1.3.21" version "1.3.21"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2"
electron-to-chromium@^1.3.24:
version "1.3.24"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6"
element-class@0.2.2: element-class@0.2.2:
version "0.2.2" version "0.2.2"
resolved "https://registry.yarnpkg.com/element-class/-/element-class-0.2.2.tgz#9d3bbd0767f9013ef8e1c8ebe722c1402a60050e" resolved "https://registry.yarnpkg.com/element-class/-/element-class-0.2.2.tgz#9d3bbd0767f9013ef8e1c8ebe722c1402a60050e"
@ -2009,7 +2044,7 @@ errno@^0.1.3, errno@^0.1.4:
dependencies: dependencies:
prr "~0.0.0" prr "~0.0.0"
error-ex@^1.2.0: error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
dependencies: dependencies:
@ -2172,9 +2207,9 @@ eslint-scope@^3.7.1:
esrecurse "^4.1.0" esrecurse "^4.1.0"
estraverse "^4.1.1" estraverse "^4.1.1"
eslint@4.7.2: eslint@4.8.0:
version "4.7.2" version "4.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.7.2.tgz#ff6f5f5193848a27ee9b627be3e73fb9cb5e662e" resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e"
dependencies: dependencies:
ajv "^5.2.0" ajv "^5.2.0"
babel-code-frame "^6.22.0" babel-code-frame "^6.22.0"
@ -2361,9 +2396,9 @@ extglob@^0.3.1:
dependencies: dependencies:
is-extglob "^1.0.0" is-extglob "^1.0.0"
extract-text-webpack-plugin@3.0.0: extract-text-webpack-plugin@3.0.1:
version "3.0.0" version "3.0.1"
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0.tgz#90caa7907bc449f335005e3ac7532b41b00de612" resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.1.tgz#605a8893faca1dd49bb0d2ca87493f33fd43d102"
dependencies: dependencies:
async "^2.4.1" async "^2.4.1"
loader-utils "^1.1.0" loader-utils "^1.1.0"
@ -2442,11 +2477,12 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1" flat-cache "^1.2.1"
object-assign "^4.0.1" object-assign "^4.0.1"
file-loader@0.11.2: file-loader@1.1.5:
version "0.11.2" version "1.1.5"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa"
dependencies: dependencies:
loader-utils "^1.0.2" loader-utils "^1.0.2"
schema-utils "^0.3.0"
filename-regex@^2.0.0: filename-regex@^2.0.0:
version "2.0.1" version "2.0.1"
@ -3510,7 +3546,11 @@ jdu@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/jdu/-/jdu-1.0.0.tgz#28f1e388501785ae0a1d93e93ed0b14dd41e51ce" resolved "https://registry.yarnpkg.com/jdu/-/jdu-1.0.0.tgz#28f1e388501785ae0a1d93e93ed0b14dd41e51ce"
jquery@2.2.4, jquery@>=1.6.4: jquery@3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787"
jquery@>=1.6.4:
version "2.2.4" version "2.2.4"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02"
@ -3522,7 +3562,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.2.6, js-yaml@^3.4.3, js-yaml@^3.9.1: js-yaml@^3.2.6, js-yaml@^3.4.3, js-yaml@^3.9.0, js-yaml@^3.9.1:
version "3.10.0" version "3.10.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies: dependencies:
@ -3609,9 +3649,9 @@ kind-of@^4.0.0:
dependencies: dependencies:
is-buffer "^1.1.5" is-buffer "^1.1.5"
known-css-properties@^0.3.0: known-css-properties@^0.4.0:
version "0.3.0" version "0.4.1"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.4.1.tgz#baaaf704e5f8a5f10e0e221212aae3ea738ea372"
lazy-cache@^1.0.3: lazy-cache@^1.0.3:
version "1.0.4" version "1.0.4"
@ -4040,9 +4080,9 @@ mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.17:
dependencies: dependencies:
mime-db "~1.30.0" mime-db "~1.30.0"
mime@1.3.x: mime@^1.4.1:
version "1.3.6" version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
mimic-fn@^1.0.0: mimic-fn@^1.0.0:
version "1.1.0" version "1.1.0"
@ -4501,6 +4541,12 @@ parse-json@^2.2.0:
dependencies: dependencies:
error-ex "^1.2.0" error-ex "^1.2.0"
parse-json@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-3.0.0.tgz#fa6f47b18e23826ead32f263e744d0e1e847fb13"
dependencies:
error-ex "^1.3.1"
parse-passwd@^1.0.0: parse-passwd@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
@ -4898,6 +4944,12 @@ postcss-resolve-nested-selector@^0.1.1:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
postcss-safe-parser@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz#b753eff6c7c0aea5e8375fbe4cde8bf9063ff142"
dependencies:
postcss "^6.0.6"
postcss-scss@^1.0.2: postcss-scss@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94"
@ -4979,6 +5031,14 @@ postcss@^6.0.12, postcss@^6.0.2, postcss@^6.0.9:
source-map "^0.5.7" source-map "^0.5.7"
supports-color "^4.4.0" supports-color "^4.4.0"
postcss@^6.0.13:
version "6.0.13"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.13.tgz#b9ecab4ee00c89db3ec931145bd9590bbf3f125f"
dependencies:
chalk "^2.1.0"
source-map "^0.6.1"
supports-color "^4.4.0"
prefix-style@2.0.1: prefix-style@2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06"
@ -5298,9 +5358,9 @@ react-slider@0.9.0:
version "0.9.0" version "0.9.0"
resolved "https://registry.yarnpkg.com/react-slider/-/react-slider-0.9.0.tgz#584ae63325be115581fc08bf7753adb8e4d4a0b1" resolved "https://registry.yarnpkg.com/react-slider/-/react-slider-0.9.0.tgz#584ae63325be115581fc08bf7753adb8e4d4a0b1"
react-tabs@1.1.0: react-tabs@2.1.0:
version "1.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-1.1.0.tgz#f1e3d6136e1d89f70f5ef8835468a2f03a54777a" resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-2.1.0.tgz#ba184a519e0a0803cf790a1eb19bc4fdba5fd0ea"
dependencies: dependencies:
classnames "^2.2.0" classnames "^2.2.0"
prop-types "^15.5.0" prop-types "^15.5.0"
@ -5581,6 +5641,10 @@ require-from-string@^1.1.0:
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
require-from-string@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff"
require-main-filename@^1.0.1: require-main-filename@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
@ -5615,9 +5679,9 @@ resolve-from@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
resolve-from@^3.0.0: resolve-from@^4.0.0:
version "3.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
resolve-pathname@^2.0.0, resolve-pathname@^2.2.0: resolve-pathname@^2.0.0, resolve-pathname@^2.2.0:
version "2.2.0" version "2.2.0"
@ -5886,6 +5950,10 @@ source-map@^0.1.38:
dependencies: dependencies:
amdefine ">=0.0.4" amdefine ">=0.0.4"
source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
sparkles@^1.0.0: sparkles@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
@ -6079,9 +6147,9 @@ strip-json-comments@~2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
style-loader@^0.18.2: style-loader@0.19.0:
version "0.18.2" version "0.19.0"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759"
dependencies: dependencies:
loader-utils "^1.0.2" loader-utils "^1.0.2"
schema-utils "^0.3.0" schema-utils "^0.3.0"
@ -6098,14 +6166,14 @@ stylelint-order@0.7.0:
postcss "^6.0.11" postcss "^6.0.11"
postcss-sorting "^3.0.2" postcss-sorting "^3.0.2"
stylelint@8.1.1: stylelint@8.2.0:
version "8.1.1" version "8.2.0"
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.1.1.tgz#9feeed699598b27427715551ed7786db341c19ad" resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.2.0.tgz#6a15044553fb5c3143b16d62013a370314495b0d"
dependencies: dependencies:
autoprefixer "^7.1.2" autoprefixer "^7.1.2"
balanced-match "^1.0.0" balanced-match "^1.0.0"
chalk "^2.0.1" chalk "^2.0.1"
cosmiconfig "^2.1.3" cosmiconfig "^3.1.0"
debug "^3.0.0" debug "^3.0.0"
execall "^1.0.0" execall "^1.0.0"
file-entry-cache "^2.0.0" file-entry-cache "^2.0.0"
@ -6115,7 +6183,7 @@ stylelint@8.1.1:
html-tags "^2.0.0" html-tags "^2.0.0"
ignore "^3.3.3" ignore "^3.3.3"
imurmurhash "^0.1.4" imurmurhash "^0.1.4"
known-css-properties "^0.3.0" known-css-properties "^0.4.0"
lodash "^4.17.4" lodash "^4.17.4"
log-symbols "^2.0.0" log-symbols "^2.0.0"
mathml-tag-names "^2.0.1" mathml-tag-names "^2.0.1"
@ -6128,10 +6196,11 @@ stylelint@8.1.1:
postcss-media-query-parser "^0.2.3" postcss-media-query-parser "^0.2.3"
postcss-reporter "^5.0.0" postcss-reporter "^5.0.0"
postcss-resolve-nested-selector "^0.1.1" postcss-resolve-nested-selector "^0.1.1"
postcss-safe-parser "^3.0.1"
postcss-scss "^1.0.2" postcss-scss "^1.0.2"
postcss-selector-parser "^2.2.3" postcss-selector-parser "^2.2.3"
postcss-value-parser "^3.3.0" postcss-value-parser "^3.3.0"
resolve-from "^3.0.0" resolve-from "^4.0.0"
specificity "^0.3.1" specificity "^0.3.1"
string-width "^2.1.0" string-width "^2.1.0"
style-search "^0.1.0" style-search "^0.1.0"
@ -6474,12 +6543,13 @@ urix@^0.1.0, urix@~0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
url-loader@0.5.9: url-loader@0.6.2:
version "0.5.9" version "0.6.2"
resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7"
dependencies: dependencies:
loader-utils "^1.0.2" loader-utils "^1.0.2"
mime "1.3.x" mime "^1.4.1"
schema-utils "^0.3.0"
url@^0.11.0: url@^0.11.0:
version "0.11.0" version "0.11.0"

Loading…
Cancel
Save