From 00739ea38f0f59bf0ab633aa7ec9e3100156c024 Mon Sep 17 00:00:00 2001 From: Manuel83 Date: Sun, 25 Jun 2017 21:29:45 +0200 Subject: [PATCH] -Ui Changes -Brew Steps added -Clean AddOn Dialog --- .gitignore | 4 + config/schema.sql | 3 + config/version.yaml | 1 + modules/__init__.py | 3 + modules/app_config.py | 6 +- modules/base_plugins/brew_steps/__init__.py | 127 ++++++++++++++++++++ modules/base_plugins/dummy_temp/__init__.py | 20 ++- modules/base_plugins/gpio_actor/__init__.py | 11 ++ modules/buzzer/__init__.py | 2 - modules/config/__init__.py | 2 +- modules/core/core.py | 24 ++-- modules/core/db.py | 6 +- modules/core/hardware.py | 3 + modules/core/props.py | 3 +- modules/notification/__init__.py | 7 +- modules/steps/__init__.py | 30 ++++- modules/ui/endpoints.py | 2 + modules/ui/src/App.css | 16 +++ modules/ui/src/index.css | 5 + modules/ui/static/bundle.js | 95 ++++++++------- modules/ui/static/index.html | 2 + 21 files changed, 297 insertions(+), 75 deletions(-) create mode 100644 config/version.yaml create mode 100644 modules/ui/src/App.css create mode 100644 modules/ui/src/index.css diff --git a/.gitignore b/.gitignore index e9eb524..1813ac1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ craftbeerpi.db modules/plugins/* !modules/plugins/__init__.py *.pyc +*.js +modules/ui/package.json + +modules/ui/.babelrc diff --git a/config/schema.sql b/config/schema.sql index 06c2d25..6aa6d4f 100644 --- a/config/schema.sql +++ b/config/schema.sql @@ -86,6 +86,9 @@ INSERT INTO config VALUES ('unit', 'C', 'select', 'Temperature Unit', '["C","F"] INSERT INTO config VALUES ('brewery_name', 'My Home Brewery', 'text', 'Your brewery name', NULL ); INSERT INTO config VALUES ('buzzer', 16, 'select', 'Buzzer GPIO', '[16,17,18,19,20]'); INSERT INTO config VALUES ('setup', 'YES', 'select', 'Show the Setup dialog', '["YES","NO"]'); +INSERT INTO config VALUES ('brew_name', '', 'text', 'Brew Name', NULL); +INSERT INTO config VALUES ('donation_notification', 'YES', 'select', 'Disable Donation Notification', '["YES","NO"]'); + CREATE TABLE actor ( diff --git a/config/version.yaml b/config/version.yaml new file mode 100644 index 0000000..13d683c --- /dev/null +++ b/config/version.yaml @@ -0,0 +1 @@ +3.0.1 \ No newline at end of file diff --git a/modules/__init__.py b/modules/__init__.py index ae139fb..0b59b00 100755 --- a/modules/__init__.py +++ b/modules/__init__.py @@ -63,3 +63,6 @@ cbpi.run_background_processes() +app.logger.info("##########################################") +app.logger.info("### STARTUP COMPLETE") +app.logger.info("##########################################") \ No newline at end of file diff --git a/modules/app_config.py b/modules/app_config.py index 10db8b2..96a5e0c 100644 --- a/modules/app_config.py +++ b/modules/app_config.py @@ -15,7 +15,9 @@ from modules.core.db import DBModel app = Flask(__name__) -logging.basicConfig(filename='./logs/app.log',level=logging.INFO) +FORMAT = '%(asctime)-15s - %(levelname)s - %(message)s' + +logging.basicConfig(filename='./logs/app.log',level=logging.INFO, format=FORMAT) app.config['SECRET_KEY'] = 'craftbeerpi' app.config['UPLOAD_FOLDER'] = './upload' @@ -45,7 +47,7 @@ class ComplexEncoder(json.JSONEncoder): return None app.json_encoder = ComplexEncoder -socketio = SocketIO(app, json=json) +socketio = SocketIO(app, json=json, logging=False) cbpi = CraftBeerPi(app, socketio) app.logger.info("##########################################") diff --git a/modules/base_plugins/brew_steps/__init__.py b/modules/base_plugins/brew_steps/__init__.py index 84c03b2..38190f8 100644 --- a/modules/base_plugins/brew_steps/__init__.py +++ b/modules/base_plugins/brew_steps/__init__.py @@ -7,6 +7,7 @@ from modules.core.step import StepBase from modules import cbpi + @cbpi.step class MashStep(StepBase): ''' @@ -69,6 +70,10 @@ class MashInStep(StepBase): kettle = StepProperty.Kettle("Kettle") s = False + @cbpi.action("Change Power") + def change_power(self): + self.actor_power(1, 50) + def init(self): ''' Initialize Step. This method is called once at the beginning of the step @@ -93,3 +98,125 @@ class MashInStep(StepBase): +@cbpi.step +class ChilStep(StepBase): + + timer = Property.Number("Timer in Minutes", configurable=True, default_value=0) + + @cbpi.action("Stat Timer") + def start(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + def reset(self): + self.stop_timer() + + + def finish(self): + pass + + def execute(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + if self.is_timer_finished() == True: + self.next() + +@cbpi.step +class PumpStep(StepBase): + + pump = StepProperty.Actor("Pump") + timer = Property.Number("Timer in Minutes", configurable=True, default_value=0) + + @cbpi.action("Stat Timer") + def start(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + def reset(self): + self.stop_timer() + + + def finish(self): + self.actor_off(int(self.pump)) + + def init(self): + self.actor_on(int(self.pump)) + + def execute(self): + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + if self.is_timer_finished() == True: + self.next() + +@cbpi.step +class BoilStep(StepBase): + ''' + Just put the decorator @cbpi.step on top of a method + ''' + # Properties + temp = Property.Number("Temperature", configurable=True, default_value=100) + kettle = StepProperty.Kettle("Kettle") + timer = Property.Number("Timer in Minutes", configurable=True, default_value=90) + hop_1 = Property.Number("Hop 1 Addition", configurable=True) + hop_1_added = Property.Number("",default_value=None) + + hop_2 = Property.Number("Hop 2 Addition", configurable=True) + hop_2_added = Property.Number("", default_value=None) + hop_3 = Property.Number("Hop 3 Addition", configurable=True) + hop_3_added = Property.Number("", default_value=None) + + def init(self): + ''' + Initialize Step. This method is called once at the beginning of the step + :return: + ''' + # set target tep + self.set_target_temp(self.temp, self.kettle) + + + + + @cbpi.action("Start Timer Now") + def start(self): + ''' + Custom Action which can be execute form the brewing dashboard. + All method with decorator @cbpi.action("YOUR CUSTOM NAME") will be available in the user interface + :return: + ''' + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + + def reset(self): + self.stop_timer() + self.set_target_temp(self.temp, self.kettle) + + def finish(self): + self.set_target_temp(0, self.kettle) + + + def check_hop_timer(self, number, value): + + if self.__getattribute__("hop_%s_added" % number) is not True and time.time() > ( + self.timer_end - (int(self.timer) * 60 - int(value) * 60)): + self.__setattr__("hop_%s_added" % number, True) + self.notify("Hop Alert", "Please add Hop %s" % number, timeout=None) + + def execute(self): + ''' + This method is execute in an interval + :return: + ''' + # Check if Target Temp is reached + if self.get_kettle_temp(self.kettle) >= int(self.temp): + # Check if Timer is Running + if self.is_timer_finished() is None: + self.start_timer(int(self.timer) * 60) + else: + self.check_hop_timer(1, self.hop_1) + self.check_hop_timer(2, self.hop_2) + self.check_hop_timer(3, self.hop_3) + # Check if timer finished and go to next step + if self.is_timer_finished() == True: + self.next() \ No newline at end of file diff --git a/modules/base_plugins/dummy_temp/__init__.py b/modules/base_plugins/dummy_temp/__init__.py index 089406d..6cfaa88 100644 --- a/modules/base_plugins/dummy_temp/__init__.py +++ b/modules/base_plugins/dummy_temp/__init__.py @@ -10,21 +10,37 @@ from modules.core.props import Property @cbpi.sensor class DummyTempSensor(SensorActive): + temp = Property.Number("Temperature", configurable=True, default_value=5) def get_unit(self): + ''' + :return: Unit of the sensor as string. Should not be longer than 3 characters + ''' return "°C" if self.get_config_parameter("unit", "C") == "C" else "°F" def stop(self): + ''' + Stop the sensor. Is called when the sensor config is updated or the sensor is deleted + :return: + ''' pass def execute(self): + ''' + Active sensor has to handle his own loop + :return: + ''' while self.is_running(): - self.data_received(self.temp) socketio.sleep(5) - + @classmethod + def init_global(cls): + ''' + Called one at the startup for all sensors + :return: + ''' diff --git a/modules/base_plugins/gpio_actor/__init__.py b/modules/base_plugins/gpio_actor/__init__.py index fe75689..5fee55b 100644 --- a/modules/base_plugins/gpio_actor/__init__.py +++ b/modules/base_plugins/gpio_actor/__init__.py @@ -57,6 +57,11 @@ class GPIOPWM(ActorBase): self.p.start(int(self.power)) def set_power(self, power): + ''' + Optional: Set the power of your actor + :param power: int value between 0 - 100 + :return: + ''' if power is not None: self.power = int(power) self.p.ChangeDutyCycle(self.power) @@ -87,7 +92,13 @@ class RelayBoard(ActorBase): class Dummy(ActorBase): def on(self, power=100): + ''' + Code to switch on the actor + :param power: int value between 0 - 100 + :return: + ''' print "ON" def off(self): print "OFF" + diff --git a/modules/buzzer/__init__.py b/modules/buzzer/__init__.py index 2eff869..d75eebe 100644 --- a/modules/buzzer/__init__.py +++ b/modules/buzzer/__init__.py @@ -43,8 +43,6 @@ class Buzzer(object): @cbpi.initalizer(order=0) def init(cbpi): - print "INIT BUZZER" - cbpi.app.logger.info("INIT BUZZER") gpio = cbpi.get_config_parameter("buzzer", 16) cbpi.buzzer = Buzzer(gpio) cbpi.beep() diff --git a/modules/config/__init__.py b/modules/config/__init__.py index 14cc4b0..fd749fe 100644 --- a/modules/config/__init__.py +++ b/modules/config/__init__.py @@ -25,6 +25,7 @@ class ConfigView(BaseView): if self.api.cache.get(self.cache_key) is not None: #self.pre_post_callback(self.api.cache.get(self.cache_key)[name]) + print self.api.cache.get(self.cache_key)[name] self.api.cache.get(self.cache_key)[name].__dict__.update(**update_data) m = self.model.update(**self.api.cache.get(self.cache_key)[name].__dict__) self.post_put_callback(self.api.cache.get(self.cache_key)[name]) @@ -51,7 +52,6 @@ class ConfigView(BaseView): cls.post_init_callback(value) cls.api.cache[cls.cache_key][value.name] = value - @cbpi.initalizer(order=1) def init(cbpi): print "INITIALIZE CONFIG MODULE" diff --git a/modules/core/core.py b/modules/core/core.py index 1caf28a..60a6045 100644 --- a/modules/core/core.py +++ b/modules/core/core.py @@ -1,3 +1,4 @@ +import inspect import pprint import sqlite3 @@ -28,6 +29,7 @@ class ActorAPI(object): self.app.logger.info("Init Actors") t = self.cache.get("actor_types") for key, value in t.iteritems(): + value.get("class").api = self value.get("class").init_global() for key in self.cache.get("actors"): @@ -73,12 +75,8 @@ class ActorAPI(object): if actor.state == 0: return - - actor.instance.off() actor.state = 0 - - self.emit("SWITCH_ACTOR", actor) class SensorAPI(object): @@ -231,7 +229,6 @@ class CraftBeerPi(ActorAPI, SensorAPI): self.emit("NOTIFY", msg) def beep(self): - if self.buzzer is not None: self.buzzer.beep() @@ -286,6 +283,15 @@ class CraftBeerPi(ActorAPI, SensorAPI): def actor(self, cls): return self.__parseProps("actor_types", cls) + def actor2(self, description="", power=True, **options): + + def decorator(f): + print f() + print options + print description + return f + return decorator + def sensor(self, cls): return self.__parseProps("sensor_types", cls) @@ -320,9 +326,13 @@ class CraftBeerPi(ActorAPI, SensorAPI): for m in members: if isinstance(tmpObj.__getattribute__(m), StepProperty.Number): t = tmpObj.__getattribute__(m) - self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "number", "configurable": t.configurable}) + print t.__dict__ + #self.cache[key][name]["properties"].append(t.__dict__) + self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "number", "configurable": t.configurable, "default_value": t.default_value}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Text): t = tmpObj.__getattribute__(m) + print t.__dict__ + #self.cache[key][name]["properties"].append(t.__dict__) self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "text", "configurable": t.configurable}) elif isinstance(tmpObj.__getattribute__(m), StepProperty.Select): t = tmpObj.__getattribute__(m) @@ -420,7 +430,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): self.app.logger.info("Invoke Init") self.cache["init"] = sorted(self.cache["init"], key=lambda k: k['order']) for i in self.cache.get("init"): - self.app.logger.info("-> %s " % i.get("function").__name__) + self.app.logger.info("INITIALIZER - METHOD %s PAHT %s: " % (i.get("function").__name__, str(inspect.getmodule(i.get("function")).__file__) )) i.get("function")(self) diff --git a/modules/core/db.py b/modules/core/db.py index bb8935e..ef111ba 100644 --- a/modules/core/db.py +++ b/modules/core/db.py @@ -42,13 +42,15 @@ class DBModel(object): def get_all(cls): cur = get_db().cursor() if cls.__order_by__ is not None: - cur.execute("SELECT * FROM %s ORDER BY '%s'" % (cls.__table_name__,cls.__order_by__)) + + cur.execute("SELECT * FROM %s ORDER BY %s.'%s'" % (cls.__table_name__,cls.__table_name__,cls.__order_by__)) else: cur.execute("SELECT * FROM %s" % cls.__table_name__) if cls.__as_array__ is True: result = [] for r in cur.fetchall(): + result.append( cls(r)) else: result = {} @@ -104,7 +106,7 @@ class DBModel(object): else: data = data + (kwargs.get(f),) - print query, data + cur.execute(query, data) get_db().commit() i = cur.lastrowid diff --git a/modules/core/hardware.py b/modules/core/hardware.py index 85f53e8..7f69c29 100644 --- a/modules/core/hardware.py +++ b/modules/core/hardware.py @@ -10,6 +10,9 @@ class Base(object): def get_config_parameter(self, key, default_value): return self.api.get_config_parameter(key, default_value) + def sleep(self, seconds): + self.api.socketio.sleep(seconds) + def init(self): print "INIT BASE" diff --git a/modules/core/props.py b/modules/core/props.py index efef745..aaaca85 100644 --- a/modules/core/props.py +++ b/modules/core/props.py @@ -9,10 +9,11 @@ class Property(object): self.options = options class Number(PropertyType): - def __init__(self, label, configurable=False, default_value=0, unit=""): + def __init__(self, label, configurable=False, default_value=None, unit=""): PropertyType.__init__(self) self.label = label self.configurable = configurable + self.default_value = default_value class Text(PropertyType): def __init__(self, label, configurable=False, default_value=""): diff --git a/modules/notification/__init__.py b/modules/notification/__init__.py index 4098749..158beef 100644 --- a/modules/notification/__init__.py +++ b/modules/notification/__init__.py @@ -44,9 +44,8 @@ def init(cbpi): :param app: the flask app :return: None """ - print "INITIALIZE MESSAGE MODULE" - - msg = {"id": len(cbpi.cache["messages"]), "type": "info", "headline": "Support CraftBeerPi with your donation", "message": "You will find the PayPay Donation button in the system menu" , "read": False} - cbpi.cache["messages"].append(msg) + if cbpi.get_config_parameter("donation_notification", "YES") == "YES": + msg = {"id": len(cbpi.cache["messages"]), "type": "info", "headline": "Support CraftBeerPi with your donation", "message": "You will find the PayPay Donation button in the system menu" , "read": False} + cbpi.cache["messages"].append(msg) NotificationView.register(cbpi.app, route_base='/api/notification') diff --git a/modules/steps/__init__.py b/modules/steps/__init__.py index 5953ed9..31b2100 100755 --- a/modules/steps/__init__.py +++ b/modules/steps/__init__.py @@ -1,5 +1,5 @@ import time -from flask import json +from flask import json, request from flask_classy import route from modules import DBModel, cbpi, get_db @@ -21,9 +21,9 @@ class Step(DBModel): return r.get("order") @classmethod - def get_by_state(cls, state): + def get_by_state(cls, state, order=True): cur = get_db().cursor() - cur.execute("SELECT * FROM %s WHERE state = ?" % cls.__table_name__, state) + cur.execute("SELECT * FROM %s WHERE state = ? ORDER BY %s.'order'" % (cls.__table_name__,cls.__table_name__,), state) r = cur.fetchone() if r is not None: return cls(r) @@ -54,6 +54,16 @@ class Step(DBModel): cur.execute("UPDATE %s SET stepstate = ? WHERE id =?" % cls.__table_name__, (json.dumps(state),id)) get_db().commit() + @classmethod + def sort(cls, new_order): + cur = get_db().cursor() + + for e in new_order: + + cur.execute("UPDATE %s SET '%s' = ? WHERE id = ?" % (cls.__table_name__, "order"), (e[1], e[0])) + get_db().commit() + + class StepView(BaseView): model = Step def pre_post_callback(self, data): @@ -61,6 +71,14 @@ class StepView(BaseView): data["order"] = 1 if order is None else order + 1 data["state"] = "I" + @route('/sort', methods=["POST"]) + def sort_steps(self): + + Step.sort(request.json) + + cbpi.emit("UPDATE_ALL_STEPS", self.model.get_all()) + return ('', 204) + @route('/', methods=["DELETE"]) def deleteAll(self): self.model.delete_all() @@ -185,8 +203,10 @@ def init_after_startup(): if type_cfg is None: # step type not found. cant restart step return + + print "STEP SATE......", step.stepstate cfg = step.stepstate.copy() - cfg.update(dict(api=cbpi, id=step.id, timer_end=None, managed_fields=get_manged_fields_as_array(type_cfg))) + cfg.update(dict(api=cbpi, id=step.id, managed_fields=get_manged_fields_as_array(type_cfg))) instance = type_cfg.get("class")(**cfg) instance.init() cbpi.cache["active_step"] = instance @@ -214,9 +234,7 @@ def execute_step(): step = cbpi.cache.get("active_step") if step is not None: step.execute() - if step.is_dirty(): - state = {} for field in step.managed_fields: state[field] = step.__getattribute__(field) diff --git a/modules/ui/endpoints.py b/modules/ui/endpoints.py index cc1d2e2..77999dc 100644 --- a/modules/ui/endpoints.py +++ b/modules/ui/endpoints.py @@ -9,6 +9,8 @@ def init(cbpi): cbpi.app.register_blueprint(react, url_prefix='/ui') + + @react.route('/') def index(): return react.send_static_file("index.html") diff --git a/modules/ui/src/App.css b/modules/ui/src/App.css new file mode 100644 index 0000000..59a7928 --- /dev/null +++ b/modules/ui/src/App.css @@ -0,0 +1,16 @@ +.App { + +} + +.container { + padding-right: 5px; + padding-left: 5px; + margin-right: auto; + margin-left: auto; +} + +.container-fluid { + padding-right: 5px; + padding-left: 5px; + +} diff --git a/modules/ui/src/index.css b/modules/ui/src/index.css new file mode 100644 index 0000000..b4cc725 --- /dev/null +++ b/modules/ui/src/index.css @@ -0,0 +1,5 @@ +body { + margin: 0; + padding: 0; + font-family: sans-serif; +} diff --git a/modules/ui/static/bundle.js b/modules/ui/static/bundle.js index 8e4f222..d3b3f58 100644 --- a/modules/ui/static/bundle.js +++ b/modules/ui/static/bundle.js @@ -1,27 +1,27 @@ -!function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var r=n(1),i=o(r),a=n(20),s=o(a),l=n(349),u=o(l);n(794),s.default.render(i.default.createElement(u.default,null),document.getElementById("root"))},function(e,t,n){"use strict";e.exports=n(34)},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(d===clearTimeout)return clearTimeout(e);if((d===o||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function a(){m&&p&&(m=!1,p.length?h=p.concat(h):v=-1,h.length&&s())}function s(){if(!m){var e=r(a);m=!0;for(var t=h.length;t;){for(p=h,h=[];++v1)for(var n=1;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}},function(e,t,n){var o,r;/*! +!function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var r=n(1),i=o(r),a=n(18),s=o(a),l=n(384),u=o(l);n(925),s.default.render(i.default.createElement(u.default,null),document.getElementById("root"))},function(e,t,n){"use strict";e.exports=n(71)},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(d===clearTimeout)return clearTimeout(e);if((d===o||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function a(){m&&p&&(m=!1,p.length?h=p.concat(h):v=-1,h.length&&s())}function s(){if(!m){var e=r(a);m=!0;for(var t=h.length;t;){for(p=h,h=[];++v1)for(var n=1;n1?t-1:0),o=1;o1?t-1:0),o=1;o2?o-2:0),i=2;i=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}},function(e,t,n){(function(e){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){return function(){for(var t=arguments.length,n=Array(t),o=0;o1?t-1:0),o=1;o1?t-1:0),o=1;o2?o-2:0),i=2;i2?o-2:0);for(var r=2;r2?o-2:0);for(var r=2;r0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"UPDATE_CONFIG":return i({},e,{list:i({},e.list,r({},t.data.name,t.data))});case"LOAD_STATE":return i({},e,{list:t.payload.config});default:return e}});t.default=c},function(e,t){"use strict";function n(){for(var e=arguments.length,t=Array(e),n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxField=t.SelectField=t.SliderField=t.NumberField=t.TextField=void 0;var u=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:void 0;if(void 0===e){var t=this.props.form;e={};for(var n in t)switch(t[n].type){case"checkbox":e[t[n].name]=!1;break;default:e[t[n].name]=""}}else this.props.configfield&&!e.hasOwnProperty("config")&&(e.config={});this.setState({showModal:!0,data:e})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_clear_config",value:function(e){var t={};for(var n in e)t[e[n].name]="";return t}},{key:"_handle",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(n)this.setState({data:(0,m.default)(this.state.data,{config:r({},e.name,{$set:t.target.value})})});else if(e.clear_config){var o,i=""==t.target.value?{}:this._clear_config(this.props.types[t.target.value].properties);this.setState({data:(0,m.default)(this.state.data,(o={},r(o,e.name,{$set:t.target.value}),r(o,"config",{$set:i}),o))})}else this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:t.target.value}))})}},{key:"_handleSlider",value:function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:t}))})}},{key:"_handleCheckBox",value:function(e,t){this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:!this.state.data[e.name]}))})}},{key:"render_field",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.condition||e.condition(this.state.data))switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],label:e.label});case"actor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],label:e.label});case"select":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:e.options});case"checkbox":return f.default.createElement(x,{checked:this.state.data[e.name]||!1,onChange:function(t){n._handleCheckBox(e,t)},value:this.state.data[e.name],key:t,label:e.label});case"slider":return f.default.createElement(E,{key:t,marks:e.marks,min:e.min,max:e.max,onChange:function(t){n._handleSlider(e,t)},value:this.state.data[e.name]});default:return}}},{key:"render_field_config",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e.configurable)switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],label:e.label});case"actor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],label:e.label});case"select":return f.default.createElement(_,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:e.options});default:return}}},{key:"render_config",value:function(){var e=this;if(void 0!==this.state.data[this.props.configfield]&&""!==this.state.data[this.props.configfield]){var t=this.state.data[this.props.configfield];if(this.props.types.hasOwnProperty(t)){var n=this.props.types[t].properties||[];return n.map(function(t,n){return e.render_field_config(t,n,!0)})}return f.default.createElement("div",null,'Configuration Error. Type "',t,'" configured but not found')}}},{key:"_add",value:function(){this.props.btn_add(this.state.data)===!0&&this.hide()}},{key:"_save",value:function(){this.props.btn_save(this.state.data)===!0&&this.hide()}},{key:"_delete",value:function(){this.props.btn_delete(this.state.data)===!0&&this.hide()}},{key:"render_body",value:function(){var e=this,t=this.props.form;return this.props.configfield?f.default.createElement(p.Row,{className:"show-grid"},f.default.createElement(p.Col,{xs:12,sm:6,md:6},t.map(function(t,n){return e.render_field(t,n)})),f.default.createElement(p.Col,{xs:12,sm:6,md:6},this.render_config())):t.map(function(t,n){return e.render_field(t,n)})}},{key:"render",value:function(){var e=this.props,t=e.add,n=e.save,o=e.remove,r=e.title,i=e.bsSize,a=e.btn_save_label,s=e.btn_add_label,l=e.btn_delete_label;return f.default.createElement(p.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},f.default.createElement(p.Modal.Header,null,f.default.createElement(p.Modal.Title,null,r||"Modal")),f.default.createElement(p.Modal.Body,null,this.render_body()),f.default.createElement(p.Modal.Footer,null,f.default.createElement(p.Button,{onClick:this.hide.bind(this)},"Close"),o?f.default.createElement(p.Button,{className:"btn-danger",onClick:this._delete.bind(this)},l):void 0,t?f.default.createElement(p.Button,{className:"btn-success",onClick:this._add.bind(this)},s):void 0,n?f.default.createElement(p.Button,{className:"btn-success",onClick:this._save.bind(this)},a):void 0))}}]),t}(d.Component);w.defaultProps={sensors:{},kettle:{},actors:{},bsSize:"small",btn_save_label:"Update",btn_add_label:"Add",btn_delete_label:"Delete"},t.default=w},function(e,t,n){(function(t){"use strict";var o=null;if("production"!==t.env.NODE_ENV){var r=n(274);o=r}e.exports={debugTool:o}}).call(t,n(2))},function(e,t,n){(function(t){"use strict";function o(){k.ReactReconcileTransaction&&x?void 0:"production"!==t.env.NODE_ENV?y(!1,"ReactUpdates: must inject a reconcile transaction class and batching strategy"):c("123")}function r(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=f.getPooled(),this.reconcileTransaction=k.ReactReconcileTransaction.getPooled(!0)}function i(e,t,n,r,i,a){return o(),x.batchedUpdates(e,t,n,r,i,a)}function a(e,t){return e._mountOrder-t._mountOrder}function s(e){var n=e.dirtyComponentsLength;n!==g.length?"production"!==t.env.NODE_ENV?y(!1,"Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).",n,g.length):c("124",n,g.length):void 0,g.sort(a),b++;for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{actors:t.payload.actors,config_type:t.payload.actor_types});case"UPDATE_ACTOR":case"ADD_ACTOR":return i({},e,{actors:i({},e.actors,r({},t.payload.id,t.payload))});case"DELETE_ACTOR":return delete e.actors[t.id],i({},e,{actors:i({},e.actors)});case"SWITCH_ACTOR":return i({},e,{actors:i({},e.actors,r({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1){for(var E=Array(b),_=0;_1){for(var b=Array(g),E=0;E0&&void 0!==arguments[0]?arguments[0]:d(),t=arguments[1];switch(t.type){case"LOAD_STATE":return a({},e,{list:t.payload.fermenter,config_type:t.payload.fermentation_controller_types});case"DELETE_FERMENTER":return delete e.list[t.id],a({},e,{list:a({},e.list)});case"UPDATE_FERMENTER_TARGET_TEMP":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"UPDATE_FERMENTER_BREWNAME":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{brewname:{$set:t.payload.brewname}})))});case"ADD_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:[].concat(r(e.list[t.payload.fermenter_id].steps),[t.payload])})))});case"DELETE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.filter(function(e,n){return e.id!==t.payload.id})})))});case"UPDATE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"UPDATE_FERMENTER_STEPS":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"ADD_FERMENTER":case"UPDATE_FERMENTER":return a({},e,{list:a({},e.list,i({},t.payload.id,t.payload))});default:return e}});t.default=f},function(e,t,n){e.exports={default:n(409),__esModule:!0}},function(e,t,n){var o=n(77);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var o=n(45),r=n(80);e.exports=n(50)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var o=n(214),r=n(125);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t){"use strict";function n(e){return e&&e.ownerDocument||document}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(t)do if(t===e)return!0;while(t=t.parentNode);return!1}Object.defineProperty(t,"__esModule",{value:!0});var i=n(46),a=o(i);t.default=function(){return a.default?function(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):r(e,t)}:r}(),e.exports=t.default},function(e,t,n){(function(e){function o(e,n){var o="b"+t.packets[e.type]+e.data.data;return n(o)}function r(e,n,o){if(!n)return t.encodeBase64Packet(e,o);var r=e.data,i=new Uint8Array(r),a=new Uint8Array(1+r.byteLength);a[0]=g[e.type];for(var s=0;s1?{type:b[r],data:e.substring(1)}:{type:b[r]}:E}var i=new Uint8Array(e),r=i[0],a=f(e,1);return _&&"blob"===n&&(a=new _([a])),{type:b[r],data:a}},t.decodeBase64Packet=function(e,t){var n=b[e.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:e.substr(1)}};var o=u.decode(e.substr(1));return"blob"===t&&_&&(o=new _([o])),{type:n,data:o}},t.encodePayload=function(e,n,o){function r(e){return e.length+":"+e}function i(e,o){t.encodePacket(e,!!a&&n,!0,function(e){o(null,r(e))})}"function"==typeof n&&(o=n,n=null);var a=d(e);return n&&a?_&&!y?t.encodePayloadAsBlob(e,o):t.encodePayloadAsArrayBuffer(e,o):e.length?void l(e,i,function(e,t){return o(t.join(""))}):o("0:")},t.decodePayload=function(e,n,o){if("string"!=typeof e)return t.decodePayloadAsBinary(e,n,o);"function"==typeof n&&(o=n,n=null);var r;if(""==e)return o(E,0,1);for(var i,a,s="",l=0,u=e.length;l0;){for(var s=new Uint8Array(r),l=0===s[0],u="",c=1;255!=s[c];c++){if(u.length>310){a=!0;break}u+=s[c]}if(a)return o(E,0,1);r=f(r,2+u.length),u=parseInt(u);var d=f(r,0,u);if(l)try{d=String.fromCharCode.apply(null,new Uint8Array(d))}catch(e){var p=new Uint8Array(d);d="";for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:"Question",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ARE YOU SURE?",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0};this.setState({showModal:!0,title:e,message:t,confirm:n,cancel:o})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_confirm",value:function(){this.props.confirm()===!0&&this.hide()}},{key:"_cancel",value:function(){this.props.cancel()===!0&&this.hide()}},{key:"render",value:function(){var e=this.props,t=e.cancel,n=e.confirm,o=e.message,r=e.title,i=e.bsSize,a=e.btn_confirm_label,s=e.btn_cancel_label;return u.default.createElement(c.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},u.default.createElement(c.Modal.Header,null,u.default.createElement(c.Modal.Title,null,r||"Modal")),u.default.createElement(c.Modal.Body,null,o),u.default.createElement(c.Modal.Footer,null,n?u.default.createElement(c.Button,{className:"btn-success",onClick:this._confirm.bind(this)},a):void 0,t?u.default.createElement(c.Button,{className:"btn-danger",onClick:this._cancel.bind(this)},s):void 0))}}]),t}(l.Component);d.defaultProps={bsSize:"small",btn_confirm_label:"Confirm",btn_cancel_label:"Cancel"},t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{sensors:t.payload.sensors,config_type:t.payload.sensor_types});case"SENSOR_UPDATE":return console.log("SENSOR_UPDATE",t.payload),i({},e,{sensors:i({},e.sensors,r({},t.payload.id,t.payload))});case"DELETE_SENSOR":return delete e.sensors[t.id],i({},e,{sensors:i({},e.sensors)});case"ADD_SENSOR":case"UPDATE_SENSOR":return i({},e,{sensors:i({},e.sensors,r({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.checkout_tag=t.git_pull=t.get_git_status=t.reboot=t.shutdown=t.set_time=t.load_state=void 0;var r=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_GIT_STATUS":return r({},e,{head:t.payload.headcommit,tags:t.payload.tags,branchname:t.payload.branchname,loading:!1});case"GIT_LOADING_STARTED":return r({},e,{loading:!0});case"GIT_LOADING_FINISED":return r({},e,{loading:!1});case"LOAD_STATE":return r({},e,{ready:!0});default:return e}});t.default=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(203),i=o(r);t.default=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"UPDATE_CONFIG":return i({},e,{list:i({},e.list,r({},t.data.name,t.data))});case"LOAD_STATE":return i({},e,{list:t.payload.config});default:return e}});t.default=c},function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=o},function(e,t){"use strict";function n(){for(var e=arguments.length,t=Array(e),n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxField=t.SelectField=t.SliderField=t.NumberField=t.TextField=void 0;var u=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:void 0;if(void 0===e){var t=this.props.form;e={};for(var n in t)switch(t[n].type){case"checkbox":e[t[n].name]=!1;break;default:e[t[n].name]=""}}else this.props.configfield&&!e.hasOwnProperty("config")&&(e.config={});this.setState({showModal:!0,data:e})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_clear_config",value:function(e){var t={};for(var n in e)t[e[n].name]=e[n].default_value;return t}},{key:"_handle",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(n)this.setState({data:(0,m.default)(this.state.data,{config:r({},e.name,{$set:t.target.value})})});else if(e.clear_config){var o,i=""==t.target.value?{}:this._clear_config(this.props.types[t.target.value].properties);this.setState({data:(0,m.default)(this.state.data,(o={},r(o,e.name,{$set:t.target.value}),r(o,"config",{$set:i}),o))})}else this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:t.target.value}))})}},{key:"_handleSlider",value:function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:t}))})}},{key:"_handleCheckBox",value:function(e,t){this.setState({data:(0,m.default)(this.state.data,r({},e.name,{$set:!this.state.data[e.name]}))})}},{key:"render_field",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.condition||e.condition(this.state.data))switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],label:e.label});case"actor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],label:e.label});case"select":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data[e.name],key:t,label:e.label,options:e.options});case"checkbox":return f.default.createElement(_,{checked:this.state.data[e.name]||!1,onChange:function(t){n._handleCheckBox(e,t)},value:this.state.data[e.name],key:t,label:e.label});case"slider":return f.default.createElement(x,{key:t,marks:e.marks,min:e.min,max:e.max,onChange:function(t){n._handleSlider(e,t)},value:this.state.data[e.name]});default:return}}},{key:"render_field_config",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(console.log("FIELD",e),e.configurable)switch(e.type){case"text":return f.default.createElement(g,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],label:e.label});case"actor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.actors});case"sensor":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.sensors});case"kettle":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:this.props.kettle});case"number":return f.default.createElement(b,{key:t,onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],label:e.label});case"select":return f.default.createElement(E,{onChange:function(t){n._handle(e,t,o)},value:this.state.data.config[e.name],key:t,label:e.label,options:e.options});default:return}}},{key:"render_config",value:function(){var e=this;if(void 0!==this.state.data[this.props.configfield]&&""!==this.state.data[this.props.configfield]){var t=this.state.data[this.props.configfield];if(this.props.types.hasOwnProperty(t)){var n=this.props.types[t].properties||[];return n.map(function(t,n){return e.render_field_config(t,n,!0)})}return f.default.createElement("div",null,'Configuration Error. Type "',t,'" configured but not found')}}},{key:"_add",value:function(){this.props.btn_add(this.state.data)===!0&&this.hide()}},{key:"_save",value:function(){this.props.btn_save(this.state.data)===!0&&this.hide()}},{key:"_delete",value:function(){this.props.btn_delete(this.state.data)===!0&&this.hide()}},{key:"render_body",value:function(){var e=this,t=this.props.form;return this.props.configfield?f.default.createElement(p.Row,{className:"show-grid"},f.default.createElement(p.Col,{xs:12,sm:6,md:6},t.map(function(t,n){return e.render_field(t,n)})),f.default.createElement(p.Col,{xs:12,sm:6,md:6},this.render_config())):t.map(function(t,n){return e.render_field(t,n)})}},{key:"render",value:function(){var e=this.props,t=e.add,n=e.save,o=e.remove,r=e.title,i=e.bsSize,a=e.btn_save_label,s=e.btn_add_label,l=e.btn_delete_label;return f.default.createElement(p.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},f.default.createElement(p.Modal.Header,null,f.default.createElement(p.Modal.Title,null,r||"Modal")),f.default.createElement(p.Modal.Body,null,this.render_body()),f.default.createElement(p.Modal.Footer,null,f.default.createElement(p.Button,{onClick:this.hide.bind(this)},"Close"),o?f.default.createElement(p.Button,{className:"btn-danger",onClick:this._delete.bind(this)},l):void 0,t?f.default.createElement(p.Button,{className:"btn-success",onClick:this._add.bind(this)},s):void 0,n?f.default.createElement(p.Button,{className:"btn-success",onClick:this._save.bind(this)},a):void 0))}}]),t}(d.Component);w.defaultProps={sensors:{},kettle:{},actors:{},bsSize:"small",btn_save_label:"Update",btn_add_label:"Add",btn_delete_label:"Delete"},t.default=w},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o=0;return p.default.Children.map(e,function(e){return p.default.isValidElement(e)?t.call(n,e,o++):e})}function i(e,t,n){var o=0;p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&t.call(n,e,o++)})}function a(e){var t=0;return p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&++t}),t}function s(e,t,n){var o=0,r=[];return p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&t.call(n,e,o++)&&r.push(e)}),r}function l(e,t,n){var o=0,r=void 0;return p.default.Children.forEach(e,function(e){r||p.default.isValidElement(e)&&t.call(n,e,o++)&&(r=e)}),r}function u(e,t,n){var o=0,r=!0;return p.default.Children.forEach(e,function(e){r&&p.default.isValidElement(e)&&(t.call(n,e,o++)||(r=!1))}),r}function c(e,t,n){var o=0,r=!1;return p.default.Children.forEach(e,function(e){r||p.default.isValidElement(e)&&t.call(n,e,o++)&&(r=!0)}),r}function d(e){var t=[];return p.default.Children.forEach(e,function(e){p.default.isValidElement(e)&&t.push(e)}),t}t.__esModule=!0;var f=n(1),p=o(f);t.default={map:r,forEach:i,count:a,find:l,filter:s,every:u,some:c,toArray:d},e.exports=t.default},function(e,t,n){(function(t){"use strict";function o(e){var t=Function.prototype.toString,n=Object.prototype.hasOwnProperty,o=RegExp("^"+t.call(n).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");try{var r=t.call(e);return o.test(r)}catch(e){return!1}}function r(e){var t=u(e);if(t){var n=t.childIDs;c(e),n.forEach(r)}}function i(e,t,n){return"\n in "+(e||"Unknown")+(t?" (at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+")":n?" (created by "+n+")":"")}function a(e){return null==e?"#empty":"string"==typeof e||"number"==typeof e?"#text":"string"==typeof e.type?e.type:e.type.displayName||e.type.name||"Unknown"}function s(e){var n,o=N.getDisplayName(e),r=N.getElement(e),a=N.getOwnerID(e);return a&&(n=N.getDisplayName(a)),"production"!==t.env.NODE_ENV?g(r,"ReactComponentTreeHook: Missing React element for debugID %s when building stack",e):void 0,i(o,r&&r._source,n)}var l,u,c,d,f,p,h,m=n(72),v=n(40),y=n(12),g=n(13),b="function"==typeof Array.from&&"function"==typeof Map&&o(Map)&&null!=Map.prototype&&"function"==typeof Map.prototype.keys&&o(Map.prototype.keys)&&"function"==typeof Set&&o(Set)&&null!=Set.prototype&&"function"==typeof Set.prototype.keys&&o(Set.prototype.keys);if(b){var x=new Map,E=new Set;l=function(e,t){x.set(e,t)},u=function(e){return x.get(e)},c=function(e){x.delete(e)},d=function(){return Array.from(x.keys())},f=function(e){E.add(e)},p=function(e){E.delete(e)},h=function(){return Array.from(E.keys())}}else{var _={},w={},C=function(e){return"."+e},O=function(e){return parseInt(e.substr(1),10)};l=function(e,t){var n=C(e);_[n]=t},u=function(e){var t=C(e);return _[t]},c=function(e){var t=C(e);delete _[t]},d=function(){return Object.keys(_).map(O)},f=function(e){var t=C(e);w[t]=!0},p=function(e){var t=C(e);delete w[t]},h=function(){return Object.keys(w).map(O)}}var k=[],N={onSetChildren:function(e,n){var o=u(e);o?void 0:"production"!==t.env.NODE_ENV?y(!1,"Item must have been set"):m("144"),o.childIDs=n;for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{actors:t.payload.actors,config_type:t.payload.actor_types});case"UPDATE_ACTOR":case"ADD_ACTOR":return i({},e,{actors:i({},e.actors,r({},t.payload.id,t.payload))});case"DELETE_ACTOR":return delete e.actors[t.id],i({},e,{actors:i({},e.actors)});case"SWITCH_ACTOR":return i({},e,{actors:i({},e.actors,r({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var o=n(60),r=n(233),i=n(152),a=Object.defineProperty;t.f=n(51)?Object.defineProperty:function(e,t,n){if(o(e),t=i(t,!0),o(n),r)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){(function(t){"use strict";function o(e,t){return(e&t)===t}var r=n(15),i=n(12),a={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var n=a,s=e.Properties||{},u=e.DOMAttributeNamespaces||{},c=e.DOMAttributeNames||{},d=e.DOMPropertyNames||{},f=e.DOMMutationMethods||{};e.isCustomAttribute&&l._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var p in s){l.properties.hasOwnProperty(p)?"production"!==t.env.NODE_ENV?i(!1,"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",p):r("48",p):void 0;var h=p.toLowerCase(),m=s[p],v={attributeName:h,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseProperty:o(m,n.MUST_USE_PROPERTY),hasBooleanValue:o(m,n.HAS_BOOLEAN_VALUE),hasNumericValue:o(m,n.HAS_NUMERIC_VALUE),hasPositiveNumericValue:o(m,n.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:o(m,n.HAS_OVERLOADED_BOOLEAN_VALUE)};if(v.hasBooleanValue+v.hasNumericValue+v.hasOverloadedBooleanValue<=1?void 0:"production"!==t.env.NODE_ENV?i(!1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",p):r("50",p),"production"!==t.env.NODE_ENV&&(l.getPossibleStandardName[h]=p),c.hasOwnProperty(p)){var y=c[p];v.attributeName=y,"production"!==t.env.NODE_ENV&&(l.getPossibleStandardName[y]=p)}u.hasOwnProperty(p)&&(v.attributeNamespace=u[p]),d.hasOwnProperty(p)&&(v.propertyName=d[p]),f.hasOwnProperty(p)&&(v.mutationMethod=f[p]),l.properties[p]=v}}},s=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",l={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:s,ATTRIBUTE_NAME_CHAR:s+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:"production"!==t.env.NODE_ENV?{autofocus:"autoFocus"}:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t1){for(var x=Array(b),E=0;E1){for(var b=Array(g),x=0;x0&&void 0!==arguments[0]?arguments[0]:d(),t=arguments[1];switch(t.type){case"LOAD_STATE":return a({},e,{list:t.payload.fermenter,config_type:t.payload.fermentation_controller_types});case"DELETE_FERMENTER":return delete e.list[t.id],a({},e,{list:a({},e.list)});case"UPDATE_FERMENTER_TARGET_TEMP":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"UPDATE_FERMENTER_BREWNAME":return a({},e,{list:a({},e.list,i({},t.payload.id,(0,c.default)(e.list[t.payload.id],{brewname:{$set:t.payload.brewname}})))});case"ADD_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:[].concat(r(e.list[t.payload.fermenter_id].steps),[t.payload])})))});case"DELETE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.filter(function(e,n){return e.id!==t.payload.id})})))});case"UPDATE_FERMENTER_STEP":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"UPDATE_FERMENTER_STEPS":return a({},e,{list:a({},e.list,i({},t.payload.fermenter_id,a({},e.list[t.payload.fermenter_id],{steps:e.list[t.payload.fermenter_id].steps.map(function(e,n){return e.id!==t.payload.id?e:a({},e,t.payload)})})))});case"ADD_FERMENTER":case"UPDATE_FERMENTER":return a({},e,{list:a({},e.list,i({},t.payload.id,t.payload))});default:return e}});t.default=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1?{type:b[r],data:e.substring(1)}:{type:b[r]}:x}var i=new Uint8Array(e),r=i[0],a=f(e,1);return E&&"blob"===n&&(a=new E([a])),{type:b[r],data:a}},t.decodeBase64Packet=function(e,t){var n=b[e.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:e.substr(1)}};var o=u.decode(e.substr(1));return"blob"===t&&E&&(o=new E([o])),{type:n,data:o}},t.encodePayload=function(e,n,o){function r(e){return e.length+":"+e}function i(e,o){t.encodePacket(e,!!a&&n,!0,function(e){o(null,r(e))})}"function"==typeof n&&(o=n,n=null);var a=d(e);return n&&a?E&&!y?t.encodePayloadAsBlob(e,o):t.encodePayloadAsArrayBuffer(e,o):e.length?void l(e,i,function(e,t){return o(t.join(""))}):o("0:")},t.decodePayload=function(e,n,o){if("string"!=typeof e)return t.decodePayloadAsBinary(e,n,o);"function"==typeof n&&(o=n,n=null);var r;if(""==e)return o(x,0,1);for(var i,a,s="",l=0,u=e.length;l0;){for(var s=new Uint8Array(r),l=0===s[0],u="",c=1;255!=s[c];c++){if(u.length>310){a=!0;break}u+=s[c]}if(a)return o(x,0,1);r=f(r,2+u.length),u=parseInt(u);var d=f(r,0,u);if(l)try{d=String.fromCharCode.apply(null,new Uint8Array(d))}catch(e){var p=new Uint8Array(d);d="";for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:"Question",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ARE YOU SURE?",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0};this.setState({showModal:!0,title:e,message:t,confirm:n,cancel:o})}},{key:"hide",value:function(){this.setState({showModal:!1})}},{key:"_confirm",value:function(){this.props.confirm()===!0&&this.hide()}},{key:"_cancel",value:function(){this.props.cancel()===!0&&this.hide()}},{key:"render",value:function(){var e=this.props,t=e.cancel,n=e.confirm,o=e.message,r=e.title,i=e.bsSize,a=e.btn_confirm_label,s=e.btn_cancel_label;return u.default.createElement(c.Modal,{bsSize:i,animation:!1,show:this.state.showModal,onHide:this.hide.bind(this)},u.default.createElement(c.Modal.Header,null,u.default.createElement(c.Modal.Title,null,r||"Modal")),u.default.createElement(c.Modal.Body,null,o),u.default.createElement(c.Modal.Footer,null,n?u.default.createElement(c.Button,{className:"btn-success",onClick:this._confirm.bind(this)},a):void 0,t?u.default.createElement(c.Button,{className:"btn-danger",onClick:this._cancel.bind(this)},s):void 0))}}]),t}(l.Component);d.defaultProps={bsSize:"small",btn_confirm_label:"Confirm",btn_cancel_label:"Cancel"},t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{sensors:t.payload.sensors,config_type:t.payload.sensor_types});case"SENSOR_UPDATE":return console.log("SENSOR_UPDATE",t.payload),i({},e,{sensors:i({},e.sensors,r({},t.payload.id,t.payload))});case"DELETE_SENSOR":return delete e.sensors[t.id],i({},e,{sensors:i({},e.sensors)});case"ADD_SENSOR":case"UPDATE_SENSOR":return i({},e,{sensors:i({},e.sensors,r({},t.payload.id,t.payload))});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.steps,type:t.payload.step_types});case"UPDATE_ALL_STEPS":return i({},e,{list:t.payload});case"ADD_STEP":return i({},e,{list:[].concat(r(e.list),[t.payload])});case"REMOVE_STEP":return i({},e,{list:e.list.filter(function(e,n){return e.id!==t.payload})});case"UPDATE_STEP":return i({},e,{list:e.list.map(function(e,n){return e.id!==t.payload.id?e:i({},e,t.payload)})});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.checkout_tag=t.git_pull=t.get_git_status=t.reboot=t.shutdown=t.set_time=t.load_state=void 0;var r=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_GIT_STATUS":return r({},e,{head:t.payload.headcommit,tags:t.payload.tags,branchname:t.payload.branchname,loading:!1});case"GIT_LOADING_STARTED":return r({},e,{loading:!0});case"GIT_LOADING_FINISED":return r({},e,{loading:!1});case"LOAD_STATE":return r({},e,{ready:!0});default:return e}});t.default=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(430),i=o(r),a=n(429),s=o(a),l="function"==typeof s.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":typeof e};t.default="function"==typeof s.default&&"symbol"===l(i.default)?function(e){return"undefined"==typeof e?"undefined":l(e)}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":"undefined"==typeof e?"undefined":l(e)}},function(e,t,n){function o(e){if(e)return r(e)}function r(e){for(var t in o.prototype)e[t]=o.prototype[t];return e}e.exports=o,o.prototype.on=o.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},o.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},o.prototype.off=o.prototype.removeListener=o.prototype.removeAllListeners=o.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var o,r=0;r-1?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a("96",e),!c.plugins[o]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a("97",e),c.plugins[o]=n;var i=n.eventTypes;for(var d in i)r(i[d],n,d)?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",d,e):a("98",d,e)}}}function r(e,n,o){c.eventNameDispatchConfigs.hasOwnProperty(o)?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",o):a("99",o):void 0,c.eventNameDispatchConfigs[o]=e;var r=e.phasedRegistrationNames;if(r){for(var l in r)if(r.hasOwnProperty(l)){var u=r[l];i(u,n,o)}return!0}return!!e.registrationName&&(i(e.registrationName,n,o),!0)}function i(e,n,o){if(c.registrationNameModules[e]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a("100",e):void 0,c.registrationNameModules[e]=n,c.registrationNameDependencies[e]=n.eventTypes[o].dependencies,"production"!==t.env.NODE_ENV){var r=e.toLowerCase();c.possibleRegistrationNames[r]=e,"onDoubleClick"===e&&(c.possibleRegistrationNames.ondblclick=e)}}var a=n(14),s=n(11),l=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==t.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){l?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a("101"):void 0,l=Array.prototype.slice.call(e),o()},injectEventPluginsByName:function(e){var n=!1;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];u.hasOwnProperty(r)&&u[r]===i||(u[r]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",r):a("102",r):void 0,u[r]=i,n=!0)}n&&o()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var o in n)if(n.hasOwnProperty(o)){var r=c.registrationNameModules[n[o]];if(r)return r}}return null},_resetEventPlugins:function(){l=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var n=c.eventNameDispatchConfigs;for(var o in n)n.hasOwnProperty(o)&&delete n[o];var r=c.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i];if("production"!==t.env.NODE_ENV){var a=c.possibleRegistrationNames;for(var s in a)a.hasOwnProperty(s)&&delete a[s]}}};e.exports=c}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=p++,d[e[m]]={}),d[e[m]]}var r,i=n(16),a=n(86),s=n(680),l=n(284),u=n(290),c=n(175),d={},f=!1,p=0,h={topAbort:"abort",topAnimationEnd:u("animationend")||"animationend",topAnimationIteration:u("animationiteration")||"animationiteration",topAnimationStart:u("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:u("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,r=o(n),i=a.registrationNameDependencies[e],s=0;s0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.kettle,config_type:t.payload.controller_types});case"DELETE_KETTLE":return delete e.list[t.id],i({},e,{list:i({},e.list)});case"UPDATE_KETTLE_TARGET_TEMP":return i({},e,{list:i({},e.list,r({},t.payload.id,(0,u.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"ADD_KETTLE":case"UPDATE_KETTLE":return i({},e,{list:i({},e.list,r({},t.payload.id,t.payload))});default:return e}});t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:u(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.steps,type:t.payload.step_types});case"UPDATE_ALL_STEPS":return i({},e,{list:t.payload});case"ADD_STEP":return i({},e,{list:[].concat(r(e.list),[t.payload])});case"REMOVE_STEP":return i({},e,{list:e.list.filter(function(e,n){return e.id!==t.payload})});case"UPDATE_STEP":return i({},e,{list:e.list.map(function(e,n){return e.id!==t.payload.id?e:i({},e,t.payload)})});default:return e}});t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(392),i=o(r),a=n(391),s=o(a),l="function"==typeof s.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":typeof e};t.default="function"==typeof s.default&&"symbol"===l(i.default)?function(e){return"undefined"==typeof e?"undefined":l(e)}:function(e){return e&&"function"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?"symbol":"undefined"==typeof e?"undefined":l(e)}},function(e,t){e.exports=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var o=n(124);e.exports=function(e){return Object(o(e))}},function(e,t){var n=0,o=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(46),i=o(r),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,o){return e.addEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){t=t||window.event,t.target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0}()),t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o="",r="",i=t;if("string"==typeof t){if(void 0===n)return e.style[(0,a.default)(t)]||(0,c.default)(e).getPropertyValue((0,l.default)(t));(i={})[t]=n}Object.keys(i).forEach(function(t){var n=i[t];n||0===n?(0,m.default)(t)?r+=t+"("+n+") ":o+=(0,l.default)(t)+": "+n+";":(0,f.default)(e,(0,l.default)(t))}),r&&(o+=p.transform+": "+r+";"),e.style.cssText+=";"+o}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(227),a=o(i),s=n(482),l=o(s),u=n(477),c=o(u),d=n(478),f=o(d),p=n(226),h=n(479),m=o(h);e.exports=t.default},function(e,t,n){(function(o){function r(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var o="color: "+this.color;e=[e[0],o,"color: inherit"].concat(Array.prototype.slice.call(e,1));var r=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(r++,"%c"===e&&(i=r))}),e.splice(i,0,o),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof o&&"env"in o)return o.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(489),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=r,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=t.isBrowser="object"===("undefined"==typeof window?"undefined":n(window))&&"object"===("undefined"==typeof document?"undefined":n(document))&&9===document.nodeType;t.default=o},function(e,t,n){(function(o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(8),a=r(i),s=n(3),l=r(s),u=n(4),c=r(u),d=n(6),f=r(d),p=n(5),h=r(p),m=n(9),v=r(m),y=n(222),g=r(y),b=n(64),E=r(b),_=n(150),x=r(_),w=n(1),C=r(w),O=n(7),N=r(O),T=n(20),k=r(T),P=n(109),S=r(P),M=n(17),A=r(M),D=n(110),R=r(D),I=n(114),j=r(I),L=n(18),B=r(L),V=n(249),F=r(V),U=n(594),H=r(U),W=n(251),z=r(W),Y=n(10),G=n(23),q=r(G),X=n(641),K=n(28),$=r(K),J=z.default.defaultProps.bsRole,Z=H.default.defaultProps.bsRole,Q={dropup:N.default.bool,id:(0,R.default)(N.default.oneOfType([N.default.string,N.default.number])),componentClass:A.default,children:(0,S.default)((0,X.requiredRoles)(J,Z),(0,X.exclusiveRoles)(Z)),disabled:N.default.bool,pullRight:N.default.bool,open:N.default.bool,onClose:N.default.func,onToggle:N.default.func,onSelect:N.default.func,role:N.default.string,rootCloseEvent:N.default.oneOf(["click","mousedown"]),onMouseEnter:N.default.func,onMouseLeave:N.default.func},ee={componentClass:F.default},te=function(e){function t(n,o){(0,c.default)(this,t);var r=(0,f.default)(this,e.call(this,n,o));return r.handleClick=r.handleClick.bind(r),r.handleKeyDown=r.handleKeyDown.bind(r),r.handleClose=r.handleClose.bind(r),r._focusInDropdown=!1,r.lastOpenEventType=null,r}return(0,h.default)(t,e),t.prototype.componentDidMount=function(){this.focusNextOnOpen()},t.prototype.componentWillUpdate=function(e){!e.open&&this.props.open&&(this._focusInDropdown=(0,E.default)(k.default.findDOMNode(this.menu),(0,g.default)(document)))},t.prototype.componentDidUpdate=function(e){var t=this.props.open,n=e.open;t&&!n&&this.focusNextOnOpen(),!t&&n&&this._focusInDropdown&&(this._focusInDropdown=!1,this.focus())},t.prototype.handleClick=function(e){this.props.disabled||this.toggleOpen(e,{source:"click"})},t.prototype.handleKeyDown=function(e){if(!this.props.disabled)switch(e.keyCode){case x.default.codes.down:this.props.open?this.menu.focusNext&&this.menu.focusNext():this.toggleOpen(e,{source:"keydown"}),e.preventDefault();break;case x.default.codes.esc:case x.default.codes.tab:this.handleClose(e,{source:"keydown"})}},t.prototype.toggleOpen=function(e,t){var n=!this.props.open;n&&(this.lastOpenEventType=t.source),this.props.onToggle&&this.props.onToggle(n,e,t)},t.prototype.handleClose=function(e,t){this.props.open&&this.toggleOpen(e,t)},t.prototype.focusNextOnOpen=function(){var e=this.menu;e.focusNext&&("keydown"!==this.lastOpenEventType&&"menuitem"!==this.props.role||e.focusNext())},t.prototype.focus=function(){var e=k.default.findDOMNode(this.toggle);e&&e.focus&&e.focus()},t.prototype.renderToggle=function(e,t){var n=this,r=function(e){n.toggle=e};return"string"==typeof e.ref?"production"!==o.env.NODE_ENV?(0,B.default)(!1,"String refs are not supported on `` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:r=(0,q.default)(e.ref,r),(0,w.cloneElement)(e,(0,l.default)({},t,{ref:r,bsClass:(0,Y.prefix)(t,"toggle"),onClick:(0,q.default)(e.props.onClick,this.handleClick),onKeyDown:(0,q.default)(e.props.onKeyDown,this.handleKeyDown)}))},t.prototype.renderMenu=function(e,t){var n=this,r=t.id,i=t.onClose,s=t.onSelect,u=t.rootCloseEvent,c=(0,a.default)(t,["id","onClose","onSelect","rootCloseEvent"]),d=function(e){n.menu=e};return"string"==typeof e.ref?"production"!==o.env.NODE_ENV?(0,B.default)(!1,"String refs are not supported on `` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:d=(0,q.default)(e.ref,d),(0,w.cloneElement)(e,(0,l.default)({},c,{ref:d,labelledBy:r,bsClass:(0,Y.prefix)(c,"menu"),onClose:(0,q.default)(e.props.onClose,i,this.handleClose),onSelect:(0,q.default)(e.props.onSelect,s,function(e,t){return n.handleClose(t,{source:"select"})}),rootCloseEvent:u}))},t.prototype.render=function(){var e,t=this,n=this.props,o=n.componentClass,r=n.id,i=n.dropup,s=n.disabled,u=n.pullRight,c=n.open,d=n.onClose,f=n.onSelect,p=n.role,h=n.bsClass,m=n.className,y=n.rootCloseEvent,g=n.children,b=(0,a.default)(n,["componentClass","id","dropup","disabled","pullRight","open","onClose","onSelect","role","bsClass","className","rootCloseEvent","children"]);delete b.onToggle;var E=(e={},e[h]=!0,e.open=c,e.disabled=s,e);return i&&(E[h]=!1,E.dropup=!0),C.default.createElement(o,(0,l.default)({},b,{className:(0,v.default)(m,E)}),$.default.map(g,function(e){switch(e.props.bsRole){case J:return t.renderToggle(e,{id:r,disabled:s,open:c,role:p,bsClass:h});case Z:return t.renderMenu(e,{id:r,open:c,pullRight:u,bsClass:h,onClose:d,onSelect:f,rootCloseEvent:y});default:return e}}))},t}(C.default.Component);te.propTypes=Q,te.defaultProps=ee,(0,Y.bsClass)("dropdown",te);var ne=(0,j.default)(te,{open:"onToggle"});ne.Toggle=z.default,ne.Menu=H.default,t.default=ne,e.exports=t.default}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(4),s=o(a),l=n(6),u=o(l),c=n(5),d=o(c),f=n(9),p=o(f),h=n(1),m=o(h),v=n(7),y=o(v),g=n(299),b=o(g),E={in:y.default.bool,mountOnEnter:y.default.bool,unmountOnExit:y.default.bool,transitionAppear:y.default.bool,timeout:y.default.number,onEnter:y.default.func,onEntering:y.default.func,onEntered:y.default.func,onExit:y.default.func,onExiting:y.default.func,onExited:y.default.func},_={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1},x=function(e){function t(){return(0,s.default)(this,t),(0,u.default)(this,e.apply(this,arguments))}return(0,d.default)(t,e),t.prototype.render=function(){return m.default.createElement(b.default,(0,i.default)({},this.props,{className:(0,p.default)(this.props.className,"fade"),enteredClassName:"in",enteringClassName:"in"}))},t}(m.default.Component);x.propTypes=E,x.defaultProps=_,t.default=x,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=t.propTypes,o={},r={};return(0,a.default)(e).forEach(function(e){var t=e[0],i=e[1];n[t]?o[t]=i:r[t]=i}),[o,r]}t.__esModule=!0;var i=n(204),a=o(i);t.default=r,e.exports=t.default},function(e,t,n){"use strict";function o(e,t,n,o){return r.call(this,e,t,n,o)}var r=n(88),i=n(284),a=n(173),s={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:a,button:function(e){var t=e.button;return"which"in e?t:2===t?2:4===t?1:0},buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},pageX:function(e){return"pageX"in e?e.pageX:e.clientX+i.currentScrollLeft},pageY:function(e){return"pageY"in e?e.pageY:e.clientY+i.currentScrollTop}};r.augmentClass(o,s),e.exports=o},function(e,t,n){(function(t){"use strict";var o=n(14),r=n(11),i={},a={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(e,n,i,a,s,l,u,c){this.isInTransaction()?"production"!==t.env.NODE_ENV?r(!1,"Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction."):o("27"):void 0;var d,f;try{this._isInTransaction=!0,d=!0,this.initializeAll(0),f=e.call(n,i,a,s,l,u,c),d=!1}finally{try{if(d)try{this.closeAll(0)}catch(e){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return f},initializeAll:function(e){for(var t=this.transactionWrappers,n=e;n]/;e.exports=o},function(e,t,n){"use strict";var o,r=n(21),i=n(163),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,l=n(171),u=l(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{o=o||document.createElement("div"),o.innerHTML=""+t+"";for(var n=o.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(r.canUseDOM){var c=document.createElement("div");c.innerHTML=" ",""===c.innerHTML&&(u=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){function e(){for(var e=arguments.length,t=Array(e),o=0;o>",s=i||n;if(null==t[n])return new Error("The "+r+" `"+s+"` is required to make "+("`"+a+"` accessible for users of assistive ")+"technologies such as screen readers.");for(var l=arguments.length,u=Array(l>5?l-5:0),c=5;c>",l=a||o;if(null==n[o])return t?new Error("Required "+i+" `"+l+"` was not specified "+("in `"+s+"`.")):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var o="color: "+this.color;e=[e[0],o,"color: inherit"].concat(Array.prototype.slice.call(e,1));var r=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(r++,"%c"===e&&(i=r))}),e.splice(i,0,o),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof o&&"env"in o)return o.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(786),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=r,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){n&&(e._notifying=!0,n.call.apply(n,[e,o].concat(r)),e._notifying=!1),e._values[t]=o,e.unmounted||e.forceUpdate()}t.__esModule=!0;var i=n(799),a=o(i),s={shouldComponentUpdate:function(){return!this._notifying}};t.default=(0,a.default)(s,r),e.exports=t.default},function(e,t,n){(function(t){"use strict";function o(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function r(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(188):"undefined"!=typeof t&&(e=n(188)),e}var i=n(29),a=n(346),s={"Content-Type":"application/x-www-form-urlencoded"},l={adapter:r(),transformRequest:[function(e,t){ -return a(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(o(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(o(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){l.headers[e]={}}),i.forEach(["post","put","patch"],function(e){l.headers[e]=i.merge(s)}),e.exports=l}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(48),l=function(e,t){return{title:"Actor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.actor.config_type)}],types:e.actor.config_type,configfield:"type"}},u=function(e,t){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=o(r),a=n(13),s=n(30),l=o(s),u=n(48),c=(n(22),{0:i.default.createElement("strong",null,"0%"),25:"25%",50:"50%",75:"75%",100:{style:{color:"red"},label:i.default.createElement("strong",null,"100%")}}),d=function(e,t){return{title:t.actor_name?"Power for "+t.actor_name:"Power for Actor",form:[{label:"Power",name:"power",type:"slider",min:0,max:100,marks:c}]}},f=function(e,t){return{btn_save:function(n){return e((0,u.set_power)(t.actor_id,n.power)),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}};t.default=(0,a.connect)(d,f,null,{withRef:!0})(l.default)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_FILES":return r({},e,{files:t.payload});case"SENSOR_DATA_LOADED":return r({},e,{chart_config:r({},e.chart_config,{series:t.payload})});case"UPDATE_ACTIONS":return r({},e,{chart_config:r({},e.chart_config,{xAxis:r({},e.chart_config.xAxis,{plotLines:t.payload})})});default:return e}});t.default=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(72),l=function(e,t){return{title:"Sensor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.sensor.config_type)}],types:e.sensor.config_type,configfield:"type"}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(92),l=function(e,t){return{title:"Step Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.steps.type)}],types:e.steps.type,configfield:"type",actors:e.actor.actors,sensors:e.sensor.sensors,kettle:e.kettle.list}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var o=n(412);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){e.exports=!0},function(e,t,n){var o=n(59),r=n(428),i=n(125),a=n(131)("IE_PROTO"),s=function(){},l="prototype",u=function(){var e,t=n(208)("iframe"),o=i.length,r="<",a=">";for(t.style.display="none",n(418).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(r+"script"+a+"document.F=Object"+r+"/script"+a),e.close(),u=e.F;o--;)delete u[l][i[o]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[l]=o(e),n=new s,s[l]=null,n[a]=e):n=u(),void 0===t?n:r(n,t)}},function(e,t,n){var o=n(79),r=n(80),i=n(41),a=n(134),s=n(51),l=n(209),u=Object.getOwnPropertyDescriptor;t.f=n(50)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return r(!o.f.call(e,t),e[t])}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var o=n(45).f,r=n(51),i=n(37)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,i)&&o(e,i,{configurable:!0,value:t})}},function(e,t,n){var o=n(132)("keys"),r=n(96);e.exports=function(e){return o[e]||(o[e]=r(e))}},function(e,t,n){var o=n(44),r="__core-js_shared__",i=o[r]||(o[r]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){var n=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},function(e,t,n){var o=n(77);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var o=n(44),r=n(26),i=n(126),a=n(136),s=n(45).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=i?{}:o.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){t.f=n(37)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(101),i=o(r),a="",s="";if(i.default){var l={Moz:"-moz-",ms:"-ms-",O:"-o-",Webkit:"-webkit-"},u=document.createElement("p").style,c="Transform";for(var d in l)if(d+c in u){a=d,s=l[d];break}}t.default={js:a,css:s}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(46),i=o(r),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,o){return e.removeEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0}()),t.default=a,e.exports=t.default},function(e,t,n){function o(e){this.path=e.path,this.hostname=e.hostname,this.port=e.port,this.secure=e.secure,this.query=e.query,this.timestampParam=e.timestampParam,this.timestampRequests=e.timestampRequests,this.readyState="",this.agent=e.agent||!1,this.socket=e.socket,this.enablesXDR=e.enablesXDR,this.pfx=e.pfx,this.key=e.key,this.passphrase=e.passphrase,this.cert=e.cert,this.ca=e.ca,this.ciphers=e.ciphers,this.rejectUnauthorized=e.rejectUnauthorized,this.forceNode=e.forceNode,this.extraHeaders=e.extraHeaders,this.localAddress=e.localAddress}var r=n(65),i=n(76);e.exports=o,i(o.prototype),o.prototype.onError=function(e,t){var n=new Error(e);return n.type="TransportError",n.description=t,this.emit("error",n),this},o.prototype.open=function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this},o.prototype.close=function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this},o.prototype.send=function(e){if("open"!==this.readyState)throw new Error("Transport not open");this.write(e)},o.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},o.prototype.onData=function(e){var t=r.decodePacket(e,this.socket.binaryType);this.onPacket(t)},o.prototype.onPacket=function(e){this.emit("packet",e)},o.prototype.onClose=function(){this.readyState="closed",this.emit("close")}},function(e,t,n){(function(t){var o=n(507);e.exports=function(e){var n=e.xdomain,r=e.xscheme,i=e.enablesXDR;try{if("undefined"!=typeof XMLHttpRequest&&(!n||o))return new XMLHttpRequest}catch(e){}try{if("undefined"!=typeof XDomainRequest&&!r&&i)return new XDomainRequest}catch(e){}if(!n)try{return new(t[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function o(e,t){if(n(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var a=0;a2&&void 0!==arguments[2]?arguments[2]:{},o=n.indent,i=void 0===o?0:o,a=t.fallbacks,l="";if(i++,a)if(Array.isArray(a))for(var u=0;u0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case"LOAD_STATE":return i({},e,{list:t.payload.kettle,config_type:t.payload.controller_types});case"DELETE_KETTLE":return delete e.list[t.id],i({},e,{list:i({},e.list)});case"UPDATE_KETTLE_TARGET_TEMP":return i({},e,{list:i({},e.list,r({},t.payload.id,(0,u.default)(e.list[t.payload.id],{target_temp:{$set:t.payload.target_temp}})))});case"ADD_KETTLE":case"UPDATE_KETTLE":return i({},e,{list:i({},e.list,r({},t.payload.id,t.payload))});default:return e}});t.default=d},function(e,t){e.exports=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var o=n(142);e.exports=function(e){return Object(o(e))}},function(e,t){var n=0,o=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(42),i=o(r),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,o){return e.addEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.attachEvent("on"+t,function(t){t=t||window.event,t.target=t.target||t.srcElement,t.currentTarget=e,n.call(e,t)})}:void 0}()),t.default=a,e.exports=t.default},function(e,t){"use strict";function n(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o="",r="",i=t;if("string"==typeof t){if(void 0===n)return e.style[(0,a.default)(t)]||(0,c.default)(e).getPropertyValue((0,l.default)(t));(i={})[t]=n}Object.keys(i).forEach(function(t){var n=i[t];n||0===n?(0,m.default)(t)?r+=t+"("+n+") ":o+=(0,l.default)(t)+": "+n+";":(0,f.default)(e,(0,l.default)(t))}),r&&(o+=p.transform+": "+r+";"),e.style.cssText+=";"+o}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(254),a=o(i),s=n(513),l=o(s),u=n(508),c=o(u),d=n(509),f=o(d),p=n(157),h=n(510),m=o(h);e.exports=t.default},function(e,t,n){(function(o){function r(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var o="color: "+this.color;e=[e[0],o,"color: inherit"].concat(Array.prototype.slice.call(e,1));var r=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(r++,"%c"===e&&(i=r))}),e.splice(i,0,o),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof o&&"env"in o)return o.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(521),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=r,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t,n){(function(t){"use strict";var n={};"production"!==t.env.NODE_ENV&&Object.freeze(n),e.exports=n}).call(t,n(2))},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=t.isBrowser="object"===("undefined"==typeof window?"undefined":n(window))&&"object"===("undefined"==typeof document?"undefined":n(document))&&9===document.nodeType;t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:r=(0,q.default)(e.ref,r),(0,w.cloneElement)(e,(0,l.default)({},t,{ref:r,bsClass:(0,Y.prefix)(t,"toggle"),onClick:(0,q.default)(e.props.onClick,this.handleClick),onKeyDown:(0,q.default)(e.props.onKeyDown,this.handleKeyDown)}))},t.prototype.renderMenu=function(e,t){var n=this,r=t.id,i=t.onClose,s=t.onSelect,u=t.rootCloseEvent,c=(0,a.default)(t,["id","onClose","onSelect","rootCloseEvent"]),d=function(e){n.menu=e};return"string"==typeof e.ref?"production"!==o.env.NODE_ENV?(0,B.default)(!1,"String refs are not supported on `` components. To apply a ref to the component use the callback signature:\n\n https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute"):void 0:d=(0,q.default)(e.ref,d),(0,w.cloneElement)(e,(0,l.default)({},c,{ref:d,labelledBy:r,bsClass:(0,Y.prefix)(c,"menu"),onClose:(0,q.default)(e.props.onClose,i,this.handleClose),onSelect:(0,q.default)(e.props.onSelect,s,function(e,t){return n.handleClose(t,{source:"select"})}),rootCloseEvent:u}))},t.prototype.render=function(){var e,t=this,n=this.props,o=n.componentClass,r=n.id,i=n.dropup,s=n.disabled,u=n.pullRight,c=n.open,d=n.onClose,f=n.onSelect,p=n.role,h=n.bsClass,m=n.className,y=n.rootCloseEvent,g=n.children,b=(0,a.default)(n,["componentClass","id","dropup","disabled","pullRight","open","onClose","onSelect","role","bsClass","className","rootCloseEvent","children"]);delete b.onToggle;var x=(e={},e[h]=!0,e.open=c,e.disabled=s,e);return i&&(x[h]=!1,x.dropup=!0),C.default.createElement(o,(0,l.default)({},b,{className:(0,v.default)(m,x)}),$.default.map(g,function(e){switch(e.props.bsRole){case J:return t.renderToggle(e,{id:r,disabled:s,open:c,role:p,bsClass:h});case Z:return t.renderMenu(e,{id:r,open:c,pullRight:u,bsClass:h,onClose:d,onSelect:f,rootCloseEvent:y});default:return e}}))},t}(C.default.Component);te.propTypes=Q,te.defaultProps=ee,(0,Y.bsClass)("dropdown",te);var ne=(0,j.default)(te,{open:"onToggle"});ne.Toggle=z.default,ne.Menu=U.default,t.default=ne,e.exports=t.default}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(4),i=o(r),a=n(5),s=o(a),l=n(7),u=o(l),c=n(6),d=o(c),f=n(8),p=o(f),h=n(1),m=o(h),v=n(3),y=o(v),g=n(338),b=o(g),x={in:y.default.bool,mountOnEnter:y.default.bool,unmountOnExit:y.default.bool,transitionAppear:y.default.bool,timeout:y.default.number,onEnter:y.default.func,onEntering:y.default.func,onEntered:y.default.func,onExit:y.default.func,onExiting:y.default.func,onExited:y.default.func},E={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1},_=function(e){function t(){return(0,s.default)(this,t),(0,u.default)(this,e.apply(this,arguments))}return(0,d.default)(t,e),t.prototype.render=function(){return m.default.createElement(b.default,(0,i.default)({},this.props,{className:(0,p.default)(this.props.className,"fade"),enteredClassName:"in",enteringClassName:"in"}))},t}(m.default.Component);_.propTypes=x,_.defaultProps=E,t.default=_,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=t.propTypes,o={},r={};return(0,a.default)(e).forEach(function(e){var t=e[0],i=e[1];n[t]?o[t]=i:r[t]=i}),[o,r]}t.__esModule=!0;var i=n(228),a=o(i);t.default=r,e.exports=t.default},function(e,t,n){(function(t){"use strict";function o(){if(l)for(var e in u){var n=u[e],o=l.indexOf(e);if(o>-1?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a("96",e),!c.plugins[o]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a("97",e),c.plugins[o]=n;var i=n.eventTypes;for(var d in i)r(i[d],n,d)?void 0:"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",d,e):a("98",d,e)}}}function r(e,n,o){c.eventNameDispatchConfigs.hasOwnProperty(o)?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",o):a("99",o):void 0,c.eventNameDispatchConfigs[o]=e;var r=e.phasedRegistrationNames;if(r){for(var l in r)if(r.hasOwnProperty(l)){var u=r[l];i(u,n,o)}return!0}return!!e.registrationName&&(i(e.registrationName,n,o),!0)}function i(e,n,o){if(c.registrationNameModules[e]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a("100",e):void 0,c.registrationNameModules[e]=n,c.registrationNameDependencies[e]=n.eventTypes[o].dependencies,"production"!==t.env.NODE_ENV){var r=e.toLowerCase();c.possibleRegistrationNames[r]=e,"onDoubleClick"===e&&(c.possibleRegistrationNames.ondblclick=e)}}var a=n(15),s=n(12),l=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==t.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){l?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a("101"):void 0,l=Array.prototype.slice.call(e),o()},injectEventPluginsByName:function(e){var n=!1;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];u.hasOwnProperty(r)&&u[r]===i||(u[r]?"production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",r):a("102",r):void 0,u[r]=i,n=!0)}n&&o()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var o in n)if(n.hasOwnProperty(o)){var r=c.registrationNameModules[n[o]];if(r)return r}}return null},_resetEventPlugins:function(){l=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var n=c.eventNameDispatchConfigs;for(var o in n)n.hasOwnProperty(o)&&delete n[o];var r=c.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i];if("production"!==t.env.NODE_ENV){var a=c.possibleRegistrationNames;for(var s in a)a.hasOwnProperty(s)&&delete a[s]}}};e.exports=c}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=p++,d[e[m]]={}),d[e[m]]}var r,i=n(19),a=n(120),s=n(808),l=n(324),u=n(843),c=n(200),d={},f=!1,p=0,h={topAbort:"abort",topAnimationEnd:u("animationend")||"animationend",topAnimationIteration:u("animationiteration")||"animationiteration",topAnimationStart:u("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:u("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,r=o(n),i=a.registrationNameDependencies[e],s=0;s]/;e.exports=o},function(e,t,n){"use strict";var o,r=n(22),i=n(189),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,l=n(196),u=l(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{o=o||document.createElement("div"),o.innerHTML=""+t+"";for(var n=o.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(r.canUseDOM){var c=document.createElement("div"); +c.innerHTML=" ",""===c.innerHTML&&(u=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){function e(){for(var e=arguments.length,t=Array(e),o=0;o>",s=i||n;if(null==t[n])return new Error("The "+r+" `"+s+"` is required to make "+("`"+a+"` accessible for users of assistive ")+"technologies such as screen readers.");for(var l=arguments.length,u=Array(l>5?l-5:0),c=5;c>",l=a||o;if(null==n[o])return t?new Error("Required "+i+" `"+l+"` was not specified "+("in `"+s+"`.")):null;for(var u=arguments.length,c=Array(u>6?u-6:0),d=6;d=o.length)for(var r=n-o.length;r--+1;)o.push(void 0);return o.splice(n,0,o.splice(t,1)[0]),o}function o(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;ot?t:n}function a(e){return"px"===e.substr(-2)?parseFloat(e):0}function s(e){var t=window.getComputedStyle(e);return{top:a(t.marginTop),right:a(t.marginRight),bottom:a(t.marginBottom),left:a(t.marginLeft)}}function l(e,t){var n=t.displayName||t.name;return n?e+"("+n+")":e}Object.defineProperty(t,"__esModule",{value:!0}),t.arrayMove=n,t.omit=o,t.closest=r,t.limit=i,t.getElementMargin=s,t.provideDisplayName=l;t.events={start:["touchstart","mousedown"],move:["touchmove","mousemove"],end:["touchend","touchcancel","mouseup"]},t.vendorPrefix=function(){if("undefined"==typeof window||"undefined"==typeof document)return"";var e=window.getComputedStyle(document.documentElement,"")||["-moz-hidden-iframe"],t=(Array.prototype.slice.call(e).join("").match(/-(moz|webkit|ms)-/)||""===e.OLink&&["","o"])[1];switch(t){case"ms":return"ms";default:return t&&t.length?t[0].toUpperCase()+t.substr(1):""}}()},function(e,t,n){(function(t){"use strict";var n=!1;if("production"!==t.env.NODE_ENV)try{Object.defineProperty({},"x",{get:function(){}}),n=!0}catch(e){}e.exports=n}).call(t,n(2))},function(e,t,n){(function(o){function r(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return e;var o="color: "+this.color;e=[e[0],o,"color: inherit"].concat(Array.prototype.slice.call(e,1));var r=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(r++,"%c"===e&&(i=r))}),e.splice(i,0,o),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof o&&"env"in o)return o.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}t=e.exports=n(917),t.log=a,t.formatArgs=i,t.save=s,t.load=l,t.useColors=r,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l())}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){n&&(e._notifying=!0,n.call.apply(n,[e,o].concat(r)),e._notifying=!1),e._values[t]=o,e.unmounted||e.forceUpdate()}t.__esModule=!0;var i=n(930),a=o(i),s={shouldComponentUpdate:function(){return!this._notifying}};t.default=(0,a.default)(s,r),e.exports=t.default},function(e,t,n){(function(t){"use strict";function o(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function r(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(212):"undefined"!=typeof t&&(e=n(212)),e}var i=n(29),a=n(381),s={"Content-Type":"application/x-www-form-urlencoded"},l={adapter:r(),transformRequest:[function(e,t){return a(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(o(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(o(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){l.headers[e]={}}),i.forEach(["post","put","patch"],function(e){l.headers[e]=i.merge(s)}),e.exports=l}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(11),i=n(26),a=o(i),s=n(47),l=function(e,t){return{title:"Actor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.actor.config_type)}],types:e.actor.config_type,configfield:"type"}},u=function(e,t){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=o(r),a=n(11),s=n(26),l=o(s),u=n(47),c=(n(21),{0:i.default.createElement("strong",null,"0%"),25:"25%",50:"50%",75:"75%",100:{style:{color:"red"},label:i.default.createElement("strong",null,"100%")}}),d=function(e,t){return{title:t.actor_name?"Power for "+t.actor_name:"Power for Actor",form:[{label:"Power",name:"power",type:"slider",min:0,max:100,marks:c}]}},f=function(e,t){return{btn_save:function(n){return e((0,u.set_power)(t.actor_id,n.power)),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}};t.default=(0,a.connect)(d,f,null,{withRef:!0})(l.default)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"UPDATE_FILES":return r({},e,{files:t.payload});case"SENSOR_DATA_LOADED":return r({},e,{chart_config:r({},e.chart_config,{series:t.payload})});case"UPDATE_ACTIONS":return r({},e,{chart_config:r({},e.chart_config,{xAxis:r({},e.chart_config.xAxis,{plotLines:t.payload})})});default:return e}});t.default=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(11),i=n(26),a=o(i),s=n(75),l=function(e,t){return{title:"Sensor Modal",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Hide on Dashboard",name:"hide",type:"checkbox"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.sensor.config_type)}],types:e.sensor.config_type,configfield:"type"}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(11),i=n(26),a=o(i),s=n(76),l=function(e,t){return{title:"Step Config",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Type",clear_config:!0,name:"type",type:"select",options:Object.keys(e.steps.type)}],types:e.steps.type,configfield:"type",actors:e.actor.actors,sensors:e.sensor.sensors,kettle:e.kettle.list}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var o=n(448);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){e.exports=!0},function(e,t,n){var o=n(60),r=n(464),i=n(143),a=n(149)("IE_PROTO"),s=function(){},l="prototype",u=function(){var e,t=n(232)("iframe"),o=i.length,r="<",a=">";for(t.style.display="none",n(454).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(r+"script"+a+"document.F=Object"+r+"/script"+a),e.close(),u=e.F;o--;)delete u[l][i[o]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[l]=o(e),n=new s,s[l]=null,n[a]=e):n=u(),void 0===t?n:r(n,t)}},function(e,t,n){var o=n(82),r=n(83),i=n(41),a=n(152),s=n(52),l=n(233),u=Object.getOwnPropertyDescriptor;t.f=n(51)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return r(!o.f.call(e,t),e[t])}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var o=n(49).f,r=n(52),i=n(37)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,i)&&o(e,i,{configurable:!0,value:t})}},function(e,t,n){var o=n(150)("keys"),r=n(102);e.exports=function(e){return o[e]||(o[e]=r(e))}},function(e,t,n){var o=n(48),r="__core-js_shared__",i=o[r]||(o[r]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){var n=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},function(e,t,n){var o=n(80);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var o=n(48),r=n(25),i=n(144),a=n(154),s=n(49).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=i?{}:o.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){t.f=n(37)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(108),i=o(r),a="",s="";if(i.default){var l={Moz:"-moz-",ms:"-ms-",O:"-o-",Webkit:"-webkit-"},u=document.createElement("p").style,c="Transform";for(var d in l)if(d+c in u){a=d,s=l[d];break}}t.default={js:a,css:s}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(42),i=o(r),a=function(){};i.default&&(a=function(){return document.addEventListener?function(e,t,n,o){return e.removeEventListener(t,n,o||!1)}:document.attachEvent?function(e,t,n){return e.detachEvent("on"+t,n)}:void 0}()),t.default=a,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){for(var e=document.createElement("div").style,t={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},n=Object.keys(t),o=void 0,r=void 0,i="",a=0;a2&&void 0!==arguments[2]?arguments[2]:{},o="";if(!t)return o;var i=n.indent,a=void 0===i?0:i,l=t.fallbacks;if(a++,l)if(Array.isArray(l))for(var u=0;uo}function a(e){return e.touches.length>1||"touchend"===e.type.toLowerCase()&&e.touches.length>0}function s(e,t){var n=t.marks,o=t.step,r=t.min,i=Object.keys(n).map(parseFloat);if(null!==o){var a=Math.round((e-r)/o)*o+r;i.push(a)}var s=i.map(function(t){return Math.abs(e-t)});return i[s.indexOf(Math.min.apply(Math,(0,v.default)(s)))]}function l(e){var t=e.toString(),n=0;return t.indexOf(".")>=0&&(n=t.length-t.indexOf(".")-1),n}function u(e,t){return e?t.clientY:t.pageX}function c(e,t){return e?t.touches[0].clientY:t.touches[0].pageX}function d(e,t){var n=t.getBoundingClientRect();return e?n.top+.5*n.height:n.left+.5*n.width}function f(e,t){var n=t.max,o=t.min;return e<=o?o:e>=n?n:e}function p(e,t){var n=t.step,o=s(e,t);return null===n?o:parseFloat(o.toFixed(l(n)))}function h(e){e.stopPropagation(),e.preventDefault()}Object.defineProperty(t,"__esModule",{value:!0});var m=n(205),v=o(m);t.isEventFromHandle=r,t.isValueOutOfRange=i,t.isNotTouchEvent=a,t.getClosestPoint=s,t.getPrecision=l,t.getMousePosition=u,t.getTouchPosition=c,t.getHandleCenterPosition=d,t.ensureValueInRange=f,t.ensureValuePrecision=p,t.pauseEvent=h;var y=n(20)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o=l.default.unstable_batchedUpdates?function(e){l.default.unstable_batchedUpdates(n,e)}:n;return(0,a.default)(e,t,o)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(329),a=o(i),s=n(20),l=o(s);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){e.offsetHeight}function i(e,t){var n=t["offset"+(0,T.default)(e)],o=S[e];return n+parseInt((0,b.default)(t,o[0]),10)+parseInt((0,b.default)(t,o[1]),10)}t.__esModule=!0;var a=n(3),s=o(a),l=n(8),u=o(l),c=n(4),d=o(c),f=n(6),p=o(f),h=n(5),m=o(h),v=n(9),y=o(v),g=n(99),b=o(g),E=n(1),_=o(E),x=n(7),w=o(x),C=n(299),O=o(C),N=n(266),T=o(N),k=n(23),P=o(k),S={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]},M={in:w.default.bool,mountOnEnter:w.default.bool,unmountOnExit:w.default.bool,transitionAppear:w.default.bool,timeout:w.default.number,onEnter:w.default.func,onEntering:w.default.func,onEntered:w.default.func,onExit:w.default.func,onExiting:w.default.func,onExited:w.default.func,dimension:w.default.oneOfType([w.default.oneOf(["height","width"]),w.default.func]),getDimensionValue:w.default.func,role:w.default.string},A={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1,dimension:"height",getDimensionValue:i},D=function(e){function t(n,o){(0,d.default)(this,t);var r=(0,p.default)(this,e.call(this,n,o));return r.handleEnter=r.handleEnter.bind(r),r.handleEntering=r.handleEntering.bind(r),r.handleEntered=r.handleEntered.bind(r),r.handleExit=r.handleExit.bind(r),r.handleExiting=r.handleExiting.bind(r),r}return(0,m.default)(t,e),t.prototype.handleEnter=function(e){var t=this._dimension();e.style[t]="0"},t.prototype.handleEntering=function(e){var t=this._dimension();e.style[t]=this._getScrollDimensionValue(e,t)},t.prototype.handleEntered=function(e){var t=this._dimension();e.style[t]=null},t.prototype.handleExit=function(e){var t=this._dimension();e.style[t]=this.props.getDimensionValue(t,e)+"px",r(e)},t.prototype.handleExiting=function(e){var t=this._dimension();e.style[t]="0"},t.prototype._dimension=function(){return"function"==typeof this.props.dimension?this.props.dimension():this.props.dimension},t.prototype._getScrollDimensionValue=function(e,t){return e["scroll"+(0,T.default)(t)]+"px"},t.prototype.render=function(){var e=this.props,t=e.onEnter,n=e.onEntering,o=e.onEntered,r=e.onExit,i=e.onExiting,a=e.className,l=(0,u.default)(e,["onEnter","onEntering","onEntered","onExit","onExiting","className"]);delete l.dimension,delete l.getDimensionValue;var c=(0,P.default)(this.handleEnter,t),d=(0,P.default)(this.handleEntering,n),f=(0,P.default)(this.handleEntered,o),p=(0,P.default)(this.handleExit,r),h=(0,P.default)(this.handleExiting,i),m={width:"width"===this._dimension()};return _.default.createElement(O.default,(0,s.default)({},l,{"aria-expanded":l.role?l.in:null,className:(0,y.default)(a,m),exitedClassName:"collapse",exitingClassName:"collapsing",enteredClassName:"collapse in",enteringClassName:"collapsing",onEnter:c,onEntering:d,onEntered:f,onExit:p,onExiting:h}))},t}(_.default.Component);D.propTypes=M,D.defaultProps=A,t.default=D,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(10),_={glyph:b.default.string.isRequired},x=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e,t=this.props,n=t.glyph,o=t.className,r=(0,s.default)(t,["glyph","className"]),a=(0,E.splitBsProps)(r),l=a[0],u=a[1],c=(0,i.default)({},(0,E.getClassSet)(l),(e={},e[(0,E.prefix)(l,n)]=!0,e));return y.default.createElement("span",(0,i.default)({},u,{className:(0,m.default)(o,c)}))},t}(y.default.Component);x.propTypes=_,t.default=(0,E.bsClass)("glyphicon",x),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(608),_=o(E),x=n(609),w=o(x),C=n(610),O=o(C),N=n(611),T=o(N),k=n(612),P=o(k),S=n(613),M=o(S),A=n(10),D={componentClass:b.default},R={componentClass:"div"},I=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,A.splitBsProps)(o),a=r[0],l=r[1],u=(0,A.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);I.propTypes=D,I.defaultProps=R,I.Heading=w.default,I.Body=_.default,I.Left=O.default,I.Right=M.default,I.List=T.default,I.ListItem=P.default,t.default=(0,A.bsClass)("media",I),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(8),i=o(r),a=n(4),s=o(a),l=n(6),u=o(l),c=n(5),d=o(c),f=n(1),p=o(f),h=n(7),m=o(h),v=n(114),y=o(v),g="tab",b="pane",E=m.default.oneOfType([m.default.string,m.default.number]),_={id:function(e){var t=null;if(!e.generateChildId){for(var n=arguments.length,o=Array(n>1?n-1:0),r=1;r-1&&navigator.userAgent.indexOf("Edge")===-1||navigator.userAgent.indexOf("Firefox")>-1)){var m=window.location.protocol.indexOf("http")===-1&&navigator.userAgent.indexOf("Firefox")===-1;console.debug("Download the React DevTools "+(m?"and use an HTTP server (instead of a file: URL) ":"")+"for a better development experience: https://fb.me/react-devtools")}var v=function(){};"production"!==t.env.NODE_ENV?f((v.name||v.toString()).indexOf("testFn")!==-1,"It looks like you're using a minified copy of the development build of React. When deploying React apps to production, make sure to use the production build which skips development warnings and is faster. See https://fb.me/react-minification for more details."):void 0;var y=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV?f(!y,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var g=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.trim],b=0;b0&&o.length<20?n+" (keys: "+o.join(", ")+")":n}function i(e,n){var o=l.get(e);if(!o){if("production"!==t.env.NODE_ENV){var r=e.constructor;"production"!==t.env.NODE_ENV?f(!n,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,r&&(r.displayName||r.name)||"ReactClass"):void 0}return null}return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?f(null==s.current,"%s(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.",n):void 0),o}var a=n(14),s=n(40),l=n(69),u=n(31),c=n(32),d=n(11),f=n(12),p={isMounted:function(e){if("production"!==t.env.NODE_ENV){var n=s.current;null!==n&&("production"!==t.env.NODE_ENV?f(n._warnedAboutRefsInRender,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"):void 0,n._warnedAboutRefsInRender=!0)}var o=l.get(e);return!!o&&!!o._renderedComponent},enqueueCallback:function(e,t,n){p.validateCallback(t,n);var r=i(e);return r?(r._pendingCallbacks?r._pendingCallbacks.push(t):r._pendingCallbacks=[t],void o(r)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],o(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,o(t))},enqueueReplaceState:function(e,t,n){var r=i(e,"replaceState");r&&(r._pendingStateQueue=[t],r._pendingReplaceState=!0,void 0!==n&&null!==n&&(p.validateCallback(n,"replaceState"),r._pendingCallbacks?r._pendingCallbacks.push(n):r._pendingCallbacks=[n]),o(r))},enqueueSetState:function(e,n){"production"!==t.env.NODE_ENV&&(u.debugTool.onSetState(),"production"!==t.env.NODE_ENV?f(null!=n,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."):void 0);var r=i(e,"setState");if(r){var a=r._pendingStateQueue||(r._pendingStateQueue=[]);a.push(n),o(r)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,o(e)},validateCallback:function(e,n){e&&"function"!=typeof e?"production"!==t.env.NODE_ENV?d(!1,"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",n,r(e)):a("122",n,r(e)):void 0}};e.exports=p}).call(t,n(2))},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n,o,r)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var o=r[e];return!!o&&!!n[o]}function o(e){return n}var r={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=o},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";/** +for(r=97;r<123;r++)n[String.fromCharCode(r)]=r-32;for(var r=48;r<58;r++)n[r-48]=r;for(r=1;r<13;r++)n["f"+r]=r+111;for(r=0;r<10;r++)n["numpad "+r]=r+96;var i=t.names=t.title={};for(r in n)i[n[r]]=r;for(var a in o)n[a]=o[a]},function(e,t,n){var o=n(53),r=n(44),i=o(r,"Map");e.exports=i},function(e,t,n){function o(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=o}var o=9007199254740991;e.exports=n},function(e,t,n){function o(e){if(!a(e)||r(e)!=s)return!1;var t=i(e);if(null===t)return!0;var n=d.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==f}var r=n(67),i=n(624),a=n(68),s="[object Object]",l=Function.prototype,u=Object.prototype,c=l.toString,d=u.hasOwnProperty,f=c.call(Object);e.exports=o},function(e,t){t.encode=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t},t.decode=function(e){for(var t={},n=e.split("&"),o=0,r=n.length;oo}function a(e){return e.touches.length>1||"touchend"===e.type.toLowerCase()&&e.touches.length>0}function s(e,t){var n=t.marks,o=t.step,r=t.min,i=Object.keys(n).map(parseFloat);if(null!==o){var a=Math.round((e-r)/o)*o+r;i.push(a)}var s=i.map(function(t){return Math.abs(e-t)});return i[s.indexOf(Math.min.apply(Math,(0,v.default)(s)))]}function l(e){var t=e.toString(),n=0;return t.indexOf(".")>=0&&(n=t.length-t.indexOf(".")-1),n}function u(e,t){return e?t.clientY:t.pageX}function c(e,t){return e?t.touches[0].clientY:t.touches[0].pageX}function d(e,t){var n=t.getBoundingClientRect();return e?n.top+.5*n.height:n.left+.5*n.width}function f(e,t){var n=t.max,o=t.min;return e<=o?o:e>=n?n:e}function p(e,t){var n=t.step,o=s(e,t);return null===n?o:parseFloat(o.toFixed(l(n)))}function h(e){e.stopPropagation(),e.preventDefault()}Object.defineProperty(t,"__esModule",{value:!0});var m=n(229),v=o(m);t.isEventFromHandle=r,t.isValueOutOfRange=i,t.isNotTouchEvent=a,t.getClosestPoint=s,t.getPrecision=l,t.getMousePosition=u,t.getTouchPosition=c,t.getHandleCenterPosition=d,t.ensureValueInRange=f,t.ensureValuePrecision=p,t.pauseEvent=h;var y=n(18)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){var o=l.default.unstable_batchedUpdates?function(e){l.default.unstable_batchedUpdates(n,e)}:n;return(0,a.default)(e,t,o)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(364),a=o(i),s=n(18),l=o(s);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){e.offsetHeight}function i(e,t){var n=t["offset"+(0,N.default)(e)],o=P[e];return n+parseInt((0,b.default)(t,o[0]),10)+parseInt((0,b.default)(t,o[1]),10)}t.__esModule=!0;var a=n(4),s=o(a),l=n(9),u=o(l),c=n(5),d=o(c),f=n(7),p=o(f),h=n(6),m=o(h),v=n(8),y=o(v),g=n(105),b=o(g),x=n(1),E=o(x),_=n(3),w=o(_),C=n(338),O=o(C),k=n(310),N=o(k),T=n(23),S=o(T),P={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]},M={in:w.default.bool,mountOnEnter:w.default.bool,unmountOnExit:w.default.bool,transitionAppear:w.default.bool,timeout:w.default.number,onEnter:w.default.func,onEntering:w.default.func,onEntered:w.default.func,onExit:w.default.func,onExiting:w.default.func,onExited:w.default.func,dimension:w.default.oneOfType([w.default.oneOf(["height","width"]),w.default.func]),getDimensionValue:w.default.func,role:w.default.string},A={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,transitionAppear:!1,dimension:"height",getDimensionValue:i},D=function(e){function t(n,o){(0,d.default)(this,t);var r=(0,p.default)(this,e.call(this,n,o));return r.handleEnter=r.handleEnter.bind(r),r.handleEntering=r.handleEntering.bind(r),r.handleEntered=r.handleEntered.bind(r),r.handleExit=r.handleExit.bind(r),r.handleExiting=r.handleExiting.bind(r),r}return(0,m.default)(t,e),t.prototype.handleEnter=function(e){var t=this._dimension();e.style[t]="0"},t.prototype.handleEntering=function(e){var t=this._dimension();e.style[t]=this._getScrollDimensionValue(e,t)},t.prototype.handleEntered=function(e){var t=this._dimension();e.style[t]=null},t.prototype.handleExit=function(e){var t=this._dimension();e.style[t]=this.props.getDimensionValue(t,e)+"px",r(e)},t.prototype.handleExiting=function(e){var t=this._dimension();e.style[t]="0"},t.prototype._dimension=function(){return"function"==typeof this.props.dimension?this.props.dimension():this.props.dimension},t.prototype._getScrollDimensionValue=function(e,t){return e["scroll"+(0,N.default)(t)]+"px"},t.prototype.render=function(){var e=this.props,t=e.onEnter,n=e.onEntering,o=e.onEntered,r=e.onExit,i=e.onExiting,a=e.className,l=(0,u.default)(e,["onEnter","onEntering","onEntered","onExit","onExiting","className"]);delete l.dimension,delete l.getDimensionValue;var c=(0,S.default)(this.handleEnter,t),d=(0,S.default)(this.handleEntering,n),f=(0,S.default)(this.handleEntered,o),p=(0,S.default)(this.handleExit,r),h=(0,S.default)(this.handleExiting,i),m={width:"width"===this._dimension()};return E.default.createElement(O.default,(0,s.default)({},l,{"aria-expanded":l.role?l.in:null,className:(0,y.default)(a,m),exitedClassName:"collapse",exitingClassName:"collapsing",enteredClassName:"collapse in",enteringClassName:"collapsing",onEnter:c,onEntering:d,onEntered:f,onExit:p,onExiting:h}))},t}(E.default.Component);D.propTypes=M,D.defaultProps=A,t.default=D,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(4),i=o(r),a=n(9),s=o(a),l=n(5),u=o(l),c=n(7),d=o(c),f=n(6),p=o(f),h=n(8),m=o(h),v=n(1),y=o(v),g=n(3),b=o(g),x=n(10),E={glyph:b.default.string.isRequired},_=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e,t=this.props,n=t.glyph,o=t.className,r=(0,s.default)(t,["glyph","className"]),a=(0,x.splitBsProps)(r),l=a[0],u=a[1],c=(0,i.default)({},(0,x.getClassSet)(l),(e={},e[(0,x.prefix)(l,n)]=!0,e));return y.default.createElement("span",(0,i.default)({},u,{className:(0,m.default)(o,c)}))},t}(y.default.Component);_.propTypes=E,t.default=(0,x.bsClass)("glyphicon",_),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(4),i=o(r),a=n(9),s=o(a),l=n(5),u=o(l),c=n(7),d=o(c),f=n(6),p=o(f),h=n(8),m=o(h),v=n(1),y=o(v),g=n(16),b=o(g),x=n(733),E=o(x),_=n(734),w=o(_),C=n(735),O=o(C),k=n(736),N=o(k),T=n(737),S=o(T),P=n(738),M=o(P),A=n(10),D={componentClass:b.default},R={componentClass:"div"},I=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,A.splitBsProps)(o),a=r[0],l=r[1],u=(0,A.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);I.propTypes=D,I.defaultProps=R,I.Heading=w.default,I.Body=E.default,I.Left=O.default,I.Right=M.default,I.List=N.default,I.ListItem=S.default,t.default=(0,A.bsClass)("media",I),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(9),i=o(r),a=n(5),s=o(a),l=n(7),u=o(l),c=n(6),d=o(c),f=n(1),p=o(f),h=n(3),m=o(h),v=n(132),y=o(v),g="tab",b="pane",x=m.default.oneOfType([m.default.string,m.default.number]),E={id:function(e){var t=null;if(!e.generateChildId){for(var n=arguments.length,o=Array(n>1?n-1:0),r=1;r0&&o.length<20?n+" (keys: "+o.join(", ")+")":n}function i(e,n){var o=l.get(e);if(!o){if("production"!==t.env.NODE_ENV){var r=e.constructor;"production"!==t.env.NODE_ENV?f(!n,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,r&&(r.displayName||r.name)||"ReactClass"):void 0}return null}return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?f(null==s.current,"%s(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.",n):void 0),o}var a=n(15),s=n(40),l=n(94),u=n(32),c=n(39),d=n(12),f=n(13),p={isMounted:function(e){if("production"!==t.env.NODE_ENV){var n=s.current;null!==n&&("production"!==t.env.NODE_ENV?f(n._warnedAboutRefsInRender,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"):void 0,n._warnedAboutRefsInRender=!0)}var o=l.get(e);return!!o&&!!o._renderedComponent},enqueueCallback:function(e,t,n){p.validateCallback(t,n);var r=i(e);return r?(r._pendingCallbacks?r._pendingCallbacks.push(t):r._pendingCallbacks=[t],void o(r)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],o(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,o(t))},enqueueReplaceState:function(e,t,n){var r=i(e,"replaceState");r&&(r._pendingStateQueue=[t],r._pendingReplaceState=!0,void 0!==n&&null!==n&&(p.validateCallback(n,"replaceState"),r._pendingCallbacks?r._pendingCallbacks.push(n):r._pendingCallbacks=[n]),o(r))},enqueueSetState:function(e,n){"production"!==t.env.NODE_ENV&&(u.debugTool.onSetState(),"production"!==t.env.NODE_ENV?f(null!=n,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."):void 0);var r=i(e,"setState");if(r){var a=r._pendingStateQueue||(r._pendingStateQueue=[]);a.push(n),o(r)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,o(e)},validateCallback:function(e,n){e&&"function"!=typeof e?"production"!==t.env.NODE_ENV?d(!1,"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",n,r(e)):a("122",n,r(e)):void 0}};e.exports=p}).call(t,n(2))},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n,o,r)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var o=r[e];return!!o&&!!n[o]}function o(e){return n}var r={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=o},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";/** * Checks if an event is supported in the current execution environment. * * NOTE: This will not work correctly for non-generic events such as `change`, @@ -35,57 +35,56 @@ for(r=97;r<123;r++)n[String.fromCharCode(r)]=r-32;for(var r=48;r<58;r++)n[r-48]= * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT */ -function o(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var a=document.createElement("div");a.setAttribute(n,"return;"),o="function"==typeof a[n]}return!o&&r&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}var r,i=n(21);i.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),e.exports=o},function(e,t){"use strict";function n(e,t){var n=null===e||e===!1,o=null===t||t===!1;if(n||o)return n===o;var r=typeof e,i=typeof t;return"string"===r||"number"===r?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}e.exports=n},function(e,t,n){(function(t){"use strict";var o=n(16),r=n(27),i=n(12),a=r;if("production"!==t.env.NODE_ENV){var s=["address","applet","area","article","aside","base","basefont","bgsound","blockquote","body","br","button","caption","center","col","colgroup","dd","details","dir","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","isindex","li","link","listing","main","marquee","menu","menuitem","meta","nav","noembed","noframes","noscript","object","ol","p","param","plaintext","pre","script","section","select","source","style","summary","table","tbody","td","template","textarea","tfoot","th","thead","title","tr","track","ul","wbr","xmp"],l=["applet","caption","html","table","td","th","marquee","object","template","foreignObject","desc","title"],u=l.concat(["button"]),c=["dd","dt","li","option","optgroup","p","rp","rt"],d={current:null,formTag:null,aTagInScope:null,buttonTagInScope:null,nobrTagInScope:null,pTagInButtonScope:null,listItemTagAutoclosing:null,dlItemTagAutoclosing:null},f=function(e,t,n){var r=o({},e||d),i={tag:t,instance:n};return l.indexOf(t)!==-1&&(r.aTagInScope=null,r.buttonTagInScope=null,r.nobrTagInScope=null),u.indexOf(t)!==-1&&(r.pTagInButtonScope=null),s.indexOf(t)!==-1&&"address"!==t&&"div"!==t&&"p"!==t&&(r.listItemTagAutoclosing=null,r.dlItemTagAutoclosing=null),r.current=i,"form"===t&&(r.formTag=i),"a"===t&&(r.aTagInScope=i),"button"===t&&(r.buttonTagInScope=i),"nobr"===t&&(r.nobrTagInScope=i),"p"===t&&(r.pTagInButtonScope=i),"li"===t&&(r.listItemTagAutoclosing=i),"dd"!==t&&"dt"!==t||(r.dlItemTagAutoclosing=i),r},p=function(e,t){switch(t){case"select":return"option"===e||"optgroup"===e||"#text"===e;case"optgroup":return"option"===e||"#text"===e;case"option":return"#text"===e;case"tr":return"th"===e||"td"===e||"style"===e||"script"===e||"template"===e;case"tbody":case"thead":case"tfoot":return"tr"===e||"style"===e||"script"===e||"template"===e;case"colgroup":return"col"===e||"template"===e;case"table":return"caption"===e||"colgroup"===e||"tbody"===e||"tfoot"===e||"thead"===e||"style"===e||"script"===e||"template"===e;case"head":return"base"===e||"basefont"===e||"bgsound"===e||"link"===e||"meta"===e||"title"===e||"noscript"===e||"noframes"===e||"style"===e||"script"===e||"template"===e;case"html":return"head"===e||"body"===e;case"#document":return"html"===e}switch(e){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"h1"!==t&&"h2"!==t&&"h3"!==t&&"h4"!==t&&"h5"!==t&&"h6"!==t;case"rp":case"rt":return c.indexOf(t)===-1;case"body":case"caption":case"col":case"colgroup":case"frame":case"head":case"html":case"tbody":case"td":case"tfoot":case"th":case"thead":case"tr":return null==t}return!0},h=function(e,t){switch(e){case"address":case"article":case"aside":case"blockquote":case"center":case"details":case"dialog":case"dir":case"div":case"dl":case"fieldset":case"figcaption":case"figure":case"footer":case"header":case"hgroup":case"main":case"menu":case"nav":case"ol":case"p":case"section":case"summary":case"ul":case"pre":case"listing":case"table":case"hr":case"xmp":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return t.pTagInButtonScope;case"form":return t.formTag||t.pTagInButtonScope;case"li":return t.listItemTagAutoclosing;case"dd":case"dt":return t.dlItemTagAutoclosing;case"button":return t.buttonTagInScope;case"a":return t.aTagInScope;case"nobr":return t.nobrTagInScope}return null},m=function(e){if(!e)return[];var t=[];do t.push(e);while(e=e._currentElement._owner);return t.reverse(),t},v={};a=function(e,n,o,r){r=r||d;var a=r.current,s=a&&a.tag;null!=n&&("production"!==t.env.NODE_ENV?i(null==e,"validateDOMNesting: when childText is passed, childTag should be null"):void 0,e="#text");var l=p(e,s)?null:a,u=l?null:h(e,r),c=l||u;if(c){var f,y=c.tag,g=c.instance,b=o&&o._currentElement._owner,E=g&&g._currentElement._owner,_=m(b),x=m(E),w=Math.min(_.length,x.length),C=-1;for(f=0;f "),P=!!l+"|"+e+"|"+y+"|"+k;if(v[P])return;v[P]=!0;var S=e,M="";if("#text"===e?/\S/.test(n)?S="Text nodes":(S="Whitespace text nodes",M=" Make sure you don't have any extra whitespace between tags on each line of your source code."):S="<"+e+">",l){var A="";"table"===y&&"tr"===e&&(A+=" Add a to your code to match the DOM tree generated by the browser."),"production"!==t.env.NODE_ENV?i(!1,"validateDOMNesting(...): %s cannot appear as a child of <%s>.%s See %s.%s",S,y,M,k,A):void 0}else"production"!==t.env.NODE_ENV?i(!1,"validateDOMNesting(...): %s cannot appear as a descendant of <%s>. See %s.",S,y,k):void 0}},a.updatedAncestorInfo=f,a.isTagValidInContext=function(e,t){t=t||d;var n=t.current,o=n&&n.tag;return p(e,o)&&!h(e,t)}}e.exports=a}).call(t,n(2))},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){return e="function"==typeof e?e():e,a.default.findDOMNode(e)||t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(20),a=o(i);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){var a=e[t],l="undefined"==typeof a?"undefined":i(a);return s.default.isValidElement(a)?new Error("Invalid "+o+" `"+r+"` of type ReactElement "+("supplied to `"+n+"`, expected a ReactComponent or a ")+"DOMElement. You can usually obtain a ReactComponent or DOMElement from a ReactElement by attaching a ref to it."):"object"===l&&"function"==typeof a.render||1===a.nodeType?null:new Error("Invalid "+o+" `"+r+"` of value `"+a+"` "+("supplied to `"+n+"`, expected a ReactComponent or a ")+"DOMElement.")}t.__esModule=!0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},a=n(1),s=o(a),l=n(111),u=o(l);t.default=(0,u.default)(r)},function(e,t){"use strict";function n(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}t.__esModule=!0,t.default=n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t may have only one child element"),this.unlisten=o.listen(function(){e.setState({match:e.computeMatch(o.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){(0,u.default)(this.props.history===e.history,"You cannot change ")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?p.default.Children.only(e):null},t}(p.default.Component);v.propTypes={history:m.default.object.isRequired,children:m.default.node},v.contextTypes={router:m.default.object},v.childContextTypes={router:m.default.object.isRequired},t.default=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(555),i=o(r),a={},s=1e4,l=0,u=function(e,t){var n=""+t.end+t.strict,o=a[n]||(a[n]={});if(o[e])return o[e];var r=[],u=(0,i.default)(e,r,t),c={re:u,keys:r};return l1&&void 0!==arguments[1]?arguments[1]:{};"string"==typeof t&&(t={path:t});var n=t,o=n.path,r=void 0===o?"/":o,i=n.exact,a=void 0!==i&&i,s=n.strict,l=void 0!==s&&s,c=u(r,{end:a,strict:l}),d=c.re,f=c.keys,p=d.exec(e);if(!p)return null;var h=p[0],m=p.slice(1),v=e===h;return a&&!v?null:{path:r,url:"/"===r&&""===h?"/":h,isExact:v,params:f.reduce(function(e,t,n){return e[t.name]=m[n],e},{})}};t.default=c},function(e,t,n){(function(t){"use strict";function o(e,t,n){this.props=e,this.context=t,this.refs=s,this.updater=n||i}var r=n(56),i=n(184),a=n(112),s=n(52),l=n(11),u=n(12);if(o.prototype.isReactComponent={},o.prototype.setState=function(e,n){"object"!=typeof e&&"function"!=typeof e&&null!=e?"production"!==t.env.NODE_ENV?l(!1,"setState(...): takes an object of state variables to update or a function which returns an object of state variables."):r("85"):void 0,this.updater.enqueueSetState(this,e),n&&this.updater.enqueueCallback(this,n,"setState")},o.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")},"production"!==t.env.NODE_ENV){var c={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]},d=function(e,n){a&&Object.defineProperty(o.prototype,e,{get:function(){"production"!==t.env.NODE_ENV?u(!1,"%s(...) is deprecated in plain JavaScript React classes. %s",n[0],n[1]):void 0}})};for(var f in c)c.hasOwnProperty(f)&&d(f,c[f])}e.exports=o}).call(t,n(2))},function(e,t,n){(function(t){"use strict";function o(e,n){if("production"!==t.env.NODE_ENV){var o=e.constructor;"production"!==t.env.NODE_ENV?r(!1,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,o&&(o.displayName||o.name)||"ReactClass"):void 0}}var r=n(12),i={isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){o(e,"forceUpdate")},enqueueReplaceState:function(e,t){o(e,"replaceState")},enqueueSetState:function(e,t){o(e,"setState")}};e.exports=i}).call(t,n(2))},function(e,t,n){(function(e){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){}t.__esModule=!0,t.compose=t.applyMiddleware=t.bindActionCreators=t.combineReducers=t.createStore=void 0;var i=n(318),a=o(i),s=n(782),l=o(s),u=n(781),c=o(u),d=n(780),f=o(d),p=n(317),h=o(p),m=n(319),v=o(m);"production"!==e.env.NODE_ENV&&"string"==typeof r.name&&"isCrushed"!==r.name&&(0,v.default)("You are currently using minified code outside of NODE_ENV === 'production'. This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) to ensure you have the correct code for your production build."),t.createStore=a.default,t.combineReducers=l.default,t.bindActionCreators=c.default,t.applyMiddleware=f.default,t.compose=h.default}).call(t,n(2))},function(e,t,n){function o(){}function r(e){var n="",o=!1;return n+=e.type,t.BINARY_EVENT!=e.type&&t.BINARY_ACK!=e.type||(n+=e.attachments,n+="-"),e.nsp&&"/"!=e.nsp&&(o=!0,n+=e.nsp),null!=e.id&&(o&&(n+=",",o=!1),n+=e.id),null!=e.data&&(o&&(n+=","),n+=f.stringify(e.data)),d("encoded %j as %s",e,n),n}function i(e,t){function n(e){var n=h.deconstructPacket(e),o=r(n.packet),i=n.buffers;i.unshift(o),t(i)}h.removeBlobs(e,n)}function a(){this.reconstructor=null}function s(e){var n={},o=0;if(n.type=Number(e.charAt(0)),null==t.types[n.type])return c();if(t.BINARY_EVENT==n.type||t.BINARY_ACK==n.type){for(var r="";"-"!=e.charAt(++o)&&(r+=e.charAt(o),o!=e.length););if(r!=Number(r)||"-"!=e.charAt(o))throw new Error("Illegal attachments");n.attachments=Number(r)}if("/"==e.charAt(o+1))for(n.nsp="";++o;){var i=e.charAt(o);if(","==i)break;if(n.nsp+=i,o==e.length)break}else n.nsp="/";var a=e.charAt(o+1);if(""!==a&&Number(a)==a){for(n.id="";++o;){var i=e.charAt(o);if(null==i||Number(i)!=i){--o;break}if(n.id+=e.charAt(o),o==e.length)break}n.id=Number(n.id)}return e.charAt(++o)&&(n=l(n,e.substr(o))),d("decoded %s as %j",e,n),n}function l(e,t){try{e.data=f.parse(t)}catch(e){return c()}return e}function u(e){this.reconPack=e,this.buffers=[]}function c(e){return{type:t.ERROR,data:"parser error"}}var d=n(790)("socket.io-parser"),f=n(516),p=n(789),h=n(788),m=n(323);t.protocol=4,t.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],t.CONNECT=0,t.DISCONNECT=1,t.EVENT=2,t.ACK=3,t.ERROR=4,t.BINARY_EVENT=5,t.BINARY_ACK=6,t.Encoder=o,t.Decoder=a,o.prototype.encode=function(e,n){if(d("encoding packet %j",e),t.BINARY_EVENT==e.type||t.BINARY_ACK==e.type)i(e,n);else{var o=r(e);n([o])}},p(a.prototype),a.prototype.add=function(e){var n;if("string"==typeof e)n=s(e),t.BINARY_EVENT==n.type||t.BINARY_ACK==n.type?(this.reconstructor=new u(n),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",n)):this.emit("decoded",n);else{if(!m(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");n=this.reconstructor.takeBinaryData(e),n&&(this.reconstructor=null,this.emit("decoded",n))}},a.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},u.prototype.takeBinaryData=function(e){if(this.buffers.push(e),this.buffers.length==this.reconPack.attachments){var t=h.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null},u.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,n){(function(t){"use strict";var o=n(29),r=n(338),i=n(341),a=n(347),s=n(345),l=n(191),u="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(340);e.exports=function(e){return new Promise(function(c,d){var f=e.data,p=e.headers;o.isFormData(f)&&delete p["Content-Type"];var h=new XMLHttpRequest,m="onreadystatechange",v=!1;if("test"===t.env.NODE_ENV||"undefined"==typeof window||!window.XDomainRequest||"withCredentials"in h||s(e.url)||(h=new window.XDomainRequest,m="onload",v=!0,h.onprogress=function(){},h.ontimeout=function(){}),e.auth){var y=e.auth.username||"",g=e.auth.password||"";p.Authorization="Basic "+u(y+":"+g)}if(h.open(e.method.toUpperCase(),i(e.url,e.params,e.paramsSerializer),!0),h.timeout=e.timeout,h[m]=function(){if(h&&(4===h.readyState||v)&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))){var t="getAllResponseHeaders"in h?a(h.getAllResponseHeaders()):null,n=e.responseType&&"text"!==e.responseType?h.response:h.responseText,o={data:n,status:1223===h.status?204:h.status,statusText:1223===h.status?"No Content":h.statusText,headers:t,config:e,request:h};r(c,d,o),h=null}},h.onerror=function(){d(l("Network Error",e)),h=null},h.ontimeout=function(){d(l("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED")),h=null},o.isStandardBrowserEnv()){var b=n(343),E=(e.withCredentials||s(e.url))&&e.xsrfCookieName?b.read(e.xsrfCookieName):void 0;E&&(p[e.xsrfHeaderName]=E)}if("setRequestHeader"in h&&o.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:h.setRequestHeader(t,e)}),e.withCredentials&&(h.withCredentials=!0),e.responseType)try{h.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&h.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){h&&(h.abort(),d(e),h=null)}),void 0===f&&(f=null),h.send(f)})}}).call(t,n(2))},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";var o=n(337);e.exports=function(e,t,n,r){var i=new Error(e);return o(i,t,n,r)}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),o=0;o0&&h==v?u.default.createElement(d.Button,{className:"btn btn-sm btn-success",onClick:function(){f(n.id)}},u.default.createElement("i",{className:"fa fa-play"})):void 0,g>0?u.default.createElement(d.Button,{className:"btn btn-sm btn-warning",onClick:function(){f(n.id)}},u.default.createElement("i",{className:"fa fa-forward"})):void 0,u.default.createElement(d.Button,{className:"btn btn-sm btn-success",onClick:function(){e.refs.step_modal_new.wrappedInstance.show({fermenter_id:n.id,name:"",temp:"",days:"",minutes:"",hours:""})}},u.default.createElement("i",{className:"fa fa-plus"}))),u.default.createElement("div",{className:"clearfix"})),u.default.createElement("div",{className:"list-group"},n.steps?n.steps.map(this.render_step.bind(this)):void 0,u.default.createElement(O.default,{ref:"step_modal",save:!0,remove:!0}),u.default.createElement(O.default,{ref:"step_modal_new",add:!0}))))}}]),t}(l.Component),S=function(e,t){var n=e.fermenter.list[t.id];return{data:n,cooler:n.cooler?e.actor.actors[n.cooler]||{}:{},heater:n.heater?e.actor.actors[n.heater]||{}:{},sensor:n.sensor?e.sensor.sensors[n.sensor]||{}:{},sensor2:n.sensor2?e.sensor.sensors[n.sensor2]||{}:{},sensor3:n.sensor3?e.sensor.sensors[n.sensor3]||{}:{},inactive_count:n.steps?n.steps.filter(function(e){return"I"===e.state}).length:0,active_count:n.steps?n.steps.filter(function(e){return"A"===e.state}).length:0,count:n.steps?n.steps.length:0,unit:(0,k.get_parameter)(e,"unit","C")}},M=function(e,t,n){return{start:function(t){ -e((0,p.start)(t))},stop:function(t){e((0,p.stop)(t))},toggle:function(t){e((0,f.toggle)(t))},toggle_automatic:function(t){e((0,p.toggle_automatic)(t))}}};P.contextTypes={router:u.default.PropTypes.shape({history:u.default.PropTypes.object.isRequired})},t.default=(0,c.connect)(S,M,null,{withRef:!0})(P)},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(91),l=function(e,t){return{title:"Kettle Modal ",bsSize:"large",form:[{label:"Name",name:"name",type:"text"},{label:"Logic",clear_config:!0,name:"logic",type:"select",options:Object.keys(e.kettle.config_type)},{label:"Actor",name:"heater",type:"actor"},{label:"Agitator",name:"agitator",type:"actor"},{label:"Sensor",name:"sensor",type:"sensor"}],types:e.kettle.config_type,configfield:"logic",actors:e.actor.actors,sensors:e.sensor.sensors}},u=function(e,t,n){return{btn_save:function(t){return e((0,s.save)(t)),!0},btn_add:function(t){return e((0,s.add)(t)),!0},btn_delete:function(t){return e((0,s.remove)(t)),!0}}},c=(0,r.connect)(l,u,null,{withRef:!0})(a.default);t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case"ADDON_UPDATE_FINISHED":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{loading:{$set:!1}})));case"ADDON_UPDATE_STARTED":case"ADDON_DOWNLOAD_STARTED":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{loading:{$set:!0}})));case"ADDON_DOWNLOADED":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{installed:{$set:!0},loading:{$set:!1}})));case"DELETE_ADDON":return i({},e,r({},t.payload,(0,u.default)(e[t.payload],{installed:{$set:!1}})));case"SET_ADDON_LIST":return i({},t.payload);default:return e}});t.default=d},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:s(),t=arguments[1];switch(t.type){case"LOAD_STATE":return[].concat(r(t.payload.messages));case"NOTIFY":return[].concat(r(e),[t.payload]);case"DISMISS_NOTIFICATION":return e.filter(function(e,n){return e.id!==t.id});default:return e}});t.default=l},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),i=n(30),a=o(i),s=n(73),l=function(e,t){return{title:"Set Date and Time",form:[{label:"Date",name:"date",type:"text"},{label:"Time",name:"time",type:"text"}]}},u=function(e,t){return{btn_save:function(t){return e((0,s.set_time)(t.date,t.time)),!0},btn_add:function(e){return!0},btn_delete:function(e){return!0}}};t.default=(0,r.connect)(l,u,null,{withRef:!0})(a.default)},function(e,t,n){e.exports={default:n(401),__esModule:!0}},function(e,t,n){e.exports={default:n(402),__esModule:!0}},function(e,t,n){e.exports={default:n(404),__esModule:!0}},function(e,t,n){e.exports={default:n(405),__esModule:!0}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(201),i=o(r);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);tl;)o(s,n=t[l++])&&(~i(u,n)||u.push(n));return u}},function(e,t,n){var o=n(36),r=n(26),i=n(60);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),o(o.S+o.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){var o=n(62),r=n(41),i=n(79).f;e.exports=function(e){return function(t){for(var n,a=r(t),s=o(a),l=s.length,u=0,c=[];l>u;)i.call(a,n=s[u++])&&c.push(e?[n,a[n]]:a[n]);return c}}},function(e,t,n){e.exports=n(61)},function(e,t,n){var o=n(133),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(431)(!0);n(211)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=o(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t0&&void 0!==arguments[0]?arguments[0]:(0,a.default)();try{return e.activeElement}catch(e){}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(63),a=o(i);e.exports=t.default},function(e,t){"use strict";function n(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")!==-1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){var t=(0,c.default)(e),n=(0,l.default)(t),o=t&&t.documentElement,r={top:0,left:0,height:0,width:0};if(t)return(0,a.default)(o,e)?(void 0!==e.getBoundingClientRect&&(r=e.getBoundingClientRect()),r={top:r.top+(n.pageYOffset||o.scrollTop)-(o.clientTop||0),left:r.left+(n.pageXOffset||o.scrollLeft)-(o.clientLeft||0),width:(null==r.width?e.offsetWidth:r.width)||0,height:(null==r.height?e.offsetHeight:r.height)||0}):r}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(64),a=o(i),s=n(98),l=o(s),u=n(63),c=o(u);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=(0,a.default)(e);return void 0===t?n?"pageYOffset"in n?n.pageYOffset:n.document.documentElement.scrollTop:e.scrollTop:void(n?n.scrollTo("pageXOffset"in n?n.pageXOffset:n.document.documentElement.scrollLeft,t):e.scrollTop=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(98),a=o(i);e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){for(var e=document.createElement("div").style,t={O:function(e){return"o"+e.toLowerCase()},Moz:function(e){return e.toLowerCase()},Webkit:function(e){return"webkit"+e},ms:function(e){return"MS"+e}},n=Object.keys(t),o=void 0,r=void 0,i="",a=0;a=t[t.length-1].options.index)return void t.push(e);for(var o=0;on)return void t.splice(o,0,e)}}},{key:"reset",value:function(){this.registry=[]}},{key:"remove",value:function(e){var t=this.registry.indexOf(e);this.registry.splice(t,1)}},{key:"toString",value:function(e){return this.registry.filter(function(e){return e.attached}).map(function(t){return t.toString(e)}).join("\n")}}]),e}();t.default=r},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.Renderer)return e.Renderer;var t=e.virtual||!a.default;return t?c.default:l.default}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var i=n(101),a=o(i),s=n(532),l=o(s),u=n(533),c=o(u)},function(e,t){"use strict";function n(e){return Array.isArray(e)?Array.isArray(e[0])?n(e.map(o)):e.join(", "):e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var o=function(e){return e.join(" ")}},function(e,t,n){var o=n(552),r=o.Symbol;e.exports=r},function(e,t){var n=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,o=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];e.exports=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");r!=-1&&i!=-1&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var a=n.exec(e||""),s={},l=14;l--;)s[o[l]]=a[l]||"";return r!=-1&&i!=-1&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s}},function(e,t,n){(function(t){"use strict";var o=n(27),r=n(11),i=n(12),a=n(243),s=n(556);e.exports=function(e,n){function l(e){var t=e&&(T&&e[T]||e[k]);if("function"==typeof t)return t}function u(e,t){return e===t?0!==e||1/e===1/t:e!==e&&t!==t}function c(e){this.message=e,this.stack=""}function d(e){function o(o,u,d,f,p,h,m){if(f=f||P,h=h||d,m!==a)if(n)r(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==t.env.NODE_ENV&&"undefined"!=typeof console){var v=f+":"+d;!s[v]&&l<3&&(i(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",h,f),s[v]=!0,l++)}return null==u[d]?o?new c(null===u[d]?"The "+p+" `"+h+"` is marked as required "+("in `"+f+"`, but its value is `null`."):"The "+p+" `"+h+"` is marked as required in "+("`"+f+"`, but its value is `undefined`.")):null:e(u,d,f,p,h)}if("production"!==t.env.NODE_ENV)var s={},l=0;var u=o.bind(null,!1);return u.isRequired=o.bind(null,!0),u}function f(e){function t(t,n,o,r,i,a){var s=t[n],l=C(s);if(l!==e){var u=O(s);return new c("Invalid "+r+" `"+i+"` of type "+("`"+u+"` supplied to `"+o+"`, expected ")+("`"+e+"`."))}return null}return d(t)}function p(){return d(o.thatReturnsNull)}function h(e){function t(t,n,o,r,i){if("function"!=typeof e)return new c("Property `"+i+"` of component `"+o+"` has invalid PropType notation inside arrayOf.");var s=t[n];if(!Array.isArray(s)){var l=C(s);return new c("Invalid "+r+" `"+i+"` of type "+("`"+l+"` supplied to `"+o+"`, expected an array."))}for(var u=0;u1?(!n&&t&&(o.className+=" "+t),p.default.createElement("div",o)):p.default.Children.only(o.children)},t}(f.Component);v.propTypes={children:m.default.any,className:m.default.string,visible:m.default.bool,hiddenClassName:m.default.string},t.default=v,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(38),_=o(E),x={active:b.default.bool,href:b.default.string,title:b.default.node,target:b.default.string},w={active:!1},C=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.active,n=e.href,o=e.title,r=e.target,a=e.className,l=(0,s.default)(e,["active","href","title","target","className"]),u={href:n,title:o,target:r};return y.default.createElement("li",{className:(0,m.default)(a,{active:t})},t?y.default.createElement("span",l):y.default.createElement(_.default,(0,i.default)({},l,u)))},t}(y.default.Component);C.propTypes=x,C.defaultProps=w,t.default=C,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(109),_=o(E),x=n(85),w=o(x),C=n(10),O={vertical:b.default.bool,justified:b.default.bool,block:(0,_.default)(b.default.bool,function(e){var t=e.block,n=e.vertical;return t&&!n?new Error("`block` requires `vertical` to be set to have any effect"):null})},N={block:!1,justified:!1,vertical:!1},T=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e,t=this.props,n=t.block,o=t.justified,r=t.vertical,a=t.className,l=(0,s.default)(t,["block","justified","vertical","className"]),u=(0,C.splitBsProps)(l),c=u[0],d=u[1],f=(0,i.default)({},(0,C.getClassSet)(c),(e={},e[(0,C.prefix)(c)]=!r,e[(0,C.prefix)(c,"vertical")]=r,e[(0,C.prefix)(c,"justified")]=o,e[(0,C.prefix)(w.default.defaultProps,"block")]=n,e));return y.default.createElement("div",(0,i.default)({},d,{className:(0,m.default)(a,f)}))},t}(y.default.Component);T.propTypes=O,T.defaultProps=N,t.default=(0,C.bsClass)("btn-group",T),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(20),_=o(E),x=n(642),w=o(x),C={direction:b.default.oneOf(["prev","next"]),onAnimateOutEnd:b.default.func,active:b.default.bool,animateIn:b.default.bool,animateOut:b.default.bool,index:b.default.number},O={active:!1,animateIn:!1,animateOut:!1},N=function(e){function t(n,o){(0,u.default)(this,t);var r=(0,d.default)(this,e.call(this,n,o));return r.handleAnimateOutEnd=r.handleAnimateOutEnd.bind(r),r.state={direction:null},r.isUnmounted=!1,r}return(0,p.default)(t,e),t.prototype.componentWillReceiveProps=function(e){this.props.active!==e.active&&this.setState({direction:null})},t.prototype.componentDidUpdate=function(e){var t=this,n=this.props.active,o=e.active;!n&&o&&w.default.addEndEventListener(_.default.findDOMNode(this),this.handleAnimateOutEnd),n!==o&&setTimeout(function(){return t.startAnimation()},20)},t.prototype.componentWillUnmount=function(){this.isUnmounted=!0},t.prototype.handleAnimateOutEnd=function(){this.isUnmounted||this.props.onAnimateOutEnd&&this.props.onAnimateOutEnd(this.props.index)},t.prototype.startAnimation=function(){this.isUnmounted||this.setState({direction:"prev"===this.props.direction?"right":"left"})},t.prototype.render=function(){var e=this.props,t=e.direction,n=e.active,o=e.animateIn,r=e.animateOut,a=e.className,l=(0,s.default)(e,["direction","active","animateIn","animateOut","className"]);delete l.onAnimateOutEnd,delete l.index;var u={item:!0,active:n&&!o||r};return t&&n&&o&&(u[t]=!0),this.state.direction&&(o||r)&&(u[this.state.direction]=!0),y.default.createElement("div",(0,i.default)({},l,{className:(0,m.default)(a,u)}))},t}(y.default.Component);N.propTypes=C,N.defaultProps=O,t.default=N,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(1),m=o(h),v=n(7),y=o(v),g=n(9),b=o(g),E=n(85),_=o(E),x=n(38),w=o(x),C=n(10),O={noCaret:y.default.bool,open:y.default.bool,title:y.default.string,useAnchor:y.default.bool},N={open:!1,useAnchor:!1,bsRole:"toggle"},T=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.noCaret,n=e.open,o=e.useAnchor,r=e.bsClass,a=e.className,l=e.children,u=(0,s.default)(e,["noCaret","open","useAnchor","bsClass","className","children"]);delete u.bsRole;var c=o?w.default:_.default,d=!t;return m.default.createElement(c,(0,i.default)({},u,{role:"button",className:(0,b.default)(a,r),"aria-haspopup":!0,"aria-expanded":n}),l||u.title,d&&" ",d&&m.default.createElement("span",{className:"caret"}))},t}(m.default.Component);T.propTypes=O,T.defaultProps=N,t.default=(0,C.bsClass)("dropdown-toggle",T),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(17),_=o(E),x=n(10),w={fluid:b.default.bool,componentClass:_.default},C={componentClass:"div",fluid:!1},O=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.fluid,n=e.componentClass,o=e.className,r=(0,s.default)(e,["fluid","componentClass","className"]),a=(0,x.splitBsProps)(r),l=a[0],u=a[1],c=(0,x.prefix)(l,t&&"fluid");return y.default.createElement(n,(0,i.default)({},u,{className:(0,m.default)(o,c)}))},t}(y.default.Component);O.propTypes=w,O.defaultProps=C,t.default=(0,x.bsClass)("container",O),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(58),i=o(r),a=n(3),s=o(a),l=n(8),u=o(l),c=n(4),d=o(c),f=n(6),p=o(f),h=n(5),m=o(h),v=n(9),y=o(v),g=n(1),b=o(g),E=n(7),_=o(E),x=n(10),w=n(24),C={active:_.default.any,disabled:_.default.any,header:_.default.node,listItem:_.default.bool,onClick:_.default.func,href:_.default.string,type:_.default.string},O={listItem:!1},N=function(e){function t(){return(0,d.default)(this,t),(0,p.default)(this,e.apply(this,arguments))}return(0,m.default)(t,e),t.prototype.renderHeader=function(e,t){return b.default.isValidElement(e)?(0,g.cloneElement)(e,{className:(0,y.default)(e.props.className,t)}):b.default.createElement("h4",{className:t},e)},t.prototype.render=function(){var e=this.props,t=e.active,n=e.disabled,o=e.className,r=e.header,i=e.listItem,a=e.children,l=(0,u.default)(e,["active","disabled","className","header","listItem","children"]),c=(0,x.splitBsProps)(l),d=c[0],f=c[1],p=(0,s.default)({},(0,x.getClassSet)(d),{active:t,disabled:n}),h=void 0;return f.href?h="a":f.onClick?(h="button",f.type=f.type||"button"):h=i?"li":"span",f.className=(0,y.default)(o,p),r?b.default.createElement(h,f,this.renderHeader(r,(0,x.prefix)(d,"heading")),b.default.createElement("p",{className:(0,x.prefix)(d,"text")},a)):b.default.createElement(h,f,a)},t}(b.default.Component);N.propTypes=C,N.defaultProps=O,t.default=(0,x.bsClass)("list-group-item",(0,x.bsStyles)((0,i.default)(w.State),N)),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(10),_={componentClass:b.default},x={componentClass:"div"},w=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,E.splitBsProps)(o),a=r[0],l=r[1],u=(0,E.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);w.propTypes=_,w.defaultProps=x,t.default=(0,E.bsClass)("modal-body",w),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(10),_={componentClass:b.default},x={componentClass:"div"},w=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,E.splitBsProps)(o),a=r[0],l=r[1],u=(0,E.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);w.propTypes=_,w.defaultProps=x,t.default=(0,E.bsClass)("modal-footer",w),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(7),b=o(g),E=n(10),_=n(23),x=o(_),w={"aria-label":b.default.string,closeButton:b.default.bool,onHide:b.default.func},C={"aria-label":"Close",closeButton:!1},O={$bs_modal:b.default.shape({onHide:b.default.func})},N=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e["aria-label"],n=e.closeButton,o=e.onHide,r=e.className,a=e.children,l=(0,s.default)(e,["aria-label","closeButton","onHide","className","children"]),u=this.context.$bs_modal,c=(0,E.splitBsProps)(l),d=c[0],f=c[1],p=(0,E.getClassSet)(d);return y.default.createElement("div",(0,i.default)({},f,{className:(0,m.default)(r,p)}),n&&y.default.createElement("button",{type:"button",className:"close","aria-label":t,onClick:(0,x.default)(u&&u.onHide,o)},y.default.createElement("span",{"aria-hidden":"true"},"×")),a)},t}(y.default.Component);N.propTypes=w,N.defaultProps=C,N.contextTypes=O,t.default=(0,E.bsClass)("modal-header",N),e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(3),i=o(r),a=n(8),s=o(a),l=n(4),u=o(l),c=n(6),d=o(c),f=n(5),p=o(f),h=n(9),m=o(h),v=n(1),y=o(v),g=n(17),b=o(g),E=n(10),_={componentClass:b.default},x={componentClass:"h4"},w=function(e){function t(){return(0,u.default)(this,t),(0,d.default)(this,e.apply(this,arguments))}return(0,p.default)(t,e),t.prototype.render=function(){var e=this.props,t=e.componentClass,n=e.className,o=(0,s.default)(e,["componentClass","className"]),r=(0,E.splitBsProps)(o),a=r[0],l=r[1],u=(0,E.getClassSet)(a);return y.default.createElement(t,(0,i.default)({},l,{className:(0,m.default)(n,u)}))},t}(y.default.Component);w.propTypes=_,w.defaultProps=x,t.default=(0,E.bsClass)("modal-title",w),e.exports=t.default},function(e,t,n){(function(o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(3),a=r(i),s=n(8),l=r(s),u=n(4),c=r(u),d=n(6),f=r(d),p=n(5),h=r(p),m=n(9),v=r(m),y=n(150),g=r(y),b=n(1),E=r(b),_=n(7),x=r(_),w=n(20),C=r(w),O=n(109),N=r(O),T=n(18),k=r(T),P=n(10),S=n(23),M=r(S),A=n(28),D=r(A),R={activeKey:x.default.any,activeHref:x.default.string,stacked:x.default.bool,justified:(0,N.default)(x.default.bool,function(e){var t=e.justified,n=e.navbar;return t&&n?Error("justified navbar `Nav`s are not supported"):null}),onSelect:x.default.func,role:x.default.string,navbar:x.default.bool,pullRight:x.default.bool,pullLeft:x.default.bool},I={justified:!1,pullRight:!1,pullLeft:!1,stacked:!1},j={$bs_navbar:x.default.shape({bsClass:x.default.string,onSelect:x.default.func}),$bs_tabContainer:x.default.shape({activeKey:x.default.any,onSelect:x.default.func.isRequired,getTabId:x.default.func.isRequired,getPaneId:x.default.func.isRequired})},L=function(e){function t(){return(0,c.default)(this,t),(0,f.default)(this,e.apply(this,arguments))}return(0,h.default)(t,e),t.prototype.componentDidUpdate=function(){var e=this;if(this._needsRefocus){this._needsRefocus=!1;var t=this.props.children,n=this.getActiveProps(),o=n.activeKey,r=n.activeHref,i=D.default.find(t,function(t){return e.isActive(t,o,r)}),a=D.default.toArray(t),s=a.indexOf(i),l=C.default.findDOMNode(this).children,u=l&&l[s];u&&u.firstChild&&u.firstChild.focus()}},t.prototype.handleTabKeyDown=function(e,t){var n=void 0;switch(t.keyCode){case g.default.codes.left:case g.default.codes.up:n=this.getNextActiveChild(-1);break;case g.default.codes.right:case g.default.codes.down:n=this.getNextActiveChild(1);break;default:return}t.preventDefault(),e&&n&&null!=n.props.eventKey&&e(n.props.eventKey),this._needsRefocus=!0},t.prototype.getNextActiveChild=function(e){var t=this,n=this.props.children,o=n.filter(function(e){return null!=e.props.eventKey&&!e.props.disabled}),r=this.getActiveProps(),i=r.activeKey,a=r.activeHref,s=D.default.find(n,function(e){return t.isActive(e,i,a)}),l=o.indexOf(s);if(l===-1)return o[0];var u=l+e,c=o.length;return u>=c?u=0:u<0&&(u=c-1),o[u]},t.prototype.getActiveProps=function(){var e=this.context.$bs_tabContainer;return e?("production"!==o.env.NODE_ENV?(0,k.default)(null==this.props.activeKey&&!this.props.activeHref,"Specifying a `