From 4c80bc793043b0842df1d938a0151675486f8210 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 15 Apr 2018 19:46:04 +0200 Subject: [PATCH 01/32] +Theken-Floalts --- config/rzl.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/config/rzl.js b/config/rzl.js index 2279c8f..4fcf024 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -177,10 +177,16 @@ const config : Config = { values: {} } }, + //Kuechen-Floalts floalt.topics("65537"), floalt.topics("65538"), floalt.topics("65539"), floalt.topics("65540"), + + //Theken-Floalts + floalt.topics("65543"), + floalt.topics("65544"), + esper_topics("afba40", "flyfry"), esper_topics("afba45", "alarm") ], @@ -638,6 +644,57 @@ const config : Config = { delayedApply: true } ] + }, + kitchen_counter_light: { + name: "Deckenlicht Theke", + position: [400, 440], + icon: "ceiling-light", + ui: [ + { + type: "section", + text: "Lampe Eingang" + }, + { + type: "slider", + min: 0, + max: 100, + text: "Helligkeit", + icon: "brightness-7", + topic: floalt.brightness("65544"), + delayedApply: true + }, + { + type: "slider", + min: 0, + max: 100, + text: "Farbtemperatur", + icon: "weather-sunset-down", + topic: floalt.color("65544"), + delayedApply: true + }, + { + type: "section", + text: "Lampe Hauptraum" + }, + { + type: "slider", + min: 0, + max: 100, + text: "Helligkeit", + icon: "brightness-7", + topic: floalt.brightness("65543"), + delayedApply: true + }, + { + type: "slider", + min: 0, + max: 100, + text: "Farbtemperatur", + icon: "weather-sunset-down", + topic: floalt.color("65543"), + delayedApply: true + } + ] } }, layers: [ From 2c8feefb0484a84d749802daced0d39223bd086c Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 15 Apr 2018 20:32:27 +0200 Subject: [PATCH 02/32] =?UTF-8?q?+Batteriest=C3=A4nde=20Fernbedinungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/rzl.js | 32 ++++++++++++++++++++++++++++++-- config/utils.js | 19 +++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 4fcf024..60304bd 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -2,7 +2,7 @@ import type { Config } from "config/flowtypes"; import * as types from "config/types"; import { hex, rgb, rgba, rainbow } from "config/colors"; -import { esper_topics, esper_statistics, floalt } from "./utils"; +import { esper_topics, esper_statistics, floalt, remote } from "./utils"; const config : Config = { space: { @@ -182,10 +182,12 @@ const config : Config = { floalt.topics("65538"), floalt.topics("65539"), floalt.topics("65540"), + remote.topics("65536"), //Theken-Floalts floalt.topics("65543"), floalt.topics("65544"), + remote.topics("65542"), esper_topics("afba40", "flyfry"), esper_topics("afba45", "alarm") @@ -695,7 +697,33 @@ const config : Config = { delayedApply: true } ] - } + }, + remotes: { + name: "Fernbedinungen", + position: [400, 348], + icon: "remote", + iconColor: ({remote_65536_low, remote_65542_low}) => + ((remote_65536_low == "true") || (remote_65542_low == "true")) + ? hex("#ff0000") : hex("#000000"), + ui: [ + { + type: "progress", + icon: "battery", + min: 0, + max: 100, + text: "Tisch", + topic: "remote_65536_level" + }, + { + type: "progress", + icon: "battery", + min: 0, + max: 100, + text: "Theke", + topic: "remote_65542_level" + } + ] + }, }, layers: [ { diff --git a/config/utils.js b/config/utils.js index 4e96d9b..bfe593c 100644 --- a/config/utils.js +++ b/config/utils.js @@ -59,6 +59,25 @@ export const floalt = { }) } +export const remote = { + level: (remote_id: string) => `remote_${remote_id}_level`, + low: (remote_id: string) => `remote_${remote_id}_low`, + topics: (remote_id: string) => ({ + [ `remote_${remote_id}_level` ]: { + state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_level/state`, + command: ``, + defaultValue: "0", + values: {} + }, + [ `remote_${remote_id}_low` ]: { + state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_low/state`, + command: ``, + defaultValue: "OFF", + values: { true: "ON", false: "OFF" } + } + }) +} + export const esper_statistics = (name: string, prev_ui: Array = []) => ( prev_ui.concat([ From 5c3b45751153269fabf4e3b3a2ba2d188345616c Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Mon, 16 Apr 2018 00:43:14 +0200 Subject: [PATCH 03/32] Improvements after talking to uwap - rename utils/remote to tradfri_remote because the name was to general - rename internal topics according to previous point - change type of battery remote low from string to boolean - do not use raw topic name in config, we have helper-functions for that - reformat iconColor to be a bit more readable --- config/rzl.js | 15 +++++++-------- config/utils.js | 12 ++++++------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 60304bd..7f9e124 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -2,7 +2,7 @@ import type { Config } from "config/flowtypes"; import * as types from "config/types"; import { hex, rgb, rgba, rainbow } from "config/colors"; -import { esper_topics, esper_statistics, floalt, remote } from "./utils"; +import { esper_topics, esper_statistics, floalt, tradfri_remote } from "./utils"; const config : Config = { space: { @@ -182,12 +182,12 @@ const config : Config = { floalt.topics("65538"), floalt.topics("65539"), floalt.topics("65540"), - remote.topics("65536"), + tradfri_remote.topics("65536"), //Theken-Floalts floalt.topics("65543"), floalt.topics("65544"), - remote.topics("65542"), + tradfri_remote.topics("65542"), esper_topics("afba40", "flyfry"), esper_topics("afba45", "alarm") @@ -702,9 +702,8 @@ const config : Config = { name: "Fernbedinungen", position: [400, 348], icon: "remote", - iconColor: ({remote_65536_low, remote_65542_low}) => - ((remote_65536_low == "true") || (remote_65542_low == "true")) - ? hex("#ff0000") : hex("#000000"), + iconColor: (state) => + (state[tradfri_remote.low("65536")] || state[tradfri_remote.low("65542")]) ? hex("#ff0000") : hex("#000000"), ui: [ { type: "progress", @@ -712,7 +711,7 @@ const config : Config = { min: 0, max: 100, text: "Tisch", - topic: "remote_65536_level" + topic: tradfri_remote.level("65536") }, { type: "progress", @@ -720,7 +719,7 @@ const config : Config = { min: 0, max: 100, text: "Theke", - topic: "remote_65542_level" + topic: tradfri_remote.level("65542") } ] }, diff --git a/config/utils.js b/config/utils.js index bfe593c..c19ddb0 100644 --- a/config/utils.js +++ b/config/utils.js @@ -59,21 +59,21 @@ export const floalt = { }) } -export const remote = { - level: (remote_id: string) => `remote_${remote_id}_level`, - low: (remote_id: string) => `remote_${remote_id}_low`, +export const tradfri_remote = { + level: (remote_id: string) => `tradfri_remote_${remote_id}_level`, + low: (remote_id: string) => `tradfri_remote_${remote_id}_low`, topics: (remote_id: string) => ({ - [ `remote_${remote_id}_level` ]: { + [ `tradfri_remote_${remote_id}_level` ]: { state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_level/state`, command: ``, defaultValue: "0", values: {} }, - [ `remote_${remote_id}_low` ]: { + [ `tradfri_remote_${remote_id}_low` ]: { state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_low/state`, command: ``, defaultValue: "OFF", - values: { true: "ON", false: "OFF" } + values: { [true]: "ON", [false]: "OFF" } } }) } From eb92f61a01052fdb65af38b9cbdc633b9e7f6d79 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Mon, 16 Apr 2018 20:05:06 +0000 Subject: [PATCH 04/32] chore(package): update flow-bin to version 0.70.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef4ee08..9ca3269 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "extract-text-webpack-plugin": "next", "file-loader": "^1.1.5", "flow": "^0.2.3", - "flow-bin": "^0.69.0", + "flow-bin": "^0.70.0", "flow-typed": "^2.3.0", "html-webpack-plugin": "^3.1.0", "husky": "^0.14.3", From 3a34f345587b0da920008431f9a43fd46f45296d Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sat, 21 Apr 2018 12:40:08 +0200 Subject: [PATCH 05/32] use string instead of boolean Because array-keys are strings and it seems that they can not be booleans --- config/rzl.js | 2 +- config/utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 7f9e124..3cec3f3 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -703,7 +703,7 @@ const config : Config = { position: [400, 348], icon: "remote", iconColor: (state) => - (state[tradfri_remote.low("65536")] || state[tradfri_remote.low("65542")]) ? hex("#ff0000") : hex("#000000"), + ((state[tradfri_remote.low("65536")] == "true") || (state[tradfri_remote.low("65542")] == "true")) ? hex("#ff0000") : hex("#000000"), ui: [ { type: "progress", diff --git a/config/utils.js b/config/utils.js index c19ddb0..a4cce98 100644 --- a/config/utils.js +++ b/config/utils.js @@ -73,7 +73,7 @@ export const tradfri_remote = { state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_low/state`, command: ``, defaultValue: "OFF", - values: { [true]: "ON", [false]: "OFF" } + values: { true: "ON", false: "OFF" } } }) } From b642a30384c326042d29c93e7d90166b8c8803b9 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sat, 21 Apr 2018 14:13:59 +0200 Subject: [PATCH 06/32] +Ponyville FM --- config/rzl.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 2279c8f..b557342 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -102,7 +102,7 @@ const config : Config = { defaultValue: "", values: { mpd: "NPR01", kohina: "NPR02", somafm_dronezone: "NPR03", somafm_thetrip: "NPR04", querfunk: "NPR05", somafm_defconradio: "NPR06", somafm_secretagent: "NPR07", somafm_lush: "NPR08", - somafm_beatblender: "NPR09"} + somafm_beatblender: "NPR09", ponyville: "NPR0a"} }, rundumleuchte: { state: "/service/openhab/out/pca301_rundumleuchte/state", @@ -398,7 +398,8 @@ const config : Config = { somafm_defconradio: "Defcon Radio (SomaFM)", somafm_secretagent: "Secret Agent (SomaFM)", somafm_lush: "Lush (SomaFM)", - somafm_beatblender: "Beat Blender (Soma FM)" + somafm_beatblender: "Beat Blender (Soma FM)", + ponyville: "Ponyville FM" }, icon: "radio", enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" && state.onkyo_inputs.internal == "netzwerk" From e747acc67ed96e4f6d680b2c9ccf561324446d7f Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 22 Apr 2018 13:53:41 +0200 Subject: [PATCH 07/32] =?UTF-8?q?+Licht=20Sp=C3=BCle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/rzl.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/config/rzl.js b/config/rzl.js index 2279c8f..cc38cad 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -175,6 +175,12 @@ const config : Config = { command: "/service/openhab/in/kitchen_light_all_brightness/command", defaultValue: "0", values: {} + }, + kitchen_sink_light_brightness: { + state: "/service/openhab/out/tradfri_0100_gwb8d7af2b448f_65545_brightness/state", + command: "/service/openhab/out/tradfri_0100_gwb8d7af2b448f_65545_brightness/command", + defaultValue: "0", + values: {} } }, floalt.topics("65537"), @@ -638,6 +644,31 @@ const config : Config = { delayedApply: true } ] + }, + kitchen_sink_light: { + name: "Licht Spüle", + position: [300, 348], + icon: "ceiling-light", + ui: [ + { + type: "toggle", + on: 50, + off: 0, + toggled: n => parseInt(n) > 0, + topic: "kitchen_sink_light_brightness", + text: "Ein/Ausschalten", + icon: "power" + }, + { + type: "slider", + min: 0, + max: 100, + text: "Helligkeit", + icon: "brightness-7", + topic: "kitchen_sink_light_brightness", + delayedApply: true + } + ] } }, layers: [ From 1f248a5e9a0c89f13e41b2bd5e19e775c2ab9619 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 29 Apr 2018 18:24:23 +0200 Subject: [PATCH 08/32] +2 neue Fernbedinungen --- config/rzl.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/config/rzl.js b/config/rzl.js index 3cec3f3..3ab9230 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -183,11 +183,13 @@ const config : Config = { floalt.topics("65539"), floalt.topics("65540"), tradfri_remote.topics("65536"), + tradfri_remote.topics("65547"), //Theken-Floalts floalt.topics("65543"), floalt.topics("65544"), tradfri_remote.topics("65542"), + tradfri_remote.topics("65546"), esper_topics("afba40", "flyfry"), esper_topics("afba45", "alarm") @@ -703,7 +705,7 @@ const config : Config = { position: [400, 348], icon: "remote", iconColor: (state) => - ((state[tradfri_remote.low("65536")] == "true") || (state[tradfri_remote.low("65542")] == "true")) ? hex("#ff0000") : hex("#000000"), + ((state[tradfri_remote.low("65536")] == "true") || (state[tradfri_remote.low("65542")] == "true") || (state[tradfri_remote.low("65546")] == "true") || (state[tradfri_remote.low("65547")] == "true")) ? hex("#ff0000") : hex("#000000"), ui: [ { type: "progress", @@ -713,6 +715,14 @@ const config : Config = { text: "Tisch", topic: tradfri_remote.level("65536") }, + { + type: "progress", + icon: "battery", + min: 0, + max: 100, + text: "Tisch 2", + topic: tradfri_remote.level("65547") + }, { type: "progress", icon: "battery", @@ -720,6 +730,14 @@ const config : Config = { max: 100, text: "Theke", topic: tradfri_remote.level("65542") + }, + { + type: "progress", + icon: "battery", + min: 0, + max: 100, + text: "Theke 2", + topic: tradfri_remote.level("65546") } ] }, From a7785bf1def94cb139a165119cf352c21aecfca7 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 29 Apr 2018 21:01:20 +0200 Subject: [PATCH 09/32] =?UTF-8?q?Sp=C3=BChlenlicht:=20fix=20command=20topi?= =?UTF-8?q?c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/rzl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rzl.js b/config/rzl.js index cc38cad..bf62774 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -178,7 +178,7 @@ const config : Config = { }, kitchen_sink_light_brightness: { state: "/service/openhab/out/tradfri_0100_gwb8d7af2b448f_65545_brightness/state", - command: "/service/openhab/out/tradfri_0100_gwb8d7af2b448f_65545_brightness/command", + command: "/service/openhab/in/tradfri_0100_gwb8d7af2b448f_65545_brightness/command", defaultValue: "0", values: {} } From e633b62deb880a7a9c38af7590d4afa780b22b1c Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 2 Jun 2018 14:26:57 +0000 Subject: [PATCH 10/32] chore(package): update webpack-cli to version 3.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 278a6c2..6d6ab62 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "lodash-webpack-plugin": "^0.11.4", "style-loader": "^0.21.0", "webpack": "^4.3.0", - "webpack-cli": "^2.0.13", + "webpack-cli": "^3.0.0", "webpack-dev-server": "^3.1.1", "webpack-merge": "^4.1.1", "webpack-shell-plugin": "^0.5.0" From b966fb46106184044a92c90482322b6a18c04225 Mon Sep 17 00:00:00 2001 From: uwap Date: Mon, 18 Jun 2018 10:31:37 +0200 Subject: [PATCH 11/32] Add slider from material-ui/lab --- config/utils.js | 2 +- package.json | 4 +- src/components/App.js | 8 +- src/components/SideBar.js | 14 +- src/components/TopBar.js | 8 +- src/components/UiItemList/UiItem.js | 41 +- src/components/UiItemList/index.js | 58 +- yarn.lock | 1380 ++++----------------------- 8 files changed, 261 insertions(+), 1254 deletions(-) diff --git a/config/utils.js b/config/utils.js index 4e96d9b..20cc656 100644 --- a/config/utils.js +++ b/config/utils.js @@ -60,7 +60,7 @@ export const floalt = { } export const esper_statistics = (name: string, - prev_ui: Array = []) => ( + prev_ui: Array = []): Array => ( prev_ui.concat([ { type: "section", diff --git a/package.json b/package.json index 6d6ab62..ebeb800 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,11 @@ "precommit": "yarn lint" }, "dependencies": { + "@material-ui/core": "^1.2.1", + "@material-ui/lab": "^1.0.0-alpha.5", "babel-preset-env": "^1.6.0", "leaflet": "^1.3.1", "lodash-es": "^4.17.4", - "material-ui": "npm:material-ui@next", - "material-ui-old": "npm:material-ui@latest", "mdi": "^2.0.46", "mqtt": "^2.14.0", "react": "^16.0.0", diff --git a/src/components/App.js b/src/components/App.js index c19ea83..fc5becd 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -8,10 +8,10 @@ import merge from "lodash/merge"; import type { Config, Control, Topics } from "config/flowtypes"; -import MuiThemeProvider from "material-ui/styles/MuiThemeProvider"; -import createMuiTheme from "material-ui/styles/createMuiTheme"; -import withStyles from "material-ui/styles/withStyles"; -import * as Colors from "material-ui/colors"; +import MuiThemeProvider from "@material-ui/core/styles/MuiThemeProvider"; +import createMuiTheme from "@material-ui/core/styles/createMuiTheme"; +import withStyles from "@material-ui/core/styles/withStyles"; +import * as Colors from "@material-ui/core/colors"; import SideBar from "components/SideBar"; import ControlMap from "components/ControlMap"; diff --git a/src/components/SideBar.js b/src/components/SideBar.js index f1886a9..a94e62e 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -1,13 +1,13 @@ // @flow import * as React from "react"; -import withStyles from "material-ui/styles/withStyles"; -import Drawer from "material-ui/Drawer"; -import Typography from "material-ui/Typography"; -import IconButton from "material-ui/IconButton"; -import AppBar from "material-ui/AppBar"; -import Toolbar from "material-ui/Toolbar"; -import List from "material-ui/List"; +import withStyles from "@material-ui/core/styles/withStyles"; +import Drawer from "@material-ui/core/Drawer"; +import Typography from "@material-ui/core/Typography"; +import IconButton from "@material-ui/core/IconButton"; +import AppBar from "@material-ui/core/AppBar"; +import Toolbar from "@material-ui/core/Toolbar"; +import List from "@material-ui/core/List"; import { renderIcon } from "utils/parseIconName"; import type { Control } from "config/flowtypes"; diff --git a/src/components/TopBar.js b/src/components/TopBar.js index 91b9c60..56cbe10 100644 --- a/src/components/TopBar.js +++ b/src/components/TopBar.js @@ -1,10 +1,10 @@ // @flow import React from "react"; -import AppBar from "material-ui/AppBar"; -import Toolbar from "material-ui/Toolbar"; -import Typography from "material-ui/Typography"; -import { CircularProgress } from "material-ui/Progress"; +import AppBar from "@material-ui/core/AppBar"; +import Toolbar from "@material-ui/core/Toolbar"; +import Typography from "@material-ui/core/Typography"; +import CircularProgress from "@material-ui/core/CircularProgress"; export type TopBarProps = { title: string, diff --git a/src/components/UiItemList/UiItem.js b/src/components/UiItemList/UiItem.js index a342271..8a39b40 100644 --- a/src/components/UiItemList/UiItem.js +++ b/src/components/UiItemList/UiItem.js @@ -6,18 +6,19 @@ import { ListItemSecondaryAction, ListItemText, ListSubheader -} from "material-ui/List"; -import Switch from "material-ui/Switch"; -import Input, { InputLabel } from "material-ui/Input"; -import { FormControl } from "material-ui/Form"; -import Select from "material-ui/Select"; -import { MenuItem } from "material-ui/Menu"; -import Button from "material-ui/Button"; -import { LinearProgress } from "material-ui/Progress"; +} from "@material-ui/core/List"; +import Switch from "@material-ui/core/Switch"; +import Input, { InputLabel } from "@material-ui/core/Input"; +import FormControl from "@material-ui/core/FormControl"; +import Select from "@material-ui/core/Select"; +import { MenuItem } from "@material-ui/core/Menu"; +import Button from "@material-ui/core/Button"; +import LinearProgress from "@material-ui/core/LinearProgress"; +import SliderComponent from "@material-ui/lab/Slider"; import type { UIControl, UIToggle, UIDropDown, UILink, - UISection, UIText, UIProgress + UISection, UIText, UIProgress, UISlider } from "config/flowtypes"; import keyOf from "utils/keyOf"; @@ -184,6 +185,27 @@ export class DropDown extends UiControl { } } +export class Slider extends UiControl { + runPrimaryAction = (_e: ?any, v: ?number) => { + if (v != null) { + this.changeState(v); + } + } + + render() { + return [ + , + this.props.item.delayedApply || this.runPrimaryAction()} + onDragEnd={this.runPrimaryAction} + disabled={!this.isEnabled()} /> + ]; + } +} + export class Link extends UiItem { runPrimaryAction = () => { const control = this.props.item; @@ -242,3 +264,4 @@ export class Progress extends UiControl { ]; } } + diff --git a/src/components/UiItemList/index.js b/src/components/UiItemList/index.js index 9cf82b6..1014d57 100644 --- a/src/components/UiItemList/index.js +++ b/src/components/UiItemList/index.js @@ -2,19 +2,14 @@ import React from "react"; import { ListItem, - ListItemIcon, - ListItemSecondaryAction, - ListItemText -} from "material-ui/List"; + ListItemIcon +} from "@material-ui/core/List"; import { renderIcon } from "utils/parseIconName"; -import type { ControlUI, UIControl, UISlider } from "config/flowtypes"; +import type { ControlUI } from "config/flowtypes"; -// TODO: Use something else -import Slider from "material-ui-old/Slider"; -import MuiThemeProvider from "material-ui-old/styles/MuiThemeProvider"; - -import { Toggle, DropDown, Link, Section, Text, Progress } from "./UiItem"; +import { Toggle, DropDown, Link, + Section, Text, Progress, Slider } from "./UiItem"; export type UiItemListProps = { controls: Array, @@ -70,7 +65,9 @@ export default class UiItemList extends React.PureComponent { onChangeState={this.props.onChangeState} />; } case "slider": { - return this.renderSlider(control); + return ; } case "text": { return { } } } - - getValue(control: UIControl) { - const value = this.props.state[control.topic]; - if (value == null) { - throw new Error( - `Unknown topic "${control.topic}" in ${control.type} "${control.text}"` - ); - } - return value; - } - - renderSlider(control: UISlider) { - const value = this.getValue(control); - const on = (dontApply: ?boolean) => () => { - if (dontApply == null || dontApply === false) { - this.props.onChangeState(control.topic, - // $FlowFixMe - this.val); - } - }; - return [ - , - - - { - // $FlowFixMe - this.val = next; - on(control.delayedApply)(); - }} - onDragStop={on(false)} - style={{width: 100}} - /> - - ]; - } } diff --git a/yarn.lock b/yarn.lock index 13a86e3..948c705 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,6 +46,13 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/runtime@^7.0.0-beta.42": + version "7.0.0-beta.51" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.51.tgz#48b8ed18307034c6620f643514650ca2ccc0165a" + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.11.1" + "@babel/template@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" @@ -78,20 +85,52 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@sindresorhus/is@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" +"@material-ui/core@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-1.2.1.tgz#f8c73da10b875762b37be7167ec2ac79b027499f" + dependencies: + "@babel/runtime" "^7.0.0-beta.42" + "@types/jss" "^9.5.3" + "@types/react-transition-group" "^2.0.8" + brcast "^3.0.1" + classnames "^2.2.5" + csstype "^2.5.2" + debounce "^1.1.0" + deepmerge "^2.0.1" + dom-helpers "^3.2.1" + hoist-non-react-statics "^2.5.0" + jss "^9.3.3" + jss-camel-case "^6.0.0" + jss-default-unit "^8.0.2" + jss-global "^3.0.0" + jss-nested "^6.0.1" + jss-props-sort "^6.0.0" + jss-vendor-prefixer "^7.0.0" + keycode "^2.1.9" + normalize-scroll-left "^0.1.2" + prop-types "^15.6.0" + react-event-listener "^0.6.0" + react-jss "^8.1.0" + react-popper "^0.10.0" + react-transition-group "^2.2.1" + recompose "^0.26.0 || ^0.27.0" + scroll "^2.0.3" + warning "^4.0.1" -"@types/jss@^9.3.0": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.2.tgz#85076b2c16606a6f996aa7e20c1ec7ed6a08075f" +"@material-ui/lab@^1.0.0-alpha.5": + version "1.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-1.0.0-alpha.5.tgz#2f53a76c4b53aca044c91392ad5e4b47f9a4b241" + +"@types/jss@^9.5.3": + version "9.5.3" + resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.3.tgz#0c106de3fe0b324cd4173fac7dab26c12cda624e" dependencies: csstype "^2.0.0" indefinite-observable "^1.0.1" -"@types/react-transition-group@^2.0.6": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.0.7.tgz#2847292d54c5685d982ae5a3ecb6960946689d87" +"@types/react-transition-group@^2.0.8": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.0.11.tgz#feb274676a39383fffaa0dff710958d2251abefb" dependencies: "@types/react" "*" @@ -169,10 +208,6 @@ alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" -ansi-escapes@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -199,14 +234,6 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - -any-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" - anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -256,10 +283,6 @@ arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -335,14 +358,6 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" -ast-types@0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" - -ast-types@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -351,11 +366,11 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@^1.5.0, async@^1.5.2: +async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.4.1, async@^2.6.0: +async@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -465,14 +480,6 @@ babel-generator@^6.26.0: source-map "^0.5.7" trim-right "^1.0.1" -babel-helper-bindify-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" @@ -515,15 +522,6 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helper-explode-class@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" - dependencies: - babel-helper-bindify-decorators "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" @@ -615,34 +613,14 @@ babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-constructor-call@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" - babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" -babel-plugin-syntax-export-extensions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" - babel-plugin-syntax-flow@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" @@ -651,23 +629,11 @@ babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: +babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" dependencies: @@ -675,14 +641,6 @@ babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async- babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-class-constructor-call@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" - dependencies: - babel-plugin-syntax-class-constructor-call "^6.18.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-plugin-transform-class-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" @@ -692,16 +650,6 @@ babel-plugin-transform-class-properties@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" - dependencies: - babel-helper-explode-class "^6.24.1" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -714,7 +662,7 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: +babel-plugin-transform-es2015-block-scoping@^6.23.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" dependencies: @@ -724,7 +672,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es20 babel-types "^6.26.0" lodash "^4.17.4" -babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: +babel-plugin-transform-es2015-classes@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -738,33 +686,33 @@ babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-cla babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: +babel-plugin-transform-es2015-computed-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: +babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: +babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: +babel-plugin-transform-es2015-function-name@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: @@ -795,7 +743,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-template "^6.26.0" babel-types "^6.26.0" -babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" dependencies: @@ -803,7 +751,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-e babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: +babel-plugin-transform-es2015-modules-umd@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" dependencies: @@ -811,14 +759,14 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015 babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: +babel-plugin-transform-es2015-object-super@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: +babel-plugin-transform-es2015-parameters@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: @@ -829,7 +777,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015- babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: @@ -842,7 +790,7 @@ babel-plugin-transform-es2015-spread@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: +babel-plugin-transform-es2015-sticky-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: @@ -856,13 +804,13 @@ babel-plugin-transform-es2015-template-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: +babel-plugin-transform-es2015-unicode-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: @@ -870,7 +818,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es20 babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: +babel-plugin-transform-exponentiation-operator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" dependencies: @@ -878,27 +826,13 @@ babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-e babel-plugin-syntax-exponentiation-operator "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-export-extensions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" - dependencies: - babel-plugin-syntax-export-extensions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0, babel-plugin-transform-flow-strip-types@^6.8.0: +babel-plugin-transform-flow-strip-types@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" dependencies: babel-plugin-syntax-flow "^6.18.0" babel-runtime "^6.22.0" -babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - babel-plugin-transform-react-display-name@^6.23.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" @@ -927,7 +861,7 @@ babel-plugin-transform-react-jsx@^6.24.1: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: +babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" dependencies: @@ -983,35 +917,6 @@ babel-preset-env@^1.6.0: invariant "^2.2.2" semver "^5.3.0" -babel-preset-es2015@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - babel-preset-flow@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" @@ -1029,34 +934,7 @@ babel-preset-react@^6.24.1: babel-plugin-transform-react-jsx-source "^6.22.0" babel-preset-flow "^6.23.0" -babel-preset-stage-1@^6.5.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" - dependencies: - babel-plugin-transform-class-constructor-call "^6.24.1" - babel-plugin-transform-export-extensions "^6.22.0" - babel-preset-stage-2 "^6.24.1" - -babel-preset-stage-2@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.24.1" - babel-plugin-transform-decorators "^6.24.1" - babel-preset-stage-3 "^6.24.1" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@^6.26.0, babel-register@^6.9.0: +babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" dependencies: @@ -1068,7 +946,7 @@ babel-register@^6.26.0, babel-register@^6.9.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -1108,11 +986,11 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@7.0.0-beta.44, babylon@^7.0.0-beta.30, babylon@^7.0.0-beta.40: +babylon@7.0.0-beta.44, babylon@^7.0.0-beta.40: version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" -babylon@^6.17.3, babylon@^6.18.0: +babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1169,10 +1047,6 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -binaryextensions@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" - bl@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -1234,10 +1108,6 @@ boom@2.x.x: dependencies: hoek "2.x.x" -bowser@^1.7.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.3.tgz#6643ae4d783f31683f6d23156976b74183862162" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1420,18 +1290,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - callback-stream@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/callback-stream/-/callback-stream-1.1.0.tgz#4701a51266f06e06eaa71fc17233822d875f4908" @@ -1506,7 +1364,7 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1516,7 +1374,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: @@ -1524,13 +1382,13 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" +chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" change-emitter@^0.1.2: version "0.1.6" @@ -1540,6 +1398,10 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" +chardet@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.5.0.tgz#fe3ac73c00c3d865ffcc02a0682e2c20b6a06029" + charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -1631,35 +1493,12 @@ clean-webpack-plugin@^0.1.18: dependencies: rimraf "^2.6.1" -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: restore-cursor "^2.0.0" -cli-spinners@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" - -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - dependencies: - colors "1.0.3" - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1680,40 +1519,10 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - -clone-response@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - dependencies: - mimic-response "^1.0.0" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - -clone@^1.0.0, clone@^1.0.2: +clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - -cloneable-readable@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1767,10 +1576,6 @@ colormin@^1.0.5: css-color-names "0.0.4" has "^1.0.1" -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - colors@^1.1.2: version "1.2.1" resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.1.tgz#f4a3d302976aaf042356ba1ade3b1a2c62d9d794" @@ -1896,10 +1701,14 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: +core-js@^2.4.0, core-js@^2.5.0: version "2.5.4" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.4.tgz#f2c8bf181f2a80b92f360121429ce63a2f0aeae0" +core-js@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1979,13 +1788,6 @@ css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" -css-in-js-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" - dependencies: - hyphenate-style-name "^1.0.2" - isobject "^3.0.1" - css-loader@^0.28.9: version "0.28.11" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" @@ -2084,6 +1886,10 @@ csstype@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.1.1.tgz#37b01a7a9958ef0b88167ff6678deccd732e0ae2" +csstype@^2.5.2: + version "2.5.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.3.tgz#2504152e6e1cc59b32098b7f5d6a63f16294c1f7" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2094,27 +1900,19 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" -dargs@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" -date-fns@^1.27.2: - version "1.29.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -dateformat@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" +debounce@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.1.0.tgz#6a1a4ee2a9dc4b7c24bb012558dbcdb05b37f408" debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: version "2.6.9" @@ -2136,7 +1934,7 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" -decompress-response@^3.2.0, decompress-response@^3.3.0: +decompress-response@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" dependencies: @@ -2146,7 +1944,7 @@ deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" -deep-extend@^0.4.0, deep-extend@~0.4.0: +deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -2238,10 +2036,6 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" -detect-conflict@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -2256,10 +2050,6 @@ detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" -diff@^3.3.1, diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - diffie-hellman@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" @@ -2368,26 +2158,14 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -editions@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -ejs@^2.3.1: - version "2.5.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.8.tgz#2ab6954619f225e6193b7ac5f7c39c48fefe4380" - electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: version "1.3.42" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.42.tgz#95c33bf01d0cc405556aec899fe61fd4d76ea0f9" -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -2432,29 +2210,18 @@ entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -envinfo@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-4.4.2.tgz#472c49f3a8b9bca73962641ce7cb692bf623cd1c" - errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" -error@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" - dependencies: - string-template "~0.2.1" - xtend "~4.0.0" - es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.11.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" @@ -2561,7 +2328,7 @@ esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" @@ -2622,10 +2389,6 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -2650,12 +2413,6 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - dependencies: - homedir-polyfill "^1.0.1" - express@^4.16.2: version "4.16.3" resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" @@ -2708,7 +2465,7 @@ extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4, external-editor@^2.1.0: +external-editor@^2.0.4: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" dependencies: @@ -2716,6 +2473,14 @@ external-editor@^2.0.4, external-editor@^2.1.0: iconv-lite "^0.4.17" tmp "^0.0.33" +external-editor@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.0.tgz#dc35c48c6f98a30ca27a20e9687d7f3c77704bb6" + dependencies: + chardet "^0.5.0" + iconv-lite "^0.4.22" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -2792,13 +2557,6 @@ fbjs@^0.8.1, fbjs@^0.8.16, fbjs@^0.8.6: setimmediate "^1.0.5" ua-parser-js "^0.7.9" -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -2869,18 +2627,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: locate-path "^2.0.0" -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - dependencies: - readable-stream "^2.0.2" - flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" @@ -2898,10 +2650,6 @@ flow-bin@^0.69.0: version "0.69.0" resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.69.0.tgz#053159a684a6051fcbf0b71a2eb19a9679082da6" -flow-parser@^0.*: - version "0.69.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.69.0.tgz#378b5128d6d0b554a8b2f16a4ca3e1ab9649f00e" - flow-typed@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/flow-typed/-/flow-typed-2.4.0.tgz#3d2f48cf85df29df3bca6745b623726496ff4788" @@ -2973,7 +2721,7 @@ fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" -from2@^2.1.0, from2@^2.1.1: +from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" dependencies: @@ -3058,7 +2806,7 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" -get-stream@3.0.0, get-stream@^3.0.0: +get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -3072,32 +2820,12 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -gh-got@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" - dependencies: - got "^7.0.0" - is-plain-obj "^1.1.0" - -github-username@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" - dependencies: - gh-got "^6.0.0" - github@0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/github/-/github-0.2.4.tgz#24fa7f0e13fa11b946af91134c51982a91ce538b" dependencies: mime "^1.2.11" -glob-all@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" - dependencies: - glob "^7.0.5" - yargs "~1.2.6" - glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -3133,7 +2861,7 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -3144,23 +2872,9 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" +global-modules-path@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.1.0.tgz#923ec524e8726bb0c1a4ed4b8e21e1ff80c88bbb" global@~4.3.0: version "4.3.2" @@ -3198,7 +2912,7 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -got@^7.0.0, got@^7.1.0: +got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" dependencies: @@ -3217,38 +2931,10 @@ got@^7.0.0, got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -got@^8.2.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/got/-/got-8.3.0.tgz#6ba26e75f8a6cc4c6b3eb1fe7ce4fec7abac8533" - dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -grouped-queue@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" - dependencies: - lodash "^4.17.2" - handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -3270,10 +2956,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -3394,12 +3076,6 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" @@ -3454,10 +3130,6 @@ htmlparser2@~3.3.0: domutils "1.1" readable-stream "1.0" -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -3534,6 +3206,12 @@ iconv-lite@^0.4.17, iconv-lite@~0.4.13: dependencies: safer-buffer "^2.1.0" +iconv-lite@^0.4.22: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" @@ -3579,10 +3257,6 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -3606,18 +3280,11 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -inline-style-prefixer@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz#8551b8e5b4d573244e66a34b04f7d32076a2b534" - dependencies: - bowser "^1.7.3" - css-in-js-utils "^2.0.0" - -inquirer@^3.0.6, inquirer@^3.3.0: +inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: @@ -3636,20 +3303,20 @@ inquirer@^3.0.6, inquirer@^3.3.0: strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" +inquirer@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.0.0.tgz#e8c20303ddc15bbfc2c12a6213710ccd9e1413d8" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" cli-cursor "^2.1.0" cli-width "^2.0.0" - external-editor "^2.1.0" + external-editor "^3.0.0" figures "^2.0.0" lodash "^4.3.0" mute-stream "0.0.7" run-async "^2.2.0" - rxjs "^5.5.2" + rxjs "^6.1.0" string-width "^2.1.0" strip-ansi "^4.0.0" through "^2.3.6" @@ -3660,17 +3327,10 @@ internal-ip@1.2.0: dependencies: meow "^3.3.0" -interpret@^1.0.0, interpret@^1.0.4: +interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" - dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" - invariant@^2.2.0, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -3868,12 +3528,6 @@ is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" -is-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" - dependencies: - symbol-observable "^0.2.2" - is-odd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" @@ -3934,16 +3588,10 @@ is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" -is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: +is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-scoped@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" - dependencies: - scoped-regex "^1.0.0" - is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4013,14 +3661,6 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istextorbinary@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" - dependencies: - binaryextensions "2" - editions "^1.3.3" - textextensions "2" - isurl@^1.0.0-alpha5: version "1.0.0" resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" @@ -4054,46 +3694,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jscodeshift@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" - dependencies: - async "^1.5.0" - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-preset-es2015 "^6.9.0" - babel-preset-stage-1 "^6.5.0" - babel-register "^6.9.0" - babylon "^6.17.3" - colors "^1.1.2" - flow-parser "^0.*" - lodash "^4.13.1" - micromatch "^2.3.7" - node-dir "0.1.8" - nomnom "^1.8.1" - recast "^0.12.5" - temp "^0.8.1" - write-file-atomic "^1.2.0" - -jscodeshift@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748" - dependencies: - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-preset-es2015 "^6.9.0" - babel-preset-stage-1 "^6.5.0" - babel-register "^6.9.0" - babylon "^7.0.0-beta.30" - colors "^1.1.2" - flow-parser "^0.*" - lodash "^4.13.1" - micromatch "^2.3.7" - neo-async "^2.5.0" - node-dir "0.1.8" - nomnom "^1.8.1" - recast "^0.14.1" - temp "^0.8.1" - write-file-atomic "^1.2.0" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -4106,14 +3706,6 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -4244,16 +3836,10 @@ jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" -keycode@^2.1.8, keycode@^2.1.9: +keycode@^2.1.9: version "2.2.0" resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" -keyv@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" - dependencies: - json-buffer "3.0.0" - killable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" @@ -4303,54 +3889,6 @@ listenercount@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - -listr-update-renderer@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - -listr@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - figures "^1.7.0" - indent-string "^2.1.0" - is-observable "^0.2.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.4.0" - listr-verbose-renderer "^0.4.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - ora "^0.2.3" - p-map "^1.1.1" - rxjs "^5.4.2" - stream-to-observable "^0.2.0" - strip-ansi "^3.0.1" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -4361,15 +3899,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -4420,41 +3949,20 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" -lodash.merge@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - dependencies: - chalk "^1.0.0" - -log-symbols@^2.1.0, log-symbols@^2.2.0: +log-symbols@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" dependencies: chalk "^2.0.1" -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" - loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -4480,10 +3988,6 @@ lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" -lowercase-keys@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -4499,7 +4003,7 @@ macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" -make-dir@^1.0.0, make-dir@^1.1.0: +make-dir@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" dependencies: @@ -4519,55 +4023,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -"material-ui-old@npm:material-ui@latest": - version "0.20.0" - resolved "https://registry.yarnpkg.com/material-ui/-/material-ui-0.20.0.tgz#85411bb59c916c9c7703f29dcffc44e3a67d5111" - dependencies: - babel-runtime "^6.23.0" - 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-event-listener "^0.5.1" - react-transition-group "^1.2.1" - recompose "^0.26.0" - simple-assign "^0.1.0" - warning "^3.0.0" - -"material-ui@npm:material-ui@next": - version "1.0.0-beta.41" - resolved "https://registry.yarnpkg.com/material-ui/-/material-ui-1.0.0-beta.41.tgz#0869bed008caa10003ab20ea726476b560c23160" - dependencies: - "@types/jss" "^9.3.0" - "@types/react-transition-group" "^2.0.6" - babel-runtime "^6.26.0" - brcast "^3.0.1" - classnames "^2.2.5" - deepmerge "^2.0.1" - dom-helpers "^3.2.1" - hoist-non-react-statics "^2.5.0" - jss "^9.3.3" - jss-camel-case "^6.0.0" - jss-default-unit "^8.0.2" - jss-global "^3.0.0" - jss-nested "^6.0.1" - jss-props-sort "^6.0.0" - jss-vendor-prefixer "^7.0.0" - keycode "^2.1.9" - lodash "^4.2.0" - normalize-scroll-left "^0.1.2" - prop-types "^15.6.0" - react-event-listener "^0.5.1" - react-jss "^8.1.0" - react-lifecycles-compat "^1.0.2" - react-popper "^0.8.0" - react-scrollbar-size "^2.0.2" - react-transition-group "^2.2.1" - recompose "^0.26.0" - scroll "^2.0.3" - warning "^3.0.0" - math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" @@ -4595,29 +4050,6 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" -mem-fs-editor@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" - dependencies: - commondir "^1.0.1" - deep-extend "^0.4.0" - ejs "^2.3.1" - glob "^7.0.3" - globby "^6.1.0" - mkdirp "^0.5.0" - multimatch "^2.0.0" - rimraf "^2.2.8" - through2 "^2.0.0" - vinyl "^2.0.1" - -mem-fs@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" - dependencies: - through2 "^2.0.0" - vinyl "^1.1.0" - vinyl-file "^2.0.0" - mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -4654,7 +4086,7 @@ methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.7: +micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -4751,10 +4183,6 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" - minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -4781,7 +4209,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -4840,15 +4268,6 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4896,10 +4315,6 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" -node-dir@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" - node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -4955,13 +4370,6 @@ node-pre-gyp@^0.6.39: tar "^2.2.1" tar-pack "^3.4.0" -nomnom@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4996,14 +4404,6 @@ normalize-scroll-left@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz#6b79691ba79eb5fb107fa5edfbdc06b55caee2aa" -normalize-url@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - normalize-url@^1.4.0: version "1.9.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" @@ -5108,10 +4508,6 @@ once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -5135,15 +4531,6 @@ optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -ora@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" - dependencies: - chalk "^1.1.1" - cli-cursor "^1.0.2" - cli-spinners "^0.1.2" - object-assign "^4.0.1" - ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -5201,28 +4588,10 @@ p-cancelable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" - -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - dependencies: - p-reduce "^1.0.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - -p-lazy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" - p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" @@ -5239,22 +4608,12 @@ p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" dependencies: p-finally "^1.0.0" -p-timeout@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" - dependencies: - p-finally "^1.0.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -5302,17 +4661,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -5351,10 +4699,6 @@ path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -5367,12 +4711,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - dependencies: - pify "^3.0.0" - pbkdf2@^3.0.3: version "3.0.14" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" @@ -5387,7 +4725,7 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5415,7 +4753,7 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" -popper.js@^1.12.9: +popper.js@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" @@ -5685,22 +5023,10 @@ prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.5.3: - version "1.11.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75" - -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -5708,7 +5034,7 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -private@^0.1.6, private@^0.1.7, private@~0.1.5: +private@^0.1.6, private@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -5742,7 +5068,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0: +prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: @@ -5828,14 +5154,6 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -5909,14 +5227,13 @@ react-dom@^16.0.0: object-assign "^4.1.1" prop-types "^15.6.0" -react-event-listener@^0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.5.3.tgz#a8b492596ad601865314fcc2c18cb87b6ce3876e" +react-event-listener@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.1.tgz#41c7a80a66b398c27dd511e22712b02f3d4eccca" dependencies: - babel-runtime "^6.26.0" - fbjs "^0.8.16" + "@babel/runtime" "^7.0.0-beta.42" prop-types "^15.6.0" - warning "^3.0.0" + warning "^4.0.1" react-jss@^8.1.0: version "8.4.0" @@ -5936,25 +5253,16 @@ react-leaflet@^1.8.0: lodash-es "^4.0.0" warning "^3.0.0" -react-lifecycles-compat@^1.0.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-1.1.4.tgz#fc005c72849b7ed364de20a0f64ff58ebdc2009a" +react-lifecycles-compat@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" -react-popper@^0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.8.3.tgz#0f73333137c9fb0af6ec4074d2d0585a0a0461e1" +react-popper@^0.10.0: + version "0.10.4" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.10.4.tgz#af2a415ea22291edd504678d7afda8a6ee3295aa" dependencies: - popper.js "^1.12.9" - prop-types "^15.6.0" - -react-scrollbar-size@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/react-scrollbar-size/-/react-scrollbar-size-2.1.0.tgz#105e797135cab92b1f9e16f00071db7f29f80754" - dependencies: - babel-runtime "^6.26.0" - prop-types "^15.6.0" - react-event-listener "^0.5.1" - stifle "^1.0.2" + popper.js "^1.14.1" + prop-types "^15.6.1" react-tap-event-plugin@^3.0.0: version "3.0.2" @@ -5962,16 +5270,6 @@ react-tap-event-plugin@^3.0.0: dependencies: fbjs "^0.8.6" -react-transition-group@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6" - dependencies: - chain-function "^1.0.0" - dom-helpers "^3.2.0" - loose-envify "^1.3.1" - prop-types "^15.5.6" - warning "^3.0.0" - react-transition-group@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.3.0.tgz#8dd1af58f6af284b19fd057f512e74f20438ad31" @@ -5991,13 +5289,6 @@ react@^16.0.0: object-assign "^4.1.1" prop-types "^15.6.0" -read-chunk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" - dependencies: - pify "^3.0.0" - safe-buffer "^5.1.1" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -6005,13 +5296,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -6020,14 +5304,6 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - "readable-stream@1 || 2", "readable-stream@> 1.0.0 < 3.0.0", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -6070,38 +5346,15 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -recast@^0.12.5: - version "0.12.9" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" - dependencies: - ast-types "0.10.1" - core-js "^2.4.1" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -recast@^0.14.1: - version "0.14.7" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" - dependencies: - ast-types "0.11.3" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -recompose@^0.26.0: - version "0.26.0" - resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.26.0.tgz#9babff039cb72ba5bd17366d55d7232fbdfb2d30" +"recompose@^0.26.0 || ^0.27.0": + version "0.27.1" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.27.1.tgz#1a49e931f183634516633bbb4f4edbfd3f38a7ba" dependencies: + babel-runtime "^6.26.0" change-emitter "^0.1.2" fbjs "^0.8.1" hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" symbol-observable "^1.0.4" redent@^1.0.0: @@ -6142,7 +5395,7 @@ regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" -regenerator-runtime@^0.11.0: +regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -6233,14 +5486,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -6293,13 +5538,6 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" @@ -6312,25 +5550,6 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@^1.1.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.0.tgz#2bdf5374811207285df0df652b78f118ab8f3c5e" - dependencies: - path-parse "^1.0.5" - -responselike@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6348,10 +5567,6 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2. dependencies: glob "^7.0.5" -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" @@ -6359,7 +5574,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" -run-async@^2.0.0, run-async@^2.2.0: +run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" dependencies: @@ -6381,11 +5596,11 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -rxjs@^5.4.2, rxjs@^5.5.2: - version "5.5.8" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.8.tgz#b2b0809a57614ad6254c03d7446dea0d83ca3791" +rxjs@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.1.tgz#246cebec189a6cbc143a3ef9f62d6f4c91813ca1" dependencies: - symbol-observable "1.0.1" + tslib "^1.9.0" safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" @@ -6397,7 +5612,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -6412,10 +5627,6 @@ schema-utils@^0.4.2, schema-utils@^0.4.5: ajv "^6.1.0" ajv-keywords "^3.1.0" -scoped-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" - scroll@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/scroll/-/scroll-2.0.3.tgz#0951b785544205fd17753bc3d294738ba16fc2ab" @@ -6534,40 +5745,20 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shelljs@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -simple-assign@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/simple-assign/-/simple-assign-0.1.0.tgz#17fd3066a5f3d7738f50321bb0f14ca281cc4baa" - slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" dependencies: is-fullwidth-code-point "^2.0.0" -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -6625,12 +5816,6 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - dependencies: - is-plain-obj "^1.0.0" - source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" @@ -6759,10 +5944,6 @@ statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" -stifle@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stifle/-/stifle-1.0.4.tgz#8b3bcdf52419b0a9c79e35adadce50123c1d8e99" - stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -6791,20 +5972,10 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" -stream-to-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" - dependencies: - any-observable "^0.2.0" - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -6846,27 +6017,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" - dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -6885,9 +6041,9 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -style-loader@^0.20.1: - version "0.20.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.20.3.tgz#ebef06b89dec491bcb1fdb3452e913a6fd1c10c4" +style-loader@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" @@ -6908,6 +6064,12 @@ supports-color@^5.1.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + svgo@^0.7.0: version "0.7.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" @@ -6920,18 +6082,10 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - symbol-observable@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -symbol-observable@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" - symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -6983,21 +6137,10 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -temp@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -text-table@^0.2.0, text-table@~0.2.0: +text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -textextensions@2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" - theming@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/theming/-/theming-1.3.0.tgz#286d5bae80be890d0adc645e5ca0498723725bdc" @@ -7029,7 +6172,7 @@ thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" -timed-out@^4.0.0, timed-out@^4.0.1: +timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -7108,6 +6251,10 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +tslib@^1.9.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -7182,10 +6329,6 @@ unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -7243,10 +6386,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -untildify@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" - unzipper@^0.8.11: version "0.8.12" resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.8.12.tgz#178de4e263d96a2550fb6f4804d26c06edb9c8bd" @@ -7289,12 +6428,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - dependencies: - prepend-http "^2.0.0" - url-parse@1.0.x: version "1.0.5" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" @@ -7363,9 +6496,9 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" -v8-compile-cache@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" +v8-compile-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" v8flags@^2.1.1: version "2.1.1" @@ -7396,36 +6529,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" - dependencies: - graceful-fs "^4.1.2" - pify "^2.3.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - strip-bom-stream "^2.0.0" - vinyl "^1.1.0" - -vinyl@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" @@ -7438,6 +6541,12 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" +warning@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.1.tgz#66ce376b7fbfe8a887c22bdf0e7349d73d397745" + dependencies: + loose-envify "^1.0.0" + watchpack@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" @@ -7452,42 +6561,21 @@ wbuf@^1.1.0, wbuf@^1.7.2: dependencies: minimalistic-assert "^1.0.0" -webpack-addons@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" +webpack-cli@^3.0.0: + version "3.0.8" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.0.8.tgz#90eddcf04a4bfc31aa8c0edc4c76785bc4f1ccd9" dependencies: - jscodeshift "^0.4.0" - -webpack-cli@^2.0.13: - version "2.0.14" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.14.tgz#71d03d8c10547c1dfd674f71ff3b0457c33a74cd" - dependencies: - chalk "^2.3.2" + chalk "^2.4.1" cross-spawn "^6.0.5" - diff "^3.5.0" enhanced-resolve "^4.0.0" - envinfo "^4.4.2" - glob-all "^3.1.0" - global-modules "^1.0.0" - got "^8.2.0" + global-modules-path "^2.1.0" import-local "^1.0.0" - inquirer "^5.1.0" - interpret "^1.0.4" - jscodeshift "^0.5.0" - listr "^0.13.0" + inquirer "^6.0.0" + interpret "^1.1.0" loader-utils "^1.1.0" - lodash "^4.17.5" - log-symbols "^2.2.0" - mkdirp "^0.5.1" - p-each-series "^1.0.0" - p-lazy "^1.0.0" - prettier "^1.5.3" - supports-color "^5.3.0" - v8-compile-cache "^1.1.2" - webpack-addons "^1.1.5" + supports-color "^5.4.0" + v8-compile-cache "^2.0.0" yargs "^11.1.0" - yeoman-environment "^2.0.0" - yeoman-generator "^2.0.3" webpack-dev-middleware@3.1.2: version "3.1.2" @@ -7622,7 +6710,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.14, which@^1.2.9, which@^1.3.0: +which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -7659,14 +6747,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -7762,57 +6842,3 @@ yargs@^4.2.0: window-size "^0.2.0" y18n "^3.2.1" yargs-parser "^2.4.1" - -yargs@~1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" - dependencies: - minimist "^0.1.0" - -yeoman-environment@^2.0.0, yeoman-environment@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.6.tgz#ae1b21d826b363f3d637f88a7fc9ea7414cb5377" - dependencies: - chalk "^2.1.0" - debug "^3.1.0" - diff "^3.3.1" - escape-string-regexp "^1.0.2" - globby "^6.1.0" - grouped-queue "^0.3.3" - inquirer "^3.3.0" - is-scoped "^1.0.0" - lodash "^4.17.4" - log-symbols "^2.1.0" - mem-fs "^1.1.0" - text-table "^0.2.0" - untildify "^3.0.2" - -yeoman-generator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.3.tgz#19426ed22687ffe05d31526c3f1c2cf67ba768f3" - dependencies: - async "^2.6.0" - chalk "^2.3.0" - cli-table "^0.3.1" - cross-spawn "^5.1.0" - dargs "^5.1.0" - dateformat "^3.0.2" - debug "^3.1.0" - detect-conflict "^1.0.0" - error "^7.0.2" - find-up "^2.1.0" - github-username "^4.0.0" - istextorbinary "^2.1.0" - lodash "^4.17.4" - make-dir "^1.1.0" - mem-fs-editor "^3.0.2" - minimist "^1.2.0" - pretty-bytes "^4.0.2" - read-chunk "^2.1.0" - read-pkg-up "^3.0.0" - rimraf "^2.6.2" - run-async "^2.0.0" - shelljs "^0.8.0" - text-table "^0.2.0" - through2 "^2.0.0" - yeoman-environment "^2.0.5" From b6c0181b3e871c3e34f4b366fcce1c3391731ad8 Mon Sep 17 00:00:00 2001 From: uwap Date: Tue, 19 Jun 2018 10:47:14 +0200 Subject: [PATCH 12/32] fix broken imports --- config/rzl.js | 6 +++--- package.json | 2 +- src/components/UiItemList/UiItem.js | 15 +++++++-------- src/components/UiItemList/index.js | 6 ++---- src/index.jsx | 2 +- yarn.lock | 8 ++++---- 6 files changed, 18 insertions(+), 21 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index b9a8e7b..d759582 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -344,7 +344,7 @@ const config : Config = { position: [350, 650], iconColor: ({onkyo_connection, onkyo_power}) => onkyo_connection != "connected" ? hex("#888888") : (onkyo_power == "on" ? hex("#00FF00") : hex("#000000")), - icon: "volume-high", + icon: "audio-video", ui: [ { type: "toggle", @@ -648,8 +648,8 @@ const config : Config = { }, kitchen_sink_light: { name: "Licht Spüle", - position: [300, 348], - icon: "ceiling-light", + position: [300, 345], + icon: "wall-sconce-flat", ui: [ { type: "toggle", diff --git a/package.json b/package.json index ebeb800..46733ca 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,10 @@ "dependencies": { "@material-ui/core": "^1.2.1", "@material-ui/lab": "^1.0.0-alpha.5", + "@mdi/font": "^2.0.46", "babel-preset-env": "^1.6.0", "leaflet": "^1.3.1", "lodash-es": "^4.17.4", - "mdi": "^2.0.46", "mqtt": "^2.14.0", "react": "^16.0.0", "react-dom": "^16.0.0", diff --git a/src/components/UiItemList/UiItem.js b/src/components/UiItemList/UiItem.js index 8a39b40..3821c18 100644 --- a/src/components/UiItemList/UiItem.js +++ b/src/components/UiItemList/UiItem.js @@ -2,16 +2,15 @@ import React from "react"; import keys from "lodash/keys"; import map from "lodash/map"; -import { - ListItemSecondaryAction, - ListItemText, - ListSubheader -} from "@material-ui/core/List"; +import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; +import ListItemText from "@material-ui/core/ListItemText"; +import ListSubheader from "@material-ui/core/ListSubheader"; import Switch from "@material-ui/core/Switch"; -import Input, { InputLabel } from "@material-ui/core/Input"; +import Input from "@material-ui/core/Input"; +import InputLabel from "@material-ui/core/InputLabel"; import FormControl from "@material-ui/core/FormControl"; import Select from "@material-ui/core/Select"; -import { MenuItem } from "@material-ui/core/Menu"; +import MenuItem from "@material-ui/core/MenuItem"; import Button from "@material-ui/core/Button"; import LinearProgress from "@material-ui/core/LinearProgress"; import SliderComponent from "@material-ui/lab/Slider"; @@ -194,7 +193,7 @@ export class Slider extends UiControl { render() { return [ - , + , Date: Tue, 19 Jun 2018 12:35:10 +0200 Subject: [PATCH 13/32] refactor webpack config --- README.md | 4 +-- config/rzl.js | 3 +- css/styles.css | 1 + package.json | 11 +++--- travis.sh | 2 +- webpack.common.js => webpack.config.js | 22 +++++++++--- webpack.dev.js | 35 ------------------ webpack.prod.js | 49 -------------------------- yarn.lock | 35 +++--------------- 9 files changed, 31 insertions(+), 131 deletions(-) rename webpack.common.js => webpack.config.js (65%) delete mode 100644 webpack.dev.js delete mode 100644 webpack.prod.js diff --git a/README.md b/README.md index 9756d72..eca38da 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ 1. run `yarn` to install all dependencies. 2. run `yarn watch CONFIG` to run a local build server that automatically builds your the mqtt control map for the given CONFIG everytime something changes. -3. run `yarn build CONFIG` to create just a single build of the mqtt control map +3. run `yarn dev CONFIG` to create just a single build of the mqtt control map for the given config. -4. run `yarn production-build CONFIG` to generate all files for production use. +4. run `yarn build CONFIG` to generate all files for production use. ## Config diff --git a/config/rzl.js b/config/rzl.js index d759582..304c6e7 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -697,7 +697,8 @@ const config : Config = { { image: require("../img/layers/rzl/labels.svg"), name: "Labels", - defaultVisibility: "visible", + defaultVisibility: "hidden", + opacity: 0.8, bounds: { topLeft: [0, 0], bottomRight: [1000, 700] diff --git a/css/styles.css b/css/styles.css index 7dcb9af..a695c22 100644 --- a/css/styles.css +++ b/css/styles.css @@ -5,6 +5,7 @@ .leaflet-container { height: calc(100vh - 64px); max-height: 100%; + background: rgba(239,239,203,.59); } body { margin: 0; diff --git a/package.json b/package.json index bad2e6a..b269e53 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "author": "uwap ", "description": "control devices via mqtt on a beautiful map of your space", "scripts": { - "build": "webpack --bail --config webpack.dev.js --env", - "production-build": "webpack --bail --config webpack.prod.js --env", - "watch": "webpack-dev-server --open --config webpack.dev.js --env", + "build": "webpack --bail --config webpack.config.js -p --env", + "dev": "webpack --bail --config webpack.config.js --mode development --env", + "watch": "webpack-dev-server --open --config webpack.dev.js --mode development --env", "travis": "./travis.sh", "lint": "eslint -- --ext js --ext jsx src/", "precommit": "yarn lint" @@ -15,7 +15,6 @@ "@material-ui/core": "^1.2.1", "@material-ui/lab": "^1.0.0-alpha.5", "@mdi/font": "^2.0.46", - "babel-preset-env": "^1.6.0", "leaflet": "^1.3.1", "lodash-es": "^4.17.4", "mqtt": "^2.14.0", @@ -32,24 +31,22 @@ "babel-loader": "^7.1.1", "babel-plugin-transform-class-properties": "^6.24.1", "babel-preset-react": "^6.24.1", + "babel-preset-env": "^1.6.0", "clean-webpack-plugin": "^0.1.18", "css-loader": "^0.28.9", "eslint": "^4.16.0", "eslint-plugin-flowtype": "^2.42.0", "eslint-plugin-react": "^7.6.1", - "extract-text-webpack-plugin": "next", "file-loader": "^1.1.5", "flow": "^0.2.3", "flow-bin": "^0.70.0", "flow-typed": "^2.3.0", "html-webpack-plugin": "^3.1.0", "husky": "^0.14.3", - "lodash-webpack-plugin": "^0.11.4", "style-loader": "^0.21.0", "webpack": "^4.3.0", "webpack-cli": "^3.0.0", "webpack-dev-server": "^3.1.1", - "webpack-merge": "^4.1.1", "webpack-shell-plugin": "^0.5.0" }, "license": "MIT" diff --git a/travis.sh b/travis.sh index 1a94da2..d0f1c83 100755 --- a/travis.sh +++ b/travis.sh @@ -5,7 +5,7 @@ for conf in $(ls config/); do if [ "$conf" = "utils.js" ]; then continue fi + yarn dev $conf yarn build $conf - yarn production-build $conf mv dist artifacts/$conf done diff --git a/webpack.common.js b/webpack.config.js similarity index 65% rename from webpack.common.js rename to webpack.config.js index a016dc2..71d7f96 100644 --- a/webpack.common.js +++ b/webpack.config.js @@ -2,14 +2,24 @@ const path = require('path'); const webpack = require('webpack'); const WebpackShellPlugin = require('webpack-shell-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); -const ExtractTextPlugin = require("extract-text-webpack-plugin"); const CleanWebpackPlugin = require('clean-webpack-plugin'); const preBuildScripts = process.env.NO_FLOW == undefined ? process.env.FLOW_PATH != undefined ? [process.env.FLOW_PATH] : ['flow'] : []; -module.exports = { +const configPath = env => { + if (env === true) { + throw "No config file was provided."; + } + return path.resolve(__dirname, `config/${env}`); +}; + +module.exports = env => ({ + entry: { + main: [configPath(env), + path.resolve(__dirname, 'src/index.jsx')] + }, resolve: { modules: [path.resolve(__dirname, "src"), "node_modules"], extensions: ['.js', '.jsx'], @@ -23,7 +33,10 @@ module.exports = { }, module: { rules: [ - { test: /\.(woff2?|eot|ttf|svg)$/, loader: "file-loader" } + // TODO: CSS follow imports and minify + sourcemap on production + { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] }, + { test: /\.(woff2?|eot|ttf|svg)$/, loader: "file-loader" }, + { test: /\.js(x)?$/, exclude: /node_modules/, loader: "babel-loader?cacheDirectory=true" } ] }, plugins: [ @@ -33,6 +46,5 @@ module.exports = { title: 'Space Map', template: 'index.ejs' }), - new ExtractTextPlugin("styles.css"), ] -}; +}); diff --git a/webpack.dev.js b/webpack.dev.js deleted file mode 100644 index a8135f2..0000000 --- a/webpack.dev.js +++ /dev/null @@ -1,35 +0,0 @@ -const merge = require('webpack-merge'); -const path = require('path'); -const common = require('./webpack.common.js'); -const ExtractTextPlugin = require("extract-text-webpack-plugin"); - -const extractCSS = ExtractTextPlugin.extract({ - fallback: "style-loader", - use: { - loader: "css-loader" - } - }); - -const configPath = env => { - if (env === true) { - throw "No config file was provided."; - } - return path.resolve(__dirname, `config/${env}`); -}; - -module.exports = env => merge(common, { - entry: { - main: [configPath(env), - path.resolve(__dirname, 'src/index.jsx')] - }, - module: { - rules: [ - { test: /\.css$/, use: extractCSS }, - { test: /\.js(x)?$/, exclude: /node_modules/, loader: "babel-loader?cacheDirectory=true" } - ] - }, - devtool: "eval-cheap-module-source-map", - devServer: { - contentBase: './dist' - }, -}); diff --git a/webpack.prod.js b/webpack.prod.js deleted file mode 100644 index 7f4896a..0000000 --- a/webpack.prod.js +++ /dev/null @@ -1,49 +0,0 @@ -const webpack = require('webpack'); -const path = require('path'); -const merge = require('webpack-merge'); -const common = require('./webpack.common.js'); -const ExtractTextPlugin = require("extract-text-webpack-plugin"); -const LodashModuleReplacementPlugin = require('lodash-webpack-plugin'); - -const extractCSS = ExtractTextPlugin.extract({ - fallback: "style-loader", - use: { - loader: "css-loader", - options: { - sourceMap: true, - minimize: true - } - } - }); - -const configPath = env => { - if (env === true) { - throw "No config file was provided."; - } - return path.resolve(__dirname, `config/${env}`); -}; - -module.exports = env => merge(common, { - entry: { - main: [configPath(env), - path.resolve(__dirname, 'src/index.jsx')], - }, - module: { - rules: [ - { test: /\.css$/, use: extractCSS }, - { test: /\.js(x)?$/, exclude: /node_modules/, loader: "babel-loader" } - ] - }, - devtool: "source-map", - plugins: [ - new webpack.DefinePlugin({ - 'process.env': { - 'NODE_ENV': JSON.stringify('production') - } - }), - // new LodashModuleReplacementPlugin(), - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.HashedModuleIdsPlugin(), - new webpack.optimize.AggressiveMergingPlugin() - ] -}); diff --git a/yarn.lock b/yarn.lock index 4331192..592ad3d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -374,12 +374,6 @@ async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" - dependencies: - lodash "^4.14.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2504,15 +2498,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-text-webpack-plugin@next: - version "4.0.0-beta.0" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42" - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.4.5" - webpack-sources "^1.1.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -2650,9 +2635,9 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" -flow-bin@^0.69.0: - version "0.69.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.69.0.tgz#053159a684a6051fcbf0b71a2eb19a9679082da6" +flow-bin@^0.70.0: + version "0.70.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.70.0.tgz#080ae83a997f2b4ddb3dc2649bf13336825292b5" flow-typed@^2.3.0: version "2.4.0" @@ -3935,12 +3920,6 @@ lodash-es@^4.0.0, lodash-es@^4.17.4, lodash-es@^4.2.1: version "4.17.8" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.8.tgz#6fa8c8c5d337481df0bdf1c0d899d42473121e45" -lodash-webpack-plugin@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/lodash-webpack-plugin/-/lodash-webpack-plugin-0.11.4.tgz#6c3ecba3d4b8d24b53940b63542715c5ed3c4ac5" - dependencies: - lodash "^4.17.4" - lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -3957,7 +3936,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -6631,12 +6610,6 @@ webpack-log@^1.0.1, webpack-log@^1.1.2: loglevelnext "^1.0.1" uuid "^3.1.0" -webpack-merge@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.2.tgz#5d372dddd3e1e5f8874f5bf5a8e929db09feb216" - dependencies: - lodash "^4.17.5" - webpack-shell-plugin@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/webpack-shell-plugin/-/webpack-shell-plugin-0.5.0.tgz#29b8a1d80ddeae0ddb10e729667f728653c2c742" From d749e8107ac908dba5b5817df0c92c7c557f42f3 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 21 Jun 2018 17:02:28 +0000 Subject: [PATCH 14/32] chore(package): update flow-bin to version 0.75.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b269e53..bbfa7f0 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "eslint-plugin-react": "^7.6.1", "file-loader": "^1.1.5", "flow": "^0.2.3", - "flow-bin": "^0.70.0", + "flow-bin": "^0.75.0", "flow-typed": "^2.3.0", "html-webpack-plugin": "^3.1.0", "husky": "^0.14.3", From 75816dc15c35aa46cf941a45e9c88c1a8254afc3 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 24 Jun 2018 13:20:47 +0200 Subject: [PATCH 15/32] Show number of WLAN-devices --- config/rzl.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/config/rzl.js b/config/rzl.js index 304c6e7..5ffa826 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -123,6 +123,12 @@ const config : Config = { values: {}, type: msg => JSON.parse(msg.toString()).join(", ") }, + devices_status: { + state: "/service/status/devices", + command: "", + defaultValue: "", + values: {} + }, infoscreen: { state: "/service/openhab/out/pca301_infoscreen/state", command: "/service/openhab/in/pca301_infoscreen/command", @@ -458,7 +464,14 @@ const config : Config = { text: "Anwesend", topic: "presence_status", icon: "account" + }, + { + type: "text", + text: "Devices", + topic: "devices_status", + icon: "wifi" } + ] }, infoscreen: { From 2df52f75be860b299a12331cf5ea872c42a80b26 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 24 Jun 2018 14:24:42 +0200 Subject: [PATCH 16/32] Rechner und Drucker aufgeteilt auf 2 Funkdosen. Fixes #14 --- config/rzl.js | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index b9a8e7b..7736479 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -48,6 +48,12 @@ const config : Config = { defaultValue: "OFF", values: { on: "ON", off: "OFF" } }, + olymp_printer: { + state: "stat/sonoff2/POWER", + command: "cmnd/sonoff2/power", + defaultValue: "OFF", + values: { on: "ON", off: "OFF" } + }, flyfry: { state: "/service/openhab/out/wifi_flyfry/state", command: "/service/openhab/in/wifi_flyfry/command", @@ -274,19 +280,38 @@ const config : Config = { ] }, olymp_pc: { - name: "Rechner und Drucker", + name: "Rechner", position: [297, 90], icon: "desktop-classic", iconColor: ({olymp_pc}) => olymp_pc == "on" ? hex("#00FF00") : hex("#000000"), ui: [ { type: "toggle", - text: "Rechner und Drucker", + text: "Rechner", topic: "olymp_pc", icon: "power" } ] }, + olymp_printer: { + name: "Drucker", + position: [335, 90], + icon: "printer", + iconColor: ({olymp_printer}) => olymp_printer == "on" ? hex("#00FF00") : hex("#000000"), + ui: [ + { + type: "toggle", + text: "Drucker", + topic: "olymp_printer", + icon: "power" + }, + { + type: "link", + link: "http://annette.rzl/", + text: "Open Annette" + } + ] + }, flyfry: { name: "Fliegenbratgerät", position: [450, 590], From f507e388d587d605c8a3d80264ec6f8903d1281c Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 24 Jun 2018 15:46:04 +0200 Subject: [PATCH 17/32] devices_status: +type: types.str --- config/rzl.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/rzl.js b/config/rzl.js index 5ffa826..1f3e24b 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -127,7 +127,8 @@ const config : Config = { state: "/service/status/devices", command: "", defaultValue: "", - values: {} + values: {}, + type: types.str }, infoscreen: { state: "/service/openhab/out/pca301_infoscreen/state", From d93362edcb970b849707c2077f413d2dba87382d Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 24 Jun 2018 16:27:59 +0200 Subject: [PATCH 18/32] Changes from pull request discussion - simplyfy empty tradfri battery detection - change command string format --- config/rzl.js | 5 +++-- config/utils.js | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 129d4ae..0f2dc2f 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -736,8 +736,9 @@ const config : Config = { name: "Fernbedinungen", position: [400, 348], icon: "remote", - iconColor: (state) => - ((state[tradfri_remote.low("65536")] == "true") || (state[tradfri_remote.low("65542")] == "true") || (state[tradfri_remote.low("65546")] == "true") || (state[tradfri_remote.low("65547")] == "true")) ? hex("#ff0000") : hex("#000000"), + iconColor: (state) => //if any remote is low make icon red + ["65536", "65542", "65546", "65547" + ].some(x => state[tradfri_remote.low(x)] == "true") ? hex("#ff0000") : hex("#000000"), ui: [ { type: "progress", diff --git a/config/utils.js b/config/utils.js index 4f9ad4a..3542ca0 100644 --- a/config/utils.js +++ b/config/utils.js @@ -65,13 +65,13 @@ export const tradfri_remote = { topics: (remote_id: string) => ({ [ `tradfri_remote_${remote_id}_level` ]: { state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_level/state`, - command: ``, + command: "", defaultValue: "0", values: {} }, [ `tradfri_remote_${remote_id}_low` ]: { state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_low/state`, - command: ``, + command: "", defaultValue: "OFF", values: { true: "ON", false: "OFF" } } From ed0f22645e7f939c29318fa05a52e147db470224 Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 16:34:59 +0200 Subject: [PATCH 19/32] Completely rework how icons work in mqtt control map --- config/entropia.js | 7 +- config/rzl.js | 100 ++++++++++++++-------------- config/utils.js | 11 +-- package.json | 4 +- src/components/App.js | 4 +- src/components/ControlMap.js | 6 +- src/components/SideBar.js | 7 +- src/components/UiItemList/UiItem.js | 7 +- src/components/UiItemList/index.js | 6 +- src/config/flowtypes.js | 19 +++--- src/config/icon.js | 59 ++++++++++++++++ src/utils/parseIconName.js | 25 ------- webpack.config.js | 1 - yarn.lock | 71 +++++++++++++++++++- 14 files changed, 216 insertions(+), 111 deletions(-) create mode 100644 src/config/icon.js delete mode 100644 src/utils/parseIconName.js diff --git a/config/entropia.js b/config/entropia.js index 36e25d9..fc2f6ca 100644 --- a/config/entropia.js +++ b/config/entropia.js @@ -1,6 +1,7 @@ // @flow import type { Config } from "config/flowtypes"; import { hex, rgb, rgba, rainbow } from "config/colors"; +import { mdi } from "config/icon"; import { esper_topics, esper_statistics } from "./utils"; const config : Config = { @@ -29,20 +30,20 @@ const config : Config = { hauptraum_table_light: { name: "Hauptraum Tisch", position: [450, 450], - icon: "white-balance-iridescent", + icon: mdi("white-balance-iridescent"), iconColor: () => hex("#000000"), ui: [ { type: "toggle", text: "Licht", topic: "hauptraum_table_light", - icon: "power" + icon: mdi("power") }, { type: "toggle", text: "Licht", topic: "hauptraum_table_light_on_hack", - icon: "power" + icon: mdi("power") } ] } diff --git a/config/rzl.js b/config/rzl.js index 304c6e7..1180912 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -2,6 +2,7 @@ import type { Config } from "config/flowtypes"; import * as types from "config/types"; import { hex, rgb, rgba, rainbow } from "config/colors"; +import { mdi, raw_mdi } from "config/icon"; import { esper_topics, esper_statistics, floalt } from "./utils"; const config : Config = { @@ -194,63 +195,64 @@ const config : Config = { led_stahltrager: { name: "LED Stahlträger", position: [380, 590], - icon: "white-balance-iridescent", + icon: mdi("white-balance-iridescent"), iconColor: ({led_stahltraeger}) => led_stahltraeger == "on" ? rainbow : hex("#000000"), ui: [ { type: "toggle", text: "Stahlträger LED", topic: "led_stahltraeger", - icon: "power" + icon: mdi("power") }, ] }, snackbar: { name: "Snackbar", position: [510, 500], - icon: "fridge", + icon: mdi("fridge"), iconColor: ({snackbar}) => snackbar == "on" ? hex("#E20074") : hex("#000000"), ui: [ { type: "toggle", text: "Snackbar", topic: "snackbar", - icon: "power" + icon: mdi("power") } ] }, twinkle: { name: "Twinkle", position: [530, 560], - icon: ({twinkle}) => twinkle == "on" ? "led-on flip-v" : "led-off flip-v", + icon: ({twinkle}) => + twinkle == "on" ? raw_mdi("led-on flip-v") : raw_mdi("led-off flip-v"), iconColor: ({twinkle}) => twinkle == "on" ? rainbow : hex("#000000"), ui: [ { type: "toggle", text: "Twinkle", topic: "twinkle", - icon: "power" + icon: mdi("power") } ] }, fan: { name: "Ventilator", position: [520, 450], - icon: "fan", + icon: mdi("fan"), iconColor: ({fan}) => fan == "on" ? hex("#00FF00") : hex("#000000"), ui: [ { type: "toggle", text: "Ventilator", topic: "fan", - icon: "power" + icon: mdi("power") } ] }, cashdesk: { name: "Cashdesk", position: [500, 470], - icon: "coin", + icon: mdi("coin"), ui: [ { type: "link", @@ -262,49 +264,49 @@ const config : Config = { videogames: { name: "Videospiele", position: [100, 100], - icon: "gamepad-variant", + icon: mdi("gamepad-variant"), iconColor: ({videogames}) => videogames == "on" ? hex("#00FF00") : hex("#000000"), ui: [ { type: "toggle", text: "Videospiele", topic: "videogames", - icon: "power" + icon: mdi("power") } ] }, olymp_pc: { name: "Rechner und Drucker", position: [297, 90], - icon: "desktop-classic", + icon: mdi("desktop-classic"), iconColor: ({olymp_pc}) => olymp_pc == "on" ? hex("#00FF00") : hex("#000000"), ui: [ { type: "toggle", text: "Rechner und Drucker", topic: "olymp_pc", - icon: "power" + icon: mdi("power") } ] }, flyfry: { name: "Fliegenbratgerät", position: [450, 590], - icon: "fire", + icon: mdi("fire"), iconColor: ({flyfry}) => flyfry == "on" ? hex("#6666FF") : hex("#000000"), ui: esper_statistics("flyfry", [ { type: "toggle", text: "Fliegenbratgerät", topic: "flyfry", - icon: "power" + icon: mdi("power") } ]) }, artnet: { name: "Artnet", position: [535,480], - icon: "spotlight", + icon: mdi("spotlight"), iconColor: ({artnet}) => ({ off: hex("#000000"), @@ -321,7 +323,7 @@ const config : Config = { topic: "artnet", on: "cycle", toggled: val => val != "off", - icon: "power" + icon: mdi("power") }, { type: "dropDown", @@ -335,7 +337,7 @@ const config : Config = { cycle: "Farbwechsel" }, enableCondition: val => val != "off", - icon: "palette" + icon: mdi("palette") } ] }, @@ -344,12 +346,12 @@ const config : Config = { position: [350, 650], iconColor: ({onkyo_connection, onkyo_power}) => onkyo_connection != "connected" ? hex("#888888") : (onkyo_power == "on" ? hex("#00FF00") : hex("#000000")), - icon: "audio-video", + icon: mdi("audio-video"), ui: [ { type: "toggle", text: "Power", - icon: "power", + icon: mdi("power"), topic: "onkyo_power", enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" }, @@ -363,14 +365,14 @@ const config : Config = { topic: "onkyo_volume", min: 0, max: 50, - icon: "volume-high", + icon: mdi("volume-high"), enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" }, { type: "toggle", text: "Mute", topic: "onkyo_mute", - icon: "volume-off", + icon: mdi("volume-off"), enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" }, { @@ -388,7 +390,7 @@ const config : Config = { pult: "Pult", front: "Front HDMI" }, - icon: "usb", + icon: mdi("usb"), enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" }, { @@ -407,7 +409,7 @@ const config : Config = { somafm_beatblender: "Beat Blender (Soma FM)", ponyville: "Ponyville FM" }, - icon: "radio", + icon: mdi("radio"), enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" && state.onkyo_inputs.internal == "netzwerk" }, { @@ -424,28 +426,28 @@ const config : Config = { rundumleuchte: { name: "Rundumleuchte", position: [310,275], - icon: "alarm-light", + icon: mdi("alarm-light"), iconColor: ({rundumleuchte}) => rundumleuchte == "on" ? hex("#F0DF10") : hex("#000000"), ui: [ { type: "toggle", text: "Rundumleuchte", topic: "rundumleuchte", - icon: "power" + icon: mdi("power") } ] }, alarm: { name: "Alarm", position: [340, 250], - icon: "alarm-bell", + icon: mdi("alarm-bell"), iconColor: () => hex("#000000"), ui: esper_statistics("alarm") }, door: { name: "Tür", position: [455,350], - icon: "swap-vertical", + icon: mdi("swap-vertical"), iconColor: ({door_status}) => door_status == "on" ? hex("#00FF00") : hex("#FF0000"), ui: [ { @@ -457,21 +459,21 @@ const config : Config = { type: "text", text: "Anwesend", topic: "presence_status", - icon: "account" + icon: mdi("account") } ] }, infoscreen: { name: "Infoscreen", position: [255, 495], - icon: "television-guide flip-v", + icon: mdi("television-guide flip-v"), iconColor: ({infoscreen}) => infoscreen == "on" ? hex("#4444FF") : hex("#000000"), ui: [ { type: "toggle", text: "Infoscreen", topic: "infoscreen", - icon: "power" + icon: mdi("power") }, { type: "link", @@ -483,7 +485,7 @@ const config : Config = { printer_3d: { name: "Ultimaker 3", position: [754, 560], - icon: "printer-3d", + icon: mdi("printer-3d"), iconColor: ({printer_3d_status}) => ({ awaiting_interaction: hex("#b3b300"), @@ -504,7 +506,7 @@ const config : Config = { }, { type: "progress", - icon: "rotate-right", + icon: mdi("rotate-right"), min: 0, max: 1, text: "Printing Progress", @@ -515,7 +517,7 @@ const config : Config = { partkeepr: { name: "Partkeepr", position: [48, 450], - icon: "chip", + icon: mdi("chip"), ui: [ { type: "link", @@ -527,7 +529,7 @@ const config : Config = { kitchen_light: { name: "Deckenlicht Küche", position: [325, 407], - icon: "ceiling-light", + icon: mdi("ceiling-light"), ui: [ { type: "toggle", @@ -536,14 +538,14 @@ const config : Config = { toggled: n => parseInt(n) > 0, topic: "kitchen_light_brightness", text: "Ein/Ausschalten", - icon: "power" + icon: mdi("power") }, { type: "slider", min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: "kitchen_light_brightness", delayedApply: true }, @@ -552,7 +554,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: "kitchen_light_color", delayedApply: true }, @@ -565,7 +567,7 @@ const config : Config = { min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: floalt.brightness("65537"), delayedApply: true }, @@ -574,7 +576,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: floalt.color("65537"), delayedApply: true }, @@ -587,7 +589,7 @@ const config : Config = { min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: floalt.brightness("65538"), delayedApply: true }, @@ -596,7 +598,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: floalt.color("65538"), delayedApply: true }, @@ -609,7 +611,7 @@ const config : Config = { min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: floalt.brightness("65539"), delayedApply: true }, @@ -618,7 +620,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: floalt.color("65539"), delayedApply: true }, @@ -631,7 +633,7 @@ const config : Config = { min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: floalt.brightness("65540"), delayedApply: true }, @@ -640,7 +642,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: floalt.color("65540"), delayedApply: true } @@ -649,7 +651,7 @@ const config : Config = { kitchen_sink_light: { name: "Licht Spüle", position: [300, 345], - icon: "wall-sconce-flat", + icon: mdi("wall-sconce-flat"), ui: [ { type: "toggle", @@ -658,14 +660,14 @@ const config : Config = { toggled: n => parseInt(n) > 0, topic: "kitchen_sink_light_brightness", text: "Ein/Ausschalten", - icon: "power" + icon: mdi("power") }, { type: "slider", min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: "kitchen_sink_light_brightness", delayedApply: true } diff --git a/config/utils.js b/config/utils.js index 20cc656..1738354 100644 --- a/config/utils.js +++ b/config/utils.js @@ -1,5 +1,6 @@ // @flow import type { ControlUI } from "config/flowtypes"; +import { mdi } from "config/icon"; export const esper_topics = (chip_id: string, name: string) => ({ [ `esper_${name}_version` ]: { @@ -69,31 +70,31 @@ export const esper_statistics = (name: string, { type: "text", text: "Device Variant", - icon: "chart-donut", + icon: mdi("chart-donut"), topic: `esper_${name}_device` }, { type: "text", text: "Version", - icon: "source-branch", + icon: mdi("source-branch"), topic: `esper_${name}_version` }, { type: "text", text: "IP", - icon: "access-point-network", + icon: mdi("access-point-network"), topic: `esper_${name}_ip` }, { type: "text", text: "RSSI", - icon: "wifi", + icon: mdi("wifi"), topic: `esper_${name}_rssi` }, { type: "text", text: "Running since…", - icon: "av-timer", + icon: mdi("av-timer"), topic: `esper_${name}_uptime` } ]) diff --git a/package.json b/package.json index b269e53..ec57d5f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "webpack --bail --config webpack.config.js -p --env", "dev": "webpack --bail --config webpack.config.js --mode development --env", - "watch": "webpack-dev-server --open --config webpack.dev.js --mode development --env", + "watch": "webpack-dev-server --open --config webpack.config.js --mode development --env", "travis": "./travis.sh", "lint": "eslint -- --ext js --ext jsx src/", "precommit": "yarn lint" @@ -30,8 +30,8 @@ "babel-eslint": "^8.0.1", "babel-loader": "^7.1.1", "babel-plugin-transform-class-properties": "^6.24.1", - "babel-preset-react": "^6.24.1", "babel-preset-env": "^1.6.0", + "babel-preset-react": "^6.24.1", "clean-webpack-plugin": "^0.1.18", "css-loader": "^0.28.9", "eslint": "^4.16.0", diff --git a/src/components/App.js b/src/components/App.js index fc5becd..7d6fb2f 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -19,7 +19,7 @@ import TopBar from "components/TopBar"; import UiItemList from "components/UiItemList"; import keyOf from "utils/keyOf"; -import { controlGetIcon } from "utils/parseIconName"; +import { toRawIcon } from "config/icon"; import connectMqtt from "../connectMqtt"; @@ -127,7 +127,7 @@ class App extends React.PureComponent { control={this.state.selectedControl} onCloseRequest={this.closeDrawer.bind(this)} icon={this.state.selectedControl == null ? null : - controlGetIcon(this.state.selectedControl, + toRawIcon(this.state.selectedControl.icon, this.state.mqttState)} > {this.state.selectedControl == null diff --git a/src/components/ControlMap.js b/src/components/ControlMap.js index 7524673..2606561 100644 --- a/src/components/ControlMap.js +++ b/src/components/ControlMap.js @@ -4,7 +4,7 @@ import { Map, ImageOverlay, Marker, LayersControl } from "react-leaflet"; import { CRS, point, divIcon } from "leaflet"; import map from "lodash/map"; import mapValues from "lodash/mapValues"; -import parseIconName, { controlGetIcon } from "utils/parseIconName"; +import { toRawIcon } from "config/icon"; import type { Controls, Control } from "config/flowtypes"; @@ -50,8 +50,8 @@ export default class ControlMap extends React.PureComponent { } createLeafletIcon(control: Control) { - const icon = controlGetIcon(control, this.props.state); - const iconClass = parseIconName(`${icon} 36px`); + const icon = toRawIcon(control.icon, this.props.state); + const iconClass = `${icon} mdi-36px`; return divIcon({ iconSize: point(36, 36), iconAnchor: point(18, 18), diff --git a/src/components/SideBar.js b/src/components/SideBar.js index a94e62e..5015bdc 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -8,15 +8,16 @@ import IconButton from "@material-ui/core/IconButton"; import AppBar from "@material-ui/core/AppBar"; import Toolbar from "@material-ui/core/Toolbar"; import List from "@material-ui/core/List"; -import { renderIcon } from "utils/parseIconName"; +import { renderRawIcon } from "config/icon"; +import type { RawIcon } from "config/icon"; import type { Control } from "config/flowtypes"; export type SideBarProps = { control: ?Control, open: boolean, onCloseRequest: () => void, - icon?: ?string, + icon?: ?RawIcon, children?: React.Node }; @@ -55,7 +56,7 @@ class SideBar extends React.PureComponent {this.props.icon == null - || renderIcon(this.props.icon, "mdi-36px")} + || renderRawIcon(this.props.icon, "mdi-36px")} {this.props.control == null || this.props.control.name} diff --git a/src/components/UiItemList/UiItem.js b/src/components/UiItemList/UiItem.js index 3821c18..886f47c 100644 --- a/src/components/UiItemList/UiItem.js +++ b/src/components/UiItemList/UiItem.js @@ -185,7 +185,7 @@ export class DropDown extends UiControl { } export class Slider extends UiControl { - runPrimaryAction = (_e: ?any, v: ?number) => { + runPrimaryAction = (e: ?Event, v: ?number) => { if (v != null) { this.changeState(v); } @@ -197,8 +197,9 @@ export class Slider extends UiControl { this.props.item.delayedApply || this.runPrimaryAction()} + step={this.props.item.step || 1} + onChange={(e, v) => + this.props.item.delayedApply || this.runPrimaryAction(e, v)} onDragEnd={this.runPrimaryAction} disabled={!this.isEnabled()} /> ]; diff --git a/src/components/UiItemList/index.js b/src/components/UiItemList/index.js index eef50ec..b23b3cc 100644 --- a/src/components/UiItemList/index.js +++ b/src/components/UiItemList/index.js @@ -2,7 +2,7 @@ import React from "react"; import ListItem from "@material-ui/core/ListItem"; import ListItemIcon from "@material-ui/core/ListItemIcon"; -import { renderIcon } from "utils/parseIconName"; +import { renderIcon } from "config/icon"; import type { ControlUI } from "config/flowtypes"; @@ -33,7 +33,9 @@ export default class UiItemList extends React.PureComponent { return ( {control.icon == null || - {renderIcon(control.icon, "mdi-24px")}} + + {renderIcon(control.icon, this.props.state, "mdi-24px")} + } {this.renderControl(control)} ); diff --git a/src/config/flowtypes.js b/src/config/flowtypes.js index bef0562..6e58f3b 100644 --- a/src/config/flowtypes.js +++ b/src/config/flowtypes.js @@ -1,5 +1,6 @@ // @flow import type { Color } from "config/colors"; +import type { Icon } from "config/icon"; export type TopicType = (msg: Buffer) => any; @@ -33,7 +34,7 @@ export type UIToggle = $ReadOnly<{| type: "toggle", text: string, topic: string, - icon?: string, + icon?: Icon, enableCondition?: TopicDependentOption, on?: Actual, off?: Actual, @@ -44,7 +45,7 @@ export type UIDropDown = $ReadOnly<{| type: "dropDown", text: string, topic: string, - icon?: string, + icon?: Icon, enableCondition?: TopicDependentOption, options: Map, renderValue?: (value: string) => string @@ -54,7 +55,7 @@ export type UISlider = $ReadOnly<{| type: "slider", text: string, topic: string, - icon?: string, + icon?: Icon, enableCondition?: TopicDependentOption, min?: number, max?: number, @@ -74,21 +75,21 @@ export type UILink = $ReadOnly<{| enableCondition?: StateDependentOption, // TODO: check if both the following options are implemented - icon?: string + icon?: Icon |}>; export type UIText = $ReadOnly<{| type: "text", text: string, topic: string, - icon?: string + icon?: Icon |}>; export type UIProgress = $ReadOnly<{| type: "progress", text: string, topic: string, - icon?: string, + icon?: Icon, min?: number, max?: number |}>; @@ -105,11 +106,7 @@ export type ControlUI = export type Control = { name: string, position: [number, number], - icon: string | ( - internals: Map, - actuals: Map, - state: State - ) => string, + icon: Icon, iconColor?: ( internals: Map, actuals: Map, diff --git a/src/config/icon.js b/src/config/icon.js new file mode 100644 index 0000000..524395e --- /dev/null +++ b/src/config/icon.js @@ -0,0 +1,59 @@ +// @flow +import * as React from "react"; +import { getInternals, getActuals } from "utils/state"; + +export opaque type RawIcon: string = string; + +export type Icon = (Map, Map, State) => + RawIcon; + +export const raw_mdi = (name: string): RawIcon => { + return `mdi ${name.split(" ").map((icon) => "mdi-".concat(icon)).join(" ")}`; +}; + +export const mdi = (icon: string) => () => raw_mdi(icon); + +export const mdi_battery = (topic: string) => + (state: Map) => { + const rawval = state[topic]; + const val = parseInt(rawval); + if (isNaN(val)) { + return raw_mdi("battery-unknown"); + } else if (val > 95) { + return raw_mdi("battery"); + } else if (val > 85) { + return raw_mdi("battery-90"); + } else if (val > 75) { + return raw_mdi("battery-80"); + } else if (val > 65) { + return raw_mdi("battery-70"); + } else if (val > 55) { + return raw_mdi("battery-60"); + } else if (val > 45) { + return raw_mdi("battery-50"); + } else if (val > 35) { + return raw_mdi("battery-40"); + } else if (val > 25) { + return raw_mdi("battery-30"); + } else if (val > 15) { + return raw_mdi("battery-20"); + } else { + return raw_mdi("battery-10"); + } + }; + +export const toRawIcon = (icon: Icon, state: State): RawIcon => { + const internals: Map = getInternals(state); + const actuals: Map = getActuals(state); + return icon(internals, actuals, state); +}; + +export const renderRawIcon = + (icon: RawIcon, extraClass?: string): React.Node => { + return ; + }; + +export const renderIcon = + (icon: Icon, state: State, extraClass?: string): React.Node => { + return renderRawIcon(toRawIcon(icon, state), extraClass); + }; diff --git a/src/utils/parseIconName.js b/src/utils/parseIconName.js deleted file mode 100644 index 96d290f..0000000 --- a/src/utils/parseIconName.js +++ /dev/null @@ -1,25 +0,0 @@ -// @flow -import * as React from "react"; -import { getInternals, getActuals } from "utils/state"; - -import type { Control } from "config/flowtypes"; - -export default function parseIconName(name: string): string { - return `mdi ${name.split(" ").map((icon) => "mdi-".concat(icon)).join(" ")}`; -} - -export const renderIcon = (name: string, extraClass?: string): React.Node => { - return ; -}; - -export const controlGetIcon = (control: Control, state: State): string => { - const internals: Map = getInternals(state); - const actuals: Map = getActuals(state); - return typeof control.icon !== "function" ? control.icon - : control.icon(internals, actuals, state); -}; - -export const renderControlIcon = (control: Control, - state: State, extraClass?: string): React.Node => { - return renderIcon(controlGetIcon(control, state), extraClass); -}; diff --git a/webpack.config.js b/webpack.config.js index 71d7f96..0c38752 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,7 +3,6 @@ const webpack = require('webpack'); const WebpackShellPlugin = require('webpack-shell-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin'); - const preBuildScripts = process.env.NO_FLOW == undefined ? process.env.FLOW_PATH != undefined ? [process.env.FLOW_PATH] : ['flow'] : []; diff --git a/yarn.lock b/yarn.lock index 592ad3d..935b0e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -175,6 +175,10 @@ acorn@^5.0.0, acorn@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" +acorn@^5.3.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" + ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -1026,6 +1030,14 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bfj-node4@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830" + dependencies: + bluebird "^3.5.1" + check-types "^7.3.0" + tryer "^1.0.0" + big-integer@^1.6.17: version "1.6.27" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.27.tgz#8e56c6f8b2dd6c4fe8d32102b83d4f25868e4b3a" @@ -1380,7 +1392,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.4.1: +chalk@^2.3.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -1404,6 +1416,10 @@ charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" +check-types@^7.3.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" + chokidar@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1588,7 +1604,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@2.15.x, commander@^2.11.0, commander@~2.15.0: +commander@2.15.x, commander@^2.11.0, commander@^2.13.0, commander@~2.15.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -2141,6 +2157,10 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + duplexify@^3.4.2, duplexify@^3.5.1, duplexify@^3.5.3: version "3.5.4" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" @@ -2160,6 +2180,10 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +ejs@^2.5.7: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: version "1.3.42" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.42.tgz#95c33bf01d0cc405556aec899fe61fd4d76ea0f9" @@ -2570,6 +2594,10 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" +filesize@^3.5.11: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -2924,6 +2952,13 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +gzip-size@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -4493,6 +4528,10 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opener@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" @@ -6230,6 +6269,10 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +tryer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz#027b69fa823225e551cace3ef03b11f6ab37c1d7" + tslib@^1.9.0: version "1.9.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e" @@ -6540,6 +6583,23 @@ wbuf@^1.1.0, wbuf@^1.7.2: dependencies: minimalistic-assert "^1.0.0" +webpack-bundle-analyzer@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526" + dependencies: + acorn "^5.3.0" + bfj-node4 "^5.2.0" + chalk "^2.3.0" + commander "^2.13.0" + ejs "^2.5.7" + express "^4.16.2" + filesize "^3.5.11" + gzip-size "^4.1.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + opener "^1.4.3" + ws "^4.0.0" + webpack-cli@^3.0.0: version "3.0.8" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.0.8.tgz#90eddcf04a4bfc31aa8c0edc4c76785bc4f1ccd9" @@ -6734,6 +6794,13 @@ ws@^3.2.0: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From 0e1b41f87c21488f86c38a758811ad47921d44bd Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 16:38:04 +0200 Subject: [PATCH 20/32] Update rzl.js --- config/rzl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 0f2dc2f..b00e813 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -737,8 +737,8 @@ const config : Config = { position: [400, 348], icon: "remote", iconColor: (state) => //if any remote is low make icon red - ["65536", "65542", "65546", "65547" - ].some(x => state[tradfri_remote.low(x)] == "true") ? hex("#ff0000") : hex("#000000"), + ["65536", "65542", "65546", "65547"].some( + x => state[tradfri_remote.low(x)] == "true") ? hex("#ff0000") : hex("#000000"), ui: [ { type: "progress", From a34ca7c25c3630a50384e8ebcc017ecfff1a8779 Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 16:42:36 +0200 Subject: [PATCH 21/32] RZL: Use mdi_battery for tradfri remote battery icons --- config/rzl.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index b515f95..eac774d 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -769,7 +769,7 @@ const config : Config = { ui: [ { type: "progress", - icon: "battery", + icon: mdi_battery(tradfri_remote.level("65536")), min: 0, max: 100, text: "Tisch", @@ -777,7 +777,7 @@ const config : Config = { }, { type: "progress", - icon: "battery", + icon: mdi_battery(tradfri_remote.level("65547")), min: 0, max: 100, text: "Tisch 2", @@ -785,7 +785,7 @@ const config : Config = { }, { type: "progress", - icon: "battery", + icon: mdi_battery(tradfri_remote.level("65542")), min: 0, max: 100, text: "Theke", @@ -793,7 +793,7 @@ const config : Config = { }, { type: "progress", - icon: "battery", + icon: mdi_battery(tradfri_remote.level("65546")), min: 0, max: 100, text: "Theke 2", From aad1b59a96efe5b9a3e28d0ca15eef5c6e7f7833 Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 16:46:29 +0200 Subject: [PATCH 22/32] Fix merge conflicts --- config/rzl.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index eac774d..c21dd99 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -308,14 +308,14 @@ const config : Config = { olymp_printer: { name: "Drucker", position: [335, 90], - icon: "printer", + icon: mdi("printer"), iconColor: ({olymp_printer}) => olymp_printer == "on" ? hex("#00FF00") : hex("#000000"), ui: [ { type: "toggle", text: "Drucker", topic: "olymp_printer", - icon: "power" + icon: mdi("power") }, { type: "link", @@ -711,7 +711,7 @@ const config : Config = { kitchen_counter_light: { name: "Deckenlicht Theke", position: [400, 440], - icon: "ceiling-light", + icon: mdi("ceiling-light"), ui: [ { type: "section", @@ -722,7 +722,7 @@ const config : Config = { min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: floalt.brightness("65544"), delayedApply: true }, @@ -731,7 +731,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: floalt.color("65544"), delayedApply: true }, @@ -744,7 +744,7 @@ const config : Config = { min: 0, max: 100, text: "Helligkeit", - icon: "brightness-7", + icon: mdi("brightness-7"), topic: floalt.brightness("65543"), delayedApply: true }, @@ -753,7 +753,7 @@ const config : Config = { min: 0, max: 100, text: "Farbtemperatur", - icon: "weather-sunset-down", + icon: mdi("weather-sunset-down"), topic: floalt.color("65543"), delayedApply: true } From fdce5b96458a643a090cb1ed13016ca84482f727 Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 16:51:09 +0200 Subject: [PATCH 23/32] Add forgotten import --- config/rzl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index c21dd99..0ffaa0e 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -2,7 +2,7 @@ import type { Config } from "config/flowtypes"; import * as types from "config/types"; import { hex, rgb, rgba, rainbow } from "config/colors"; -import { mdi, raw_mdi } from "config/icon"; +import { mdi, raw_mdi, mdi_battery } from "config/icon"; import { esper_topics, esper_statistics, floalt, tradfri_remote } from "./utils"; const config : Config = { @@ -762,7 +762,7 @@ const config : Config = { remotes: { name: "Fernbedinungen", position: [400, 348], - icon: "remote", + icon: mdi("remote"), iconColor: (state) => //if any remote is low make icon red ["65536", "65542", "65546", "65547"].some( x => state[tradfri_remote.low(x)] == "true") ? hex("#ff0000") : hex("#000000"), From 6a5bf85c1eec432b242413553cf2b50bf4fe62fe Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 16:55:44 +0200 Subject: [PATCH 24/32] RZL: Use the light switch icon instead of remote --- config/rzl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rzl.js b/config/rzl.js index 0ffaa0e..81e50c6 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -762,7 +762,7 @@ const config : Config = { remotes: { name: "Fernbedinungen", position: [400, 348], - icon: mdi("remote"), + icon: mdi("light-switch"), iconColor: (state) => //if any remote is low make icon red ["65536", "65542", "65546", "65547"].some( x => state[tradfri_remote.low(x)] == "true") ? hex("#ff0000") : hex("#000000"), From bb2f151e110ab13b0a3d4c276b5fd1e620e9ecc2 Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Sun, 24 Jun 2018 16:57:45 +0200 Subject: [PATCH 25/32] types.str -> types.string --- config/rzl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rzl.js b/config/rzl.js index 1f3e24b..dc660d5 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -128,7 +128,7 @@ const config : Config = { command: "", defaultValue: "", values: {}, - type: types.str + type: types.string }, infoscreen: { state: "/service/openhab/out/pca301_infoscreen/state", From a8756c2a180254a64b847b35104ff0052f091f1d Mon Sep 17 00:00:00 2001 From: uwap Date: Sun, 24 Jun 2018 17:02:12 +0200 Subject: [PATCH 26/32] RZL: Optimize Tradfri Remote frontend --- config/rzl.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index 81e50c6..fee9977 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -761,7 +761,7 @@ const config : Config = { }, remotes: { name: "Fernbedinungen", - position: [400, 348], + position: [400, 344], icon: mdi("light-switch"), iconColor: (state) => //if any remote is low make icon red ["65536", "65542", "65546", "65547"].some( @@ -772,7 +772,7 @@ const config : Config = { icon: mdi_battery(tradfri_remote.level("65536")), min: 0, max: 100, - text: "Tisch", + text: "Licht Tisch 1", topic: tradfri_remote.level("65536") }, { @@ -780,7 +780,7 @@ const config : Config = { icon: mdi_battery(tradfri_remote.level("65547")), min: 0, max: 100, - text: "Tisch 2", + text: "Licht Tisch 2", topic: tradfri_remote.level("65547") }, { @@ -788,7 +788,7 @@ const config : Config = { icon: mdi_battery(tradfri_remote.level("65542")), min: 0, max: 100, - text: "Theke", + text: "Licht Theke 1", topic: tradfri_remote.level("65542") }, { @@ -796,7 +796,7 @@ const config : Config = { icon: mdi_battery(tradfri_remote.level("65546")), min: 0, max: 100, - text: "Theke 2", + text: "Licht Theke 2", topic: tradfri_remote.level("65546") } ] From fc0a2940604b1400b87343e94627ece0a2ad207e Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 26 Jun 2018 04:01:52 +0000 Subject: [PATCH 27/32] chore(package): update eslint to version 5.0.1 Closes #38 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ec41426..7c1a03d 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "babel-preset-react": "^6.24.1", "clean-webpack-plugin": "^0.1.18", "css-loader": "^0.28.9", - "eslint": "^4.16.0", + "eslint": "^5.0.1", "eslint-plugin-flowtype": "^2.42.0", "eslint-plugin-react": "^7.6.1", "file-loader": "^1.1.5", From 62732acc5076e67c49cc56cf65ba75aabdd6b903 Mon Sep 17 00:00:00 2001 From: uwap Date: Tue, 26 Jun 2018 14:55:20 +0200 Subject: [PATCH 28/32] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7c1a03d..4e44247 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "dev": "webpack --bail --config webpack.config.js --mode development --env", "watch": "webpack-dev-server --open --config webpack.config.js --mode development --env", "travis": "./travis.sh", - "lint": "eslint -- --ext js --ext jsx src/", + "lint": "eslint --ext js --ext jsx src/", "precommit": "yarn lint" }, "dependencies": { From 24ab3990adacbe7a4f40d0f866c6ae9137455569 Mon Sep 17 00:00:00 2001 From: uwap Date: Tue, 26 Jun 2018 15:12:38 +0200 Subject: [PATCH 29/32] Fix eslint warnings and errors --- src/components/SideBar.js | 7 +- src/components/TopBar.js | 2 +- src/components/UiItemList/UiItem.js | 2 +- src/components/UiItemList/index.js | 2 +- src/config/types.js | 6 +- src/index.jsx | 6 +- yarn.lock | 284 +++++++++++++--------------- 7 files changed, 141 insertions(+), 168 deletions(-) diff --git a/src/components/SideBar.js b/src/components/SideBar.js index 5015bdc..1f30932 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -24,9 +24,10 @@ export type SideBarProps = { export type SideBarState = { }; -class SideBar extends React.PureComponent -{ - constructor(props: SideBarProps & Classes) { +type Props = SideBarProps & Classes; + +class SideBar extends React.PureComponent { + constructor(props: Props) { super(props); } diff --git a/src/components/TopBar.js b/src/components/TopBar.js index 56cbe10..0d4953f 100644 --- a/src/components/TopBar.js +++ b/src/components/TopBar.js @@ -16,7 +16,7 @@ export type TopBarState = { }; export default class TopBar - extends React.PureComponent { + extends React.PureComponent { constructor(props: TopBarProps) { super(props); } diff --git a/src/components/UiItemList/UiItem.js b/src/components/UiItemList/UiItem.js index 886f47c..de70edc 100644 --- a/src/components/UiItemList/UiItem.js +++ b/src/components/UiItemList/UiItem.js @@ -31,7 +31,7 @@ type UiItemProps = { // eslint-disable-next-line flowtype/no-weak-types export default class UiItem - extends React.PureComponent> { + extends React.PureComponent> { constructor(props: UiItemProps) { super(props); } diff --git a/src/components/UiItemList/index.js b/src/components/UiItemList/index.js index b23b3cc..b0c3f16 100644 --- a/src/components/UiItemList/index.js +++ b/src/components/UiItemList/index.js @@ -7,7 +7,7 @@ import { renderIcon } from "config/icon"; import type { ControlUI } from "config/flowtypes"; import { Toggle, DropDown, Link, - Section, Text, Progress, Slider } from "./UiItem"; + Section, Text, Progress, Slider } from "./UiItem"; export type UiItemListProps = { controls: Array, diff --git a/src/config/types.js b/src/config/types.js index 0a4961d..8fe7c58 100644 --- a/src/config/types.js +++ b/src/config/types.js @@ -1,8 +1,8 @@ // @flow import type { TopicType } from "config/flowtypes"; -export const string: TopicType = msg => msg.toString(); +export const string: TopicType = (msg) => msg.toString(); export const json = (path: string, innerType?: TopicType): TopicType => { - const parseAgain = innerType == null ? x => x : innerType; - return msg => parseAgain(JSON.parse(msg.toString())[path]); + const parseAgain = innerType == null ? (x) => x : innerType; + return (msg) => parseAgain(JSON.parse(msg.toString())[path]); }; diff --git a/src/index.jsx b/src/index.jsx index 66997e4..9e96856 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -8,11 +8,11 @@ import App from "components/App"; import "../node_modules/@mdi/font/css/materialdesignicons.min.css"; import "../css/styles.css"; -const Config : Config = window.config; +const config : Config = window.config; injectTapEventPlugin(); -document.title = `${Config.space.name} Map`; +document.title = `${config.space.name} Map`; // $FlowFixMe const contentElement: Element = document.getElementById("content"); -ReactDOM.render(, contentElement); +ReactDOM.render(, contentElement); diff --git a/yarn.lock b/yarn.lock index 935b0e1..ecf63c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -161,28 +161,20 @@ acorn-dynamic-import@^3.0.0: dependencies: acorn "^5.0.0" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" +acorn-jsx@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" dependencies: - acorn "^3.0.4" + acorn "^5.0.3" -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.0.0, acorn@^5.5.0: +acorn@^5.0.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" -acorn@^5.3.0: +acorn@^5.0.3, acorn@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" @@ -194,15 +186,6 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - ajv@^6.0.1, ajv@^6.1.0: version "6.4.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" @@ -212,6 +195,15 @@ ajv@^6.0.1, ajv@^6.1.0: json-schema-traverse "^0.3.0" uri-js "^3.0.2" +ajv@^6.5.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.1.tgz#88ebc1263c7133937d108b80c5572e64e1d9322d" + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.1" + alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -426,7 +418,7 @@ babel-cli@^6.24.1: optionalDependencies: chokidar "^1.6.1" -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -1030,14 +1022,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bfj-node4@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830" - dependencies: - bluebird "^3.5.1" - check-types "^7.3.0" - tryer "^1.0.0" - big-integer@^1.6.17: version "1.6.27" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.27.tgz#8e56c6f8b2dd6c4fe8d32102b83d4f25868e4b3a" @@ -1392,7 +1376,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.3.0, chalk@^2.4.1: +chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -1416,10 +1400,6 @@ charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" -check-types@^7.3.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" - chokidar@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1604,7 +1584,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@2.15.x, commander@^2.11.0, commander@^2.13.0, commander@~2.15.0: +commander@2.15.x, commander@^2.11.0, commander@~2.15.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -1649,7 +1629,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.2: +concat-stream@^1.5.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -1754,7 +1734,7 @@ 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" -cross-spawn@^5.0.1, cross-spawn@^5.1.0: +cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -2157,10 +2137,6 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - duplexify@^3.4.2, duplexify@^3.5.1, duplexify@^3.5.3: version "3.5.4" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" @@ -2180,10 +2156,6 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -ejs@^2.5.7: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" - electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: version "1.3.42" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.42.tgz#95c33bf01d0cc405556aec899fe61fd4d76ea0f9" @@ -2244,6 +2216,16 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.10.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.11.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" @@ -2292,59 +2274,66 @@ eslint-scope@^3.7.1, eslint-scope@~3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" -eslint@^4.16.0: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" +eslint@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.0.1.tgz#109b90ab7f7a736f54e0f341c8bb9d09777494c3" dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" + ajv "^6.5.0" + babel-code-frame "^6.26.0" chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" + cross-spawn "^6.0.5" debug "^3.1.0" doctrine "^2.1.0" - eslint-scope "^3.7.1" + eslint-scope "^4.0.0" eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^2.0.0" functional-red-black-tree "^1.0.1" glob "^7.1.2" - globals "^11.0.1" + globals "^11.5.0" ignore "^3.3.3" imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" + lodash "^4.17.5" + minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" pluralize "^7.0.0" progress "^2.0.0" - regexpp "^1.0.1" + regexpp "^1.1.0" require-uncached "^1.0.3" - semver "^5.3.0" + semver "^5.5.0" + string.prototype.matchall "^2.0.0" strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" -espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" +espree@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" + acorn "^5.6.0" + acorn-jsx "^4.1.1" esprima@^2.6.0: version "2.7.3" @@ -2354,7 +2343,7 @@ esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -esquery@^1.0.0: +esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" dependencies: @@ -2487,7 +2476,7 @@ extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4: +external-editor@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" dependencies: @@ -2534,6 +2523,10 @@ fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -2594,10 +2587,6 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -filesize@^3.5.11: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -2663,9 +2652,9 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" -flow-bin@^0.70.0: - version "0.70.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.70.0.tgz#080ae83a997f2b4ddb3dc2649bf13336825292b5" +flow-bin@^0.75.0: + version "0.75.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.75.0.tgz#b96d1ee99d3b446a3226be66b4013224ce9df260" flow-typed@^2.3.0: version "2.4.0" @@ -2900,10 +2889,14 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.0.1, globals@^11.1.0: +globals@^11.1.0: version "11.4.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.4.0.tgz#b85c793349561c16076a3c13549238a27945f1bc" +globals@^11.5.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -2952,13 +2945,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -gzip-size@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" - dependencies: - duplexer "^0.1.1" - pify "^3.0.0" - handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -2992,6 +2978,10 @@ has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" +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.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" @@ -3308,21 +3298,20 @@ ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" cli-cursor "^2.1.0" cli-width "^2.0.0" - external-editor "^2.0.4" + external-editor "^2.1.0" figures "^2.0.0" lodash "^4.3.0" mute-stream "0.0.7" run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" + rxjs "^5.5.2" string-width "^2.1.0" strip-ansi "^4.0.0" through "^2.3.6" @@ -3608,7 +3597,7 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.0.0: +is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -3700,9 +3689,9 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.9.1: - version "3.11.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" +js-yaml@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -3734,6 +3723,10 @@ json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -4528,10 +4521,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opener@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" - opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" @@ -5438,7 +5427,13 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^1.0.1: +regexp.prototype.flags@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" + dependencies: + define-properties "^1.1.2" + +regexpp@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" @@ -5604,15 +5599,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" +rxjs@^5.5.2: + version "5.5.11" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + symbol-observable "1.0.1" rxjs@^6.1.0: version "6.2.1" @@ -6009,6 +6000,16 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.matchall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz#2af8fe3d2d6dc53ca2a59bd376b089c3c152b3c8" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.10.0" + function-bind "^1.1.1" + has-symbols "^1.0.0" + regexp.prototype.flags "^1.2.0" + string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -6055,7 +6056,7 @@ strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -6100,6 +6101,10 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + symbol-observable@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" @@ -6108,18 +6113,7 @@ symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -table@^4.0.2: +table@^4.0.2, table@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" dependencies: @@ -6155,7 +6149,7 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -6269,10 +6263,6 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -tryer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz#027b69fa823225e551cace3ef03b11f6ab37c1d7" - tslib@^1.9.0: version "1.9.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e" @@ -6436,6 +6426,12 @@ uri-js@^3.0.2: dependencies: punycode "^2.1.0" +uri-js@^4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + dependencies: + punycode "^2.1.0" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -6583,23 +6579,6 @@ wbuf@^1.1.0, wbuf@^1.7.2: dependencies: minimalistic-assert "^1.0.0" -webpack-bundle-analyzer@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526" - dependencies: - acorn "^5.3.0" - bfj-node4 "^5.2.0" - chalk "^2.3.0" - commander "^2.13.0" - ejs "^2.5.7" - express "^4.16.2" - filesize "^3.5.11" - gzip-size "^4.1.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - opener "^1.4.3" - ws "^4.0.0" - webpack-cli@^3.0.0: version "3.0.8" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.0.8.tgz#90eddcf04a4bfc31aa8c0edc4c76785bc4f1ccd9" @@ -6794,13 +6773,6 @@ ws@^3.2.0: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From b40f4a774ec7ea16d3b60dd671ee2b72f158c8f3 Mon Sep 17 00:00:00 2001 From: uwap Date: Tue, 26 Jun 2018 15:17:50 +0200 Subject: [PATCH 30/32] Fix flow error --- src/index.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.jsx b/src/index.jsx index 9e96856..c8ab2bd 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -8,6 +8,8 @@ import App from "components/App"; import "../node_modules/@mdi/font/css/materialdesignicons.min.css"; import "../css/styles.css"; +import type { Config } from "config/flowtypes"; + const config : Config = window.config; injectTapEventPlugin(); From a1a3cf0ed85a7033ef7d37bc8c32625d4d7c6baf Mon Sep 17 00:00:00 2001 From: Ranlvor Date: Thu, 28 Jun 2018 18:38:34 +0200 Subject: [PATCH 31/32] Use new map.rzl.so-Domain --- config/rzl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rzl.js b/config/rzl.js index aec1a33..0fc4ce4 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -9,7 +9,7 @@ const config : Config = { space: { name: "RZL", color: "orange", - mqtt: "ws://map.rzl:1884" + mqtt: "ws://map.rzl.so:1884" }, topics: [ { From c0117fa7d653dd364c585632a8af5ef7341ce2bb Mon Sep 17 00:00:00 2001 From: uwap Date: Thu, 28 Jun 2018 21:25:06 +0200 Subject: [PATCH 32/32] Do not use internal and actual values anymore (Fixes #42) --- config/entropia.js | 19 +- config/rzl.js | 436 ++++++++++++++++------------ config/utils.js | 95 +++--- src/components/App.js | 45 ++- src/components/ControlMap.js | 8 +- src/components/SideBar.js | 4 +- src/components/UiItemList/UiItem.js | 39 +-- src/components/UiItemList/index.js | 4 +- src/config/flowtypes.js | 46 ++- src/config/icon.js | 70 ++--- src/config/types.js | 19 +- src/utils/state.js | 8 - types/types.js | 21 +- 13 files changed, 421 insertions(+), 393 deletions(-) delete mode 100644 src/utils/state.js diff --git a/config/entropia.js b/config/entropia.js index fc2f6ca..ea6939a 100644 --- a/config/entropia.js +++ b/config/entropia.js @@ -1,6 +1,7 @@ // @flow import type { Config } from "config/flowtypes"; import { hex, rgb, rgba, rainbow } from "config/colors"; +import * as types from "config/types"; import { mdi } from "config/icon"; import { esper_topics, esper_statistics } from "./utils"; @@ -13,16 +14,18 @@ const config : Config = { topics: [ { hauptraum_table_light: { - command: "/public/sensoren/TPH/leinwand/control", - state: "test", - defaultValue: "A1 ON", - values: { on: "A1 ON", off: "A1 OFF" } + command: { + name: "/public/sensoren/TPH/leinwand/control", + type: types.option({ "A1 ON": "on", "A1 OFF": "off" }) + }, + defaultValue: "off" }, hauptraum_table_light_on_hack: { - command: "/public/sensoren/TPH/leinwand/control", - state: "test", - defaultValue: "A1 OFF", - values: { on: "A1 ON", off: "A1 OFF" } + command: { + name: "/public/sensoren/TPH/leinwand/control", + type: types.option({ "A1 ON": "on", "A1 OFF": "off" }) + }, + defaultValue: "on" } } ], diff --git a/config/rzl.js b/config/rzl.js index aec1a33..e606527 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -14,187 +14,299 @@ const config : Config = { topics: [ { led_stahltraeger: { - state: "/service/openhab/out/pca301_ledstrips/state", - command: "/service/openhab/in/pca301_ledstrips/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_ledstrips/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_ledstrips/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, snackbar: { - state: "/service/openhab/out/pca301_snackbar/state", - command: "/service/openhab/in/pca301_snackbar/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_snackbar/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_snackbar/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off", }, twinkle: { - state: "/service/openhab/out/pca301_twinkle/state", - command: "/service/openhab/in/pca301_twinkle/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_twinkle/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_twinkle/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, fan: { - state: "/service/openhab/out/pca301_fan/state", - command: "/service/openhab/in/pca301_fan/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_fan/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_fan/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, videogames: { - state: "/service/openhab/out/pca301_videogames/state", - command: "/service/openhab/in/pca301_videogames/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_videogames/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_videogames/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, olymp_pc: { - state: "/service/openhab/out/pca301_olymp_pc/state", - command: "/service/openhab/in/pca301_olymp_pc/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_olymp_pc/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_olymp_pc/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, olymp_printer: { - state: "stat/sonoff2/POWER", - command: "cmnd/sonoff2/power", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "stat/sonoff2/POWER", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "cmnd/sonoff2/power", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, flyfry: { - state: "/service/openhab/out/wifi_flyfry/state", - command: "/service/openhab/in/wifi_flyfry/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } - }, - artnet: { - state: "/artnet/state", - command: "/artnet/push", - defaultValue: "blackout", - values: { off: "blackout", yellow: "yellow", purple: "purple", - blue: "blue", green: "green", red: "red", random: "random", - cycle: "cycle-random" } + state: { + name: "/service/openhab/out/wifi_flyfry/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/wifi_flyfry/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, onkyo_connection: { - state: "/service/onkyo/connected", - command: "", - defaultValue: "0", - values: { disconnected: "0", connecting: "1", connected: "2" }, + state: { + name: "/service/onkyo/connected", + type: types.option({ + "0": "disconnected", + "1": "connecting", + "2": "connected" + }) + }, + defaultValue: "disconnected" }, onkyo_power: { - state: "/service/onkyo/status/system-power", - command: "/service/onkyo/command", - defaultValue: "PWR00", - values: { off: "PWR00", on: "PWR01" }, - type: types.json("onkyo_raw") + state: { + name: "/service/onkyo/status/system-power", + type: types.json("onkyo_raw", types.option({ + PWR00: "off", + PWR01: "on" + })) + }, + command: { + name: "/service/onkyo/command", + type: types.option({ off: "PWR00", on: "PWR01" }) + }, + defaultValue: "off" }, onkyo_mute: { - state: "/service/onkyo/status/audio-muting", - command: "/service/onkyo/command", - defaultValue: "AMT00", - values: { off: "AMT00", on: "AMT01" }, - type: types.json("onkyo_raw") + state: { + name: "/service/onkyo/status/audio-muting", + type: types.json("onkyo_raw", types.option({ + AMT00: "off", + AMT01: "on" + })) + }, + command: { + name: "/service/onkyo/command", + type: types.option({ off: "AMT00", on: "AMT01" }) + }, + defaultValue: "off" }, onkyo_volume: { - state: "/service/onkyo/status/volume", - command: "/service/onkyo/set/volume", - defaultValue: 0, - values: {}, - type: types.json("val") + state: { + name: "/service/onkyo/status/volume", + type: types.json("val") + }, + command: { + name: "/service/onkyo/set/volume", + type: types.string + }, + defaultValue: "0" }, onkyo_inputs: { - state: "/service/onkyo/status/input-selector", - command: "/service/onkyo/command", - defaultValue: "SLI00", - values: { tisch: "SLI11", chromecast: "SLI01", pult: "SLI10", netzwerk: "SLI2B", front: "SLI03" }, - type: types.json("onkyo_raw") + state: { + name: "/service/onkyo/status/input-selector", + type: types.json("onkyo_raw", types.option({ + SLI11: "tisch", + SLI01: "chromecast", + SLI10: "pult", + SLI2B: "netzwerk", + SLI03: "front", + otherwise: "unknown" + })) + }, + command: { + name: "/service/onkyo/command", + type: types.option({ + tisch: "SLI11", + chromecast: "SLI01", + pult: "SLI10", + netzwerk: "SLI2B", + front: "SLI03", + unknown: "SLI00" + }) + }, + defaultValue: "unknown", }, onkyo_radios: { - state: "/service/onkyo/status/latest-NPR", - command: "/service/onkyo/command", - defaultValue: "", - values: { mpd: "NPR01", kohina: "NPR02", somafm_dronezone: "NPR03", somafm_thetrip: "NPR04", - querfunk: "NPR05", somafm_defconradio: "NPR06", somafm_secretagent: "NPR07", somafm_lush: "NPR08", - somafm_beatblender: "NPR09", ponyville: "NPR0a"} + state: { + name: "/service/onkyo/status/latest-NPR", + type: types.option({ + NPR01: "mpd", + NPR02: "kohina", + NPR03: "somafm_dronezone", + NPR04: "somafm_thetrip", + NPR05: "querfunk", + NPR06: "somafm_defconradio", + NPR07: "somafm_secretagent", + NPR08: "somafm_lush", + NPR09: "somafm_beatblender", + NPR0a: "ponyville", + otherwise: "unknown" + }) + }, + command: { + name: "/service/onkyo/command", + type: types.option({ + mpd: "NPR01", + kohina: "NPR02", + somafm_dronezone: "NPR03", + somafm_thetrip: "NPR04", + querfunk: "NPR05", + somafm_defconradio: "NPR06", + somafm_secretagent: "NPR07", + somafm_lush: "NPR08", + somafm_beatblender: "NPR09", + ponyville: "NPR0a", + otherwise: "NPR00" + }) + }, + defaultValue: "unknown" }, rundumleuchte: { - state: "/service/openhab/out/pca301_rundumleuchte/state", - command: "/service/openhab/in/pca301_rundumleuchte/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_rundumleuchte/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_rundumleuchte/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, door_status: { - state: "/service/status", - command: "", - defaultValue: "\"closed\"", - values: { on: "\"open\"", off: "\"closed\"" } + state: { + name: "/service/status", + type: types.option({ "\"open\"": "on", "\"closed\"": "off" }) + }, + defaultValue: "off" }, presence_status: { - state: "service/status/presence", - command: "", - defaultValue: "", - values: {}, - type: msg => JSON.parse(msg.toString()).join(", ") + state: { + name: "service/status/presence", + type: types.jsonArray + }, + defaultValue: "" }, devices_status: { - state: "/service/status/devices", - command: "", - defaultValue: "", - values: {}, - type: types.string + state: { + name: "/service/status/devices", + type: types.string + }, + defaultValue: "" }, infoscreen: { - state: "/service/openhab/out/pca301_infoscreen/state", - command: "/service/openhab/in/pca301_infoscreen/command", - defaultValue: "OFF", - values: { on: "ON", off: "OFF" } + state: { + name: "/service/openhab/out/pca301_infoscreen/state", + type: types.option({ ON: "on", OFF: "off" }) + }, + command: { + name: "/service/openhab/in/pca301_infoscreen/command", + type: types.option({ on: "ON", off: "OFF" }) + }, + defaultValue: "off" }, printer_3d_status: { - state: "/service/ultimaker/state", - command: "", + state: { + name: "/service/ultimaker/state", + type: types.option({ + unreachable: "unavailable", + booting: "unavailable", + pre_print: "printing", + post_print: "printing", + printing: "printing", + otherwise: "awaiting_interaction" + }) + }, defaultValue: "unavailable", - values: {}, - type: msg => { - switch (msg.toString()) { - case "unreachable": - case "booting": - return "unavailable" - - case "pausing": - case "paused": - case "resuming": - case "wait_cleanup": - case "maintenance": - return "awaiting_interaction" - - case "pre_print": - case "post_print": - case "printing": - return "printing" - - default: - return msg.toString() - } - } }, printer_3d_progress: { - state: "/service/ultimaker/job", - command: "", - defaultValue: "", - values: {}, - type: msg => JSON.parse(msg.toString()).progress || 0 + state: { + name: "/service/ultimaker/job", + type: msg => JSON.parse(msg.toString()).progress || "0" + }, + defaultValue: "0" }, kitchen_light_color: { - state: "/service/openhab/out/kitchen_light_all_color_temperature/state", - command: "/service/openhab/in/kitchen_light_all_color_temperature/command", - defaultValue: "0", - values: {} + state: { + name: "/service/openhab/out/kitchen_light_all_color_temperature/state", + type: types.string + }, + command: { + name: "/service/openhab/in/kitchen_light_all_color_temperature/command", + type: types.string + }, + defaultValue: "0" }, kitchen_light_brightness: { - state: "/service/openhab/out/kitchen_light_all_brightness/state", - command: "/service/openhab/in/kitchen_light_all_brightness/command", - defaultValue: "0", - values: {} + state: { + name: "/service/openhab/out/kitchen_light_all_brightness/state", + type: types.string + }, + command: { + name: "/service/openhab/in/kitchen_light_all_brightness/command", + type: types.string + }, + defaultValue: "0" }, kitchen_sink_light_brightness: { - state: "/service/openhab/out/tradfri_0100_gwb8d7af2b448f_65545_brightness/state", - command: "/service/openhab/in/tradfri_0100_gwb8d7af2b448f_65545_brightness/command", - defaultValue: "0", - values: {} + state: { + name: "/service/openhab/out/tradfri_0100_gwb8d7af2b448f_65545_brightness/state", + type: types.string + }, + command: { + name: "/service/openhab/in/tradfri_0100_gwb8d7af2b448f_65545_brightness/command", + type: types.string + }, + defaultValue: "0" } }, //Kuechen-Floalts @@ -345,44 +457,6 @@ const config : Config = { } ]) }, - artnet: { - name: "Artnet", - position: [535,480], - icon: mdi("spotlight"), - iconColor: ({artnet}) => - ({ - off: hex("#000000"), - yellow: hex("#F0DF10"), - red: hex("#FF0000"), - purple: hex("#FF00FF"), - green: hex("#00FF00"), - cycle: rainbow - })[artnet], - ui: [ - { - type: "toggle", - text: "An/Aus", - topic: "artnet", - on: "cycle", - toggled: val => val != "off", - icon: mdi("power") - }, - { - type: "dropDown", - text: "Farbe", - topic: "artnet", - options: { - yellow: "Gelb", - red: "Rot", - purple: "Pink", - green: "Grün", - cycle: "Farbwechsel" - }, - enableCondition: val => val != "off", - icon: mdi("palette") - } - ] - }, onkyo: { name: "Onkyo", position: [350, 650], @@ -395,7 +469,7 @@ const config : Config = { text: "Power", icon: mdi("power"), topic: "onkyo_power", - enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" + enableCondition: ({ onkyo_connection }) => onkyo_connection == "connected" }, { type: "section", @@ -408,14 +482,14 @@ const config : Config = { min: 0, max: 50, icon: mdi("volume-high"), - enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" + enableCondition: ({ onkyo_connection }) => onkyo_connection == "connected" }, { type: "toggle", text: "Mute", topic: "onkyo_mute", icon: mdi("volume-off"), - enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" + enableCondition: ({ onkyo_connection }) => onkyo_connection == "connected" }, { type: "section", @@ -433,7 +507,7 @@ const config : Config = { front: "Front HDMI" }, icon: mdi("usb"), - enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" + enableCondition: ({ onkyo_connection }) => onkyo_connection == "connected" }, { type: "dropDown", @@ -452,7 +526,7 @@ const config : Config = { ponyville: "Ponyville FM" }, icon: mdi("radio"), - enableCondition: (a, b, state) => state.onkyo_connection.internal == "connected" && state.onkyo_inputs.internal == "netzwerk" + enableCondition: (state) => state.onkyo_connection == "connected" && state.onkyo_inputs == "netzwerk" }, { type: "section", @@ -582,8 +656,8 @@ const config : Config = { ui: [ { type: "toggle", - on: 50, - off: 0, + on: "50", + off: "0", toggled: n => parseInt(n) > 0, topic: "kitchen_light_brightness", text: "Ein/Ausschalten", @@ -704,8 +778,8 @@ const config : Config = { ui: [ { type: "toggle", - on: 50, - off: 0, + on: "50", + off: "0", toggled: n => parseInt(n) > 0, topic: "kitchen_sink_light_brightness", text: "Ein/Ausschalten", diff --git a/config/utils.js b/config/utils.js index e3d4169..5ebd526 100644 --- a/config/utils.js +++ b/config/utils.js @@ -1,43 +1,44 @@ // @flow import type { ControlUI } from "config/flowtypes"; import { mdi } from "config/icon"; +import * as types from "config/types"; export const esper_topics = (chip_id: string, name: string) => ({ [ `esper_${name}_version` ]: { - state: `/service/esper/${chip_id}/info`, - command: "", - defaultValue: "UNKNOWN", - values: {}, - type: msg => JSON.parse(msg.toString()).version.esper + state: { + name: `/service/esper/${chip_id}/info`, + type: types.json("version.esper") + }, + defaultValue: "UNKNOWN" }, [ `esper_${name}_ip` ]: { - state: `/service/esper/${chip_id}/info`, - command: "", - defaultValue: "UNKNOWN", - values: {}, - type: msg => JSON.parse(msg.toString()).network.ip + state: { + name: `/service/esper/${chip_id}/info`, + type: types.json("network.ip") + }, + defaultValue: "UNKNOWN" }, [ `esper_${name}_rssi` ]: { - state: `/service/esper/${chip_id}/info`, - command: "", - defaultValue: "UNKNOWN", - values: {}, - type: msg => JSON.parse(msg.toString()).wifi.rssi + state: { + name: `/service/esper/${chip_id}/info`, + type: types.json("wifi.rssi") + }, + defaultValue: "UNKNOWN" }, [ `esper_${name}_uptime` ]: { - state: `/service/esper/${chip_id}/info`, - command: "", - defaultValue: "UNKNOWN", - values: {}, - type: msg => new Date(JSON.parse(msg.toString()).time.startup * 1000) + state: { + name: `/service/esper/${chip_id}/info`, + type: msg => new Date(JSON.parse(msg.toString()).time.startup * 1000) .toLocaleString() + }, + defaultValue: "UNKNOWN", }, [ `esper_${name}_device` ]: { - state: `/service/esper/${chip_id}/info`, - command: "", - defaultValue: "UNKNOWN", - values: {}, - type: msg => JSON.parse(msg.toString()).device + state: { + name: `/service/esper/${chip_id}/info`, + type: types.json("device") + }, + defaultValue: "UNKNOWN" } }); @@ -46,16 +47,26 @@ export const floalt = { brightness: (light_id: string) => `floalt_${light_id}_brightness`, topics: (light_id: string) => ({ [ `floalt_${light_id}_color` ]: { - state: `/service/openhab/out/tradfri_0220_gwb8d7af2b448f_${light_id}_color_temperature/state`, - command: `/service/openhab/in/tradfri_0220_gwb8d7af2b448f_${light_id}_color_temperature/command`, - defaultValue: "0", - values: {} + state: { + name: `/service/openhab/out/tradfri_0220_gwb8d7af2b448f_${light_id}_color_temperature/state`, + type: types.string + }, + command: { + name: `/service/openhab/in/tradfri_0220_gwb8d7af2b448f_${light_id}_color_temperature/command`, + type: types.string + }, + defaultValue: "0" }, [ `floalt_${light_id}_brightness` ]: { - state: `/service/openhab/out/tradfri_0220_gwb8d7af2b448f_${light_id}_brightness/state`, - command: `/service/openhab/in/tradfri_0220_gwb8d7af2b448f_${light_id}_brightness/command`, - defaultValue: "0", - values: {} + state: { + name: `/service/openhab/out/tradfri_0220_gwb8d7af2b448f_${light_id}_brightness/state`, + type: types.string + }, + command: { + name: `/service/openhab/in/tradfri_0220_gwb8d7af2b448f_${light_id}_brightness/command`, + type: types.string + }, + defaultValue: "0" } }) } @@ -65,16 +76,18 @@ export const tradfri_remote = { low: (remote_id: string) => `tradfri_remote_${remote_id}_low`, topics: (remote_id: string) => ({ [ `tradfri_remote_${remote_id}_level` ]: { - state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_level/state`, - command: "", - defaultValue: "0", - values: {} + state: { + name: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_level/state`, + type: types.string + }, + defaultValue: "0" }, [ `tradfri_remote_${remote_id}_low` ]: { - state: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_low/state`, - command: "", - defaultValue: "OFF", - values: { true: "ON", false: "OFF" } + state: { + name: `/service/openhab/out/tradfri_0830_gwb8d7af2b448f_${remote_id}_battery_low/state`, + type: types.option({ ON: "true", OFF: "false" }) + }, + defaultValue: "false", } }) } diff --git a/src/components/App.js b/src/components/App.js index 7d6fb2f..d11a56b 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -18,9 +18,6 @@ import ControlMap from "components/ControlMap"; import TopBar from "components/TopBar"; import UiItemList from "components/UiItemList"; -import keyOf from "utils/keyOf"; -import { toRawIcon } from "config/icon"; - import connectMqtt from "../connectMqtt"; export type AppProps = { @@ -31,7 +28,7 @@ export type AppState = { selectedControl: ?Control, drawerOpened: boolean, mqttState: State, - mqttSend: (topic: string, value: Actual) => void, + mqttSend: (topic: string, value: Buffer) => void, mqttConnected: boolean, }; @@ -41,16 +38,15 @@ class App extends React.PureComponent { this.state = { selectedControl: null, drawerOpened: false, - mqttState: mapValues(this.topics, (topic) => ({ - actual: topic.defaultValue, - internal: keyOf(topic.values, topic.defaultValue) - })), + mqttState: mapValues(this.topics, (topic) => topic.defaultValue), mqttSend: connectMqtt(props.config.space.mqtt, { onMessage: this.receiveMessage.bind(this), onConnect: () => this.setState({ mqttConnected: true }), onReconnect: () => this.setState({ mqttConnected: false }), onDisconnect: () => this.setState({ mqttConnected: false }), - subscribe: map(this.topics, (x) => x.state) + subscribe: map( + filter(keys(this.topics), (x) => this.topics[x].state != null), + (x) => this.topics[x].state.name) }), mqttConnected: false }; @@ -77,23 +73,23 @@ class App extends React.PureComponent { }); } - receiveMessage(rawTopic: string, message: Object) { + receiveMessage(rawTopic: string, message: Buffer) { const topics = filter( keys(this.topics), - (k) => this.topics[k].state === rawTopic + (k) => this.topics[k].state != null && + this.topics[k].state.name === rawTopic ); if (topics.length === 0) { return; } for (let i in topics) { + // TODO: Remove FlowFixMe const topic = topics[i]; - const parseValue = this.topics[topic].type; + // $FlowFixMe + const parseValue = this.topics[topic].state.type; const val = parseValue == null ? message.toString() : parseValue(message); this.setState({mqttState: Object.assign({}, merge(this.state.mqttState, - { [topic]: { - actual: val, - internal: keyOf(this.topics[topic].values, val) || val - }}))}); + { [topic]: val}))}); } } @@ -105,15 +101,15 @@ class App extends React.PureComponent { this.setState({drawerOpened: false}); } - changeState(topic: string, value: Actual) { - const rawTopic = this.topics[topic].command; - if (rawTopic == null) { + changeState(topic: string, value: string) { + if (this.topics[topic].command == null) { return; } - this.state.mqttSend( - rawTopic, - String(this.topics[topic].values[value] || value) - ); + const rawTopic = this.topics[topic].command.name; + const transformValue = this.topics[topic].command.type; + const val = + transformValue == null ? value : transformValue(Buffer.from(value)); + this.state.mqttSend(rawTopic, Buffer.from(val)); } render() { @@ -127,8 +123,7 @@ class App extends React.PureComponent { control={this.state.selectedControl} onCloseRequest={this.closeDrawer.bind(this)} icon={this.state.selectedControl == null ? null : - toRawIcon(this.state.selectedControl.icon, - this.state.mqttState)} + this.state.selectedControl.icon(this.state.mqttState)} > {this.state.selectedControl == null || { } createLeafletIcon(control: Control) { - const icon = toRawIcon(control.icon, this.props.state); + const icon = control.icon(this.props.state); const iconClass = `${icon} mdi-36px`; return divIcon({ iconSize: point(36, 36), @@ -61,10 +59,8 @@ export default class ControlMap extends React.PureComponent { } iconColor(control: Control): string { - const ints = mapValues(this.props.state, (x) => x.internal || x.actual); - const acts = mapValues(this.props.state, (x) => x.actual); if (control.iconColor != null) { - return control.iconColor(ints, acts, this.props.state); + return control.iconColor(this.props.state); } return "#000"; } diff --git a/src/components/SideBar.js b/src/components/SideBar.js index 1f30932..eff2c34 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -8,7 +8,7 @@ import IconButton from "@material-ui/core/IconButton"; import AppBar from "@material-ui/core/AppBar"; import Toolbar from "@material-ui/core/Toolbar"; import List from "@material-ui/core/List"; -import { renderRawIcon } from "config/icon"; +import { renderIcon } from "config/icon"; import type { RawIcon } from "config/icon"; import type { Control } from "config/flowtypes"; @@ -57,7 +57,7 @@ class SideBar extends React.PureComponent { {this.props.icon == null - || renderRawIcon(this.props.icon, "mdi-36px")} + || renderIcon(this.props.icon, "mdi-36px")} {this.props.control == null || this.props.control.name} diff --git a/src/components/UiItemList/UiItem.js b/src/components/UiItemList/UiItem.js index de70edc..aadfd83 100644 --- a/src/components/UiItemList/UiItem.js +++ b/src/components/UiItemList/UiItem.js @@ -21,12 +21,11 @@ import type { } from "config/flowtypes"; import keyOf from "utils/keyOf"; -import { getInternals, getActuals } from "utils/state"; type UiItemProps = { item: I, state: State, - onChangeState: (topic: string, nextState: Actual) => void + onChangeState: (topic: string, nextState: string) => void }; // eslint-disable-next-line flowtype/no-weak-types @@ -54,9 +53,7 @@ export default class UiItem typeof this.props.item.enableCondition == "function") { const enableCondition = this.props.item.enableCondition; const state = this.props.state; - const internals = getInternals(state); - const actuals = getActuals(state); - return enableCondition(internals, actuals, state); + return enableCondition(state); } else { return true; } @@ -68,7 +65,7 @@ export class UiControl extends UiItem { super(props); } - changeState(next: Actual) { + changeState(next: string) { if (this.props.item.topic == null) { throw new Error( `Missing topic in ${this.props.item.type} "${this.props.item.text}"` @@ -93,19 +90,6 @@ export class UiControl extends UiItem { } return value; } - - isEnabled() { - if (Object.keys(this.props.item).includes("enableCondition") && - // $FlowFixMe - typeof this.props.item.enableCondition == "function") { - const enableCondition = this.props.item.enableCondition; - const value = this.getValue(); - return enableCondition( - value.internal || value.actual, value.actual, this.props.state); - } else { - return true; - } - } } export class Toggle extends UiControl { @@ -113,9 +97,8 @@ export class Toggle extends UiControl { const value = this.getValue(); const control = this.props.item; const isChecked = control.toggled || - ((i, _a, _s) => i === (control.on || "on")); - const checked = isChecked( - value.internal || value.actual, value.actual, this.props.state); + ((i, _s) => i === (control.on || "on")); + const checked = isChecked(value, this.props.state); return checked; } @@ -145,7 +128,7 @@ export class Toggle extends UiControl { } export class DropDown extends UiControl { - runPrimaryAction = (next?: Actual) => { + runPrimaryAction = (next?: string) => { if (this.isEnabled()) { const control = this.props.item; const optionKeys = keys(control.options); @@ -172,7 +155,7 @@ export class DropDown extends UiControl { return ( {control.text} - } @@ -187,7 +170,7 @@ export class DropDown extends UiControl { export class Slider extends UiControl { runPrimaryAction = (e: ?Event, v: ?number) => { if (v != null) { - this.changeState(v); + this.changeState(v.toString()); } } @@ -195,7 +178,7 @@ export class Slider extends UiControl { return [ , @@ -245,7 +228,7 @@ export class Text extends UiControl { render() { return [ , - + ]; } } @@ -254,7 +237,7 @@ export class Progress extends UiControl { render() { const min = this.props.item.min || 0; const max = this.props.item.max || 100; - const val = parseFloat(this.getValue().internal || this.getValue().actual); + const val = parseFloat(this.getValue()); const value = val * 100 / max - min; return [ , diff --git a/src/components/UiItemList/index.js b/src/components/UiItemList/index.js index b0c3f16..a627377 100644 --- a/src/components/UiItemList/index.js +++ b/src/components/UiItemList/index.js @@ -12,7 +12,7 @@ import { Toggle, DropDown, Link, export type UiItemListProps = { controls: Array, state: State, - onChangeState: (topic: string, nextState: Actual) => void + onChangeState: (topic: string, nextState: string) => void }; export default class UiItemList extends React.PureComponent { @@ -34,7 +34,7 @@ export default class UiItemList extends React.PureComponent { {control.icon == null || - {renderIcon(control.icon, this.props.state, "mdi-24px")} + {renderIcon(control.icon(this.props.state), "mdi-24px")} } {this.renderControl(control)} diff --git a/src/config/flowtypes.js b/src/config/flowtypes.js index 6e58f3b..6cccf3f 100644 --- a/src/config/flowtypes.js +++ b/src/config/flowtypes.js @@ -2,24 +2,20 @@ import type { Color } from "config/colors"; import type { Icon } from "config/icon"; -export type TopicType = (msg: Buffer) => any; +export type TopicType = (msg: Buffer) => string; + +export type StateCommand = { + name: string, + type: TopicType +} export type Topic = { - state: string, - command: string, - defaultValue: Actual, - values: Map, - type?: TopicType + state?: StateCommand, + command?: StateCommand, + defaultValue: string }; export type Topics = Map; -export type TopicDependentOption = ( - internal: Internal, actual: Actual, state: State - ) => T; -export type StateDependentOption = ( - internals: Map, actuals: Map, state: State - ) => T; - export interface UIControl { +type: string, +text: string, @@ -27,7 +23,7 @@ export interface UIControl { } export interface Enableable { - enableCondition?: TopicDependentOption + enableCondition?: (s: State) => boolean } export type UIToggle = $ReadOnly<{| @@ -35,10 +31,10 @@ export type UIToggle = $ReadOnly<{| text: string, topic: string, icon?: Icon, - enableCondition?: TopicDependentOption, - on?: Actual, - off?: Actual, - toggled?: TopicDependentOption + enableCondition?: (s: State) => boolean, + on?: string, + off?: string, + toggled?: (v: string, s: State) => boolean |}>; export type UIDropDown = $ReadOnly<{| @@ -46,8 +42,8 @@ export type UIDropDown = $ReadOnly<{| text: string, topic: string, icon?: Icon, - enableCondition?: TopicDependentOption, - options: Map, + enableCondition?: (s: State) => boolean, + options: Map, renderValue?: (value: string) => string |}>; @@ -56,7 +52,7 @@ export type UISlider = $ReadOnly<{| text: string, topic: string, icon?: Icon, - enableCondition?: TopicDependentOption, + enableCondition?: (s: State) => boolean, min?: number, max?: number, step?: number, @@ -72,7 +68,7 @@ export type UILink = $ReadOnly<{| type: "link", text: string, link: string, - enableCondition?: StateDependentOption, + enableCondition?: (s: State) => boolean, // TODO: check if both the following options are implemented icon?: Icon @@ -107,11 +103,7 @@ export type Control = { name: string, position: [number, number], icon: Icon, - iconColor?: ( - internals: Map, - actuals: Map, - state: State - ) => Color, + iconColor?: (state: State) => Color, ui: Array }; export type Controls = Map; diff --git a/src/config/icon.js b/src/config/icon.js index 524395e..e1ae9f8 100644 --- a/src/config/icon.js +++ b/src/config/icon.js @@ -1,11 +1,9 @@ // @flow import * as React from "react"; -import { getInternals, getActuals } from "utils/state"; export opaque type RawIcon: string = string; -export type Icon = (Map, Map, State) => - RawIcon; +export type Icon = (State) => RawIcon; export const raw_mdi = (name: string): RawIcon => { return `mdi ${name.split(" ").map((icon) => "mdi-".concat(icon)).join(" ")}`; @@ -13,47 +11,35 @@ export const raw_mdi = (name: string): RawIcon => { export const mdi = (icon: string) => () => raw_mdi(icon); -export const mdi_battery = (topic: string) => - (state: Map) => { - const rawval = state[topic]; - const val = parseInt(rawval); - if (isNaN(val)) { - return raw_mdi("battery-unknown"); - } else if (val > 95) { - return raw_mdi("battery"); - } else if (val > 85) { - return raw_mdi("battery-90"); - } else if (val > 75) { - return raw_mdi("battery-80"); - } else if (val > 65) { - return raw_mdi("battery-70"); - } else if (val > 55) { - return raw_mdi("battery-60"); - } else if (val > 45) { - return raw_mdi("battery-50"); - } else if (val > 35) { - return raw_mdi("battery-40"); - } else if (val > 25) { - return raw_mdi("battery-30"); - } else if (val > 15) { - return raw_mdi("battery-20"); - } else { - return raw_mdi("battery-10"); - } - }; - -export const toRawIcon = (icon: Icon, state: State): RawIcon => { - const internals: Map = getInternals(state); - const actuals: Map = getActuals(state); - return icon(internals, actuals, state); +export const mdi_battery = (topic: string) => (state: State) => { + const rawval = state[topic]; + const val = parseInt(rawval); + if (isNaN(val)) { + return raw_mdi("battery-unknown"); + } else if (val > 95) { + return raw_mdi("battery"); + } else if (val > 85) { + return raw_mdi("battery-90"); + } else if (val > 75) { + return raw_mdi("battery-80"); + } else if (val > 65) { + return raw_mdi("battery-70"); + } else if (val > 55) { + return raw_mdi("battery-60"); + } else if (val > 45) { + return raw_mdi("battery-50"); + } else if (val > 35) { + return raw_mdi("battery-40"); + } else if (val > 25) { + return raw_mdi("battery-30"); + } else if (val > 15) { + return raw_mdi("battery-20"); + } else { + return raw_mdi("battery-10"); + } }; -export const renderRawIcon = +export const renderIcon = (icon: RawIcon, extraClass?: string): React.Node => { return ; }; - -export const renderIcon = - (icon: Icon, state: State, extraClass?: string): React.Node => { - return renderRawIcon(toRawIcon(icon, state), extraClass); - }; diff --git a/src/config/types.js b/src/config/types.js index 8fe7c58..91bb28b 100644 --- a/src/config/types.js +++ b/src/config/types.js @@ -1,8 +1,21 @@ // @flow import type { TopicType } from "config/flowtypes"; +import at from "lodash/at"; + +export const string: TopicType = (msg: Buffer) => msg.toString(); -export const string: TopicType = (msg) => msg.toString(); export const json = (path: string, innerType?: TopicType): TopicType => { - const parseAgain = innerType == null ? (x) => x : innerType; - return (msg) => parseAgain(JSON.parse(msg.toString())[path]); + const parseAgain = innerType == null ? (x) => x.toString() : innerType; + return (msg) => parseAgain(Buffer.from( + at(JSON.parse(msg.toString()), path)[0].toString())); }; + +export type TypeOptionParam = { otherwise?: string, [string]: string }; +export const option = (values: TypeOptionParam): TopicType => { + // TODO: error + const defaultValue = values.otherwise != null ? values.otherwise : ""; + const mapVal = (x) => (values[x] != null ? values[x] : defaultValue); + return (x) => mapVal(x.toString()); +}; + +export const jsonArray = (msg: Buffer) => JSON.parse(msg.toString()).join(", "); diff --git a/src/utils/state.js b/src/utils/state.js deleted file mode 100644 index c68269c..0000000 --- a/src/utils/state.js +++ /dev/null @@ -1,8 +0,0 @@ -// @flow -import mapValues from "lodash/mapValues"; - -export const getInternals = (state: State): Map => - mapValues(state, (x) => x.internal || x.actual); - -export const getActuals = (state: State): Map => - mapValues(state, (x) => x.actual); diff --git a/types/types.js b/types/types.js index d0f09ba..5503e1a 100644 --- a/types/types.js +++ b/types/types.js @@ -7,26 +7,7 @@ declare type Classes = { classes: Map }; -declare type Internal = string; -declare type Actual = any; -declare type StateValue = { - internal: string, - actual: any -}; -declare type State = Map; - -//declare type State = { -// mqtt: ?any, -// uiOpened: ?string, - // A map of the actual state values for each topic. - // internal is the internal term for the value, - // that is equal to the key in the values section of that - // topic, for example given by: - // values: { off: "OFF", on: "ON" } - // and actual is the value of that or whatever is given by mqtt. -// values: Map, -// visibleLayers: Array -//}; +declare type State = Map; declare type Point = [number, number];