From 8d208906c82b194d18bfdd84370e3385ebcd5043 Mon Sep 17 00:00:00 2001 From: Patrick McDonagh Date: Thu, 12 Apr 2018 18:33:35 -0500 Subject: [PATCH] Adds tests for action creators and reducers --- .babelrc | 3 + .eslintrc.js | 3 +- .travis.yml | 2 + __mock__/electron.js | 4 + __tests__/actions/actions_plc.test.js | 89 ++ __tests__/actions/actions_tags.test.js | 112 ++ __tests__/reducers/reducer_alarm.test.js | 44 + __tests__/reducers/reducer_events.test.js | 39 + __tests__/reducers/reducer_plc.test.js | 52 + __tests__/reducers/reducer_taghistory.test.js | 41 + __tests__/reducers/reducer_tags.test.js | 63 + app/build/bundle.js | 1384 ++++++++++++++++- app/build/main.css | 14 + app/src/actions/actions_plc.js | 9 +- app/src/components/Controls.js | 7 + app/src/components/EventLog.js | 75 + app/src/components/Header.js | 54 +- app/src/components/Main.js | 215 ++- app/src/components/Permissives.js | 7 + app/src/components/Settings.js | 134 +- app/src/components/TagsIndex.js | 7 + app/src/global.css | 15 + app/src/reducers/index.js | 6 +- app/src/reducers/reducer_alarm.js | 33 + app/src/reducers/reducer_events.js | 28 + app/src/reducers/reducer_plc.js | 6 +- app/src/reducers/reducer_taghistory.js | 2 +- app/src/renderer_process.js | 9 +- main_process.js | 19 +- package.json | 26 +- tagList.json | 77 +- 31 files changed, 2458 insertions(+), 121 deletions(-) create mode 100644 .babelrc create mode 100644 .travis.yml create mode 100644 __mock__/electron.js create mode 100644 __tests__/actions/actions_plc.test.js create mode 100644 __tests__/actions/actions_tags.test.js create mode 100644 __tests__/reducers/reducer_alarm.test.js create mode 100644 __tests__/reducers/reducer_events.test.js create mode 100644 __tests__/reducers/reducer_plc.test.js create mode 100644 __tests__/reducers/reducer_taghistory.test.js create mode 100644 __tests__/reducers/reducer_tags.test.js create mode 100644 app/src/components/EventLog.js create mode 100644 app/src/reducers/reducer_alarm.js create mode 100644 app/src/reducers/reducer_events.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..7dfe4e9 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["react", "es2015", "stage-1"] +} diff --git a/.eslintrc.js b/.eslintrc.js index f423366..511aac9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,7 +2,8 @@ module.exports = { "env": { "browser": true, "es6": true, - "node": true + "node": true, + "jest": true }, "extends": [ "eslint:recommended", diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..98ad5e1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,2 @@ +language: node_js +node_js: "node" \ No newline at end of file diff --git a/__mock__/electron.js b/__mock__/electron.js new file mode 100644 index 0000000..26ad67a --- /dev/null +++ b/__mock__/electron.js @@ -0,0 +1,4 @@ +export const ipcRenderer = { + on: jest.fn(), + send: jest.fn() +}; \ No newline at end of file diff --git a/__tests__/actions/actions_plc.test.js b/__tests__/actions/actions_plc.test.js new file mode 100644 index 0000000..4e1e167 --- /dev/null +++ b/__tests__/actions/actions_plc.test.js @@ -0,0 +1,89 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +import { setPlcIpAddress, SET_PLC_IPADDRESS, ipcPlcInitializeSend, INITIALIZE_PLC, ipcPlcDetailsReceived, PLC_DATA_RECEIVED, ipcPlcErrorReceived, PLC_ERROR_RECEIVED } from "../../app/src/actions/actions_plc"; +import { ipcRenderer } from "electron"; +configure({ adapter: new Adapter() }); + +describe("actions_plc", () => { + describe("setPlcIpAddress", () => { + let action; + + beforeEach(() => { + action = setPlcIpAddress("192.168.1.10"); + }); + + + it("has the correct type", () => { + expect(action.type).toEqual(SET_PLC_IPADDRESS); + }); + + it("has the correct payload", () => { + expect(action.payload).toEqual("192.168.1.10"); + }); + }); + + describe("ipcPlcInitializeSend", () => { + let action; + const tagList = { + test: { name: "test", value: 100.0 } + }; + beforeEach(() => { + action = ipcPlcInitializeSend("192.168.1.10", tagList); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(INITIALIZE_PLC); + }); + + it("has the correct payload", () => { + expect(action.payload).toBeTruthy(); + }); + + it("triggers the ipcRenderer.send function", () => { + expect(ipcRenderer.send).toHaveBeenCalled(); + }); + + }); + + describe("ipcPlcDetailsReceived", () => { + let action; + const plcData = { + ipAddress: "192.168.1.10", + details: { + name: "CLX" + } + }; + beforeEach(() => { + action = ipcPlcDetailsReceived(undefined, plcData); + }); + + + it("has the correct type", () => { + expect(action.type).toEqual(PLC_DATA_RECEIVED); + }); + + it("has the correct payload", () => { + expect(action.payload).toEqual({ + ipAddress: "192.168.1.10", + details: { + name: "CLX" + } + }); + }); + }); + + describe("ipcPlcErrorReceived", () => { + let action; + beforeEach(() => { + action = ipcPlcErrorReceived(undefined, "ERROR MESSAGE!"); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(PLC_ERROR_RECEIVED); + }); + + it("has the correct payload", () => { + expect(action.payload).toEqual("ERROR MESSAGE!"); + }); + }); +}); \ No newline at end of file diff --git a/__tests__/actions/actions_tags.test.js b/__tests__/actions/actions_tags.test.js new file mode 100644 index 0000000..23921b7 --- /dev/null +++ b/__tests__/actions/actions_tags.test.js @@ -0,0 +1,112 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +import { ipcRenderer } from "electron"; +import { ipcTagUpdate, IPC_TAGSYNC, IPC_TAGUPDATE, ipcTagSync, storeNewTag, STORE_NEW_TAG, deleteTag, DELETE_TAG, writeTag, WRITE_TAG } from "../../app/src/actions/actions_tags"; +configure({ adapter: new Adapter() }); + +describe("actions_tags", () => { + describe("ipcTagUpdate", () => { + let action; + + const sampleTag = { state: { + tag: { + name: "test", + value: 100.0 + } + }}; + + beforeEach(() => { + action = ipcTagUpdate(undefined, sampleTag); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(IPC_TAGUPDATE); + }); + + it("has the correct payload", () => { + expect(action.payload).toEqual({ name: "test", value: 100.0 }); + }); + }); + + describe("ipcTagSync", () => { + let action; + + const sampleTag = { test: { + name: "test", + value: 100.0 + }}; + + beforeEach(() => { + action = ipcTagSync("192.168.1.10", sampleTag); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(IPC_TAGSYNC); + }); + + it("has the correct payload", () => { + expect(action.payload).toBeTruthy(); + }); + + it("should execute the ipcRenderer.send function", () => { + expect(ipcRenderer.send).toHaveBeenCalled(); + }); + }); + + describe("storeNewTag", () => { + let action; + + const sampleTag = { + name: "test", + value: 100.0 + }; + + beforeEach(() => { + action = storeNewTag(sampleTag); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(STORE_NEW_TAG); + }); + + it("has the correct payload", () => { + expect(action.payload).toEqual({ name: "test", value: 100.0 }); + }); + }); + + describe("deleteTag", () => { + let action; + + beforeEach(() => { + action = deleteTag("test"); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(DELETE_TAG); + }); + + it("has the correct payload", () => { + expect(action.payload).toEqual("test"); + }); + }); + + describe("writeTag", () => { + let action; + + beforeEach(() => { + action = writeTag("test", 100.0); + }); + + it("has the correct type", () => { + expect(action.type).toEqual(WRITE_TAG); + }); + + it("has the correct payload", () => { + expect(action.payload).toBeTruthy(); + }); + + it("should execute the ipcRenderer.send function", () => { + expect(ipcRenderer.send).toHaveBeenCalled(); + }); + }); +}); \ No newline at end of file diff --git a/__tests__/reducers/reducer_alarm.test.js b/__tests__/reducers/reducer_alarm.test.js new file mode 100644 index 0000000..b3d5f6f --- /dev/null +++ b/__tests__/reducers/reducer_alarm.test.js @@ -0,0 +1,44 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +configure({ adapter: new Adapter() }); + +import AlarmReducer from "../../app/src/reducers/reducer_alarm"; +import { IPC_TAGUPDATE } from "../../app/src/actions/actions_tags"; + +describe("reducer_alarm", () => { + it("should not change state on unused type", () => { + expect(AlarmReducer(["test", "test"], "test")).toEqual(["test", "test"]); + }); + + it("should return a default empty object", () => { + expect(AlarmReducer(undefined, "test")).toEqual([]); + }); + + describe("IPC_TAGUPDATE", () => { + let action = { + type: IPC_TAGUPDATE, + payload: "" + }; + + it("should not change active alarms if tag not in alarm list", () => { + action.payload = { name: "test", value: false }; + expect(AlarmReducer([], action)).toEqual([]); + }); + + it("should add the tag to active alarms if alarm tag value is true", () => { + action.payload = { name: "alarm_ESTOP", value: true }; + expect(AlarmReducer([], action)).toEqual(["alarm_ESTOP"]); + }); + + it("should not change active alarms if alarm tag value is false", () => { + action.payload = { name: "alarm_ESTOP", value: false }; + expect(AlarmReducer(["test"], action)).toEqual(["test"]); + }); + + it("should remove the event from the list if alarm tag value is false", () => { + action.payload = { name: "alarm_ESTOP", value: false }; + expect(AlarmReducer(["alarm_ESTOP"], action)).toEqual([]); + }); + + }); +}); \ No newline at end of file diff --git a/__tests__/reducers/reducer_events.test.js b/__tests__/reducers/reducer_events.test.js new file mode 100644 index 0000000..2766230 --- /dev/null +++ b/__tests__/reducers/reducer_events.test.js @@ -0,0 +1,39 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +configure({ adapter: new Adapter() }); + +import EventsReducer from "../../app/src/reducers/reducer_events"; +import { IPC_TAGUPDATE } from "../../app/src/actions/actions_tags"; + +describe("reducer_events", () => { + it("should not change state on unused type", () => { + expect(EventsReducer(["test", "test"], "test")).toEqual(["test", "test"]); + }); + + it("should return a default empty object", () => { + expect(EventsReducer(undefined, "test")).toEqual([]); + }); + + describe("IPC_TAGUPDATE", () => { + let action = { + type: IPC_TAGUPDATE, + payload: "" + }; + + it("should add an event to the event log for an event tag true", () => { + action.payload = { name: "cmd_Start", value: true }; + const newState = EventsReducer([], action); + expect(newState[0].tag).toEqual("cmd_Start"); + }); + + it("should return unaltered event log if not in event log", () => { + action.payload = { name: "test", value: true }; + expect(EventsReducer([], action)).toEqual([]); + }); + + it("should return unaltered event log if event tag value false", () => { + action.payload = { name: "cmd_Start", value: false }; + expect(EventsReducer([], action)).toEqual([]); + }); + }); +}); \ No newline at end of file diff --git a/__tests__/reducers/reducer_plc.test.js b/__tests__/reducers/reducer_plc.test.js new file mode 100644 index 0000000..46f364d --- /dev/null +++ b/__tests__/reducers/reducer_plc.test.js @@ -0,0 +1,52 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +configure({ adapter: new Adapter() }); + +import PlcReducer from "../../app/src/reducers/reducer_plc"; +import { SET_PLC_IPADDRESS, PLC_DATA_RECEIVED, PLC_ERROR_RECEIVED } from "../../app/src/actions/actions_plc"; + +describe("PlcReducer", () => { + it("should not change state on unused type", () => { + expect(PlcReducer({test: "test"}, {})).toEqual({test: "test"}); + }); + + it("should return a default empty object", () => { + expect(PlcReducer(undefined, "test")).toEqual({}); + }); + + describe("SET_PLC_IPADDRESS", ()=>{ + const action = { + type: SET_PLC_IPADDRESS, + payload: "192.168.1.10" + }; + + it("should add ip address to state", ()=> { + const state = PlcReducer({}, action); + expect(state.ipAddress).toEqual(action.payload); + }); + }); + + describe("PLC_DATA_RECEIVED", ()=>{ + const action = { + type: PLC_DATA_RECEIVED, + payload: {name: "test"} + }; + + it("should add details to state", ()=> { + const state = PlcReducer({}, action); + expect(state).toEqual(action.payload); + }); + }); + + describe("PLC_ERROR_RECEIVED", ()=>{ + const action = { + type: PLC_ERROR_RECEIVED, + payload: "PLC ERROR!" + }; + + it("should add details to state", ()=> { + const state = PlcReducer({}, action); + expect(state.error).toEqual("PLC ERROR!"); + }); + }); +}); \ No newline at end of file diff --git a/__tests__/reducers/reducer_taghistory.test.js b/__tests__/reducers/reducer_taghistory.test.js new file mode 100644 index 0000000..c3ef17b --- /dev/null +++ b/__tests__/reducers/reducer_taghistory.test.js @@ -0,0 +1,41 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +import _ from "lodash"; +configure({ adapter: new Adapter() }); + +import TagHistoryReducer from "../../app/src/reducers/reducer_taghistory"; +import { IPC_TAGUPDATE } from "../../app/src/actions/actions_tags"; + +describe("PlcReducer", () => { + it("should not change state on unused type", () => { + expect(TagHistoryReducer({test: "test"}, "test")).toEqual({test: "test"}); + }); + + it("should return a default empty object", () => { + expect(TagHistoryReducer(undefined, "test")).toEqual({}); + }); + + describe("IPC_TAGUPDATE", () => { + const action = { + type: IPC_TAGUPDATE, + payload: "" + }; + + it("should add a history tag to an empty state", () => { + action.payload = { name: "val_IntakePressure", value: 100 }; + expect(_.map(TagHistoryReducer({}, action), (x) => x)).toHaveLength(1); + }); + + it("should add another value to an existing history state", () => { + action.payload = { name: "val_IntakePressure", value: 100 }; + const stateAfterAdd = TagHistoryReducer({}, action); + expect(_.map(TagHistoryReducer(stateAfterAdd, action), (x) => x)[0]).toHaveLength(2); + }); + + it("should not add to the history if the tag is not a historical tag", () => { + action.payload = { name: "test", value: 100 }; + expect(_.map(TagHistoryReducer({}, action), (x) => x)).toHaveLength(0); + }); + }); + +}); \ No newline at end of file diff --git a/__tests__/reducers/reducer_tags.test.js b/__tests__/reducers/reducer_tags.test.js new file mode 100644 index 0000000..c263a91 --- /dev/null +++ b/__tests__/reducers/reducer_tags.test.js @@ -0,0 +1,63 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; +configure({ adapter: new Adapter() }); + +import TagsReducer from "../../app/src/reducers/reducer_tags"; +import { IPC_TAGUPDATE, STORE_NEW_TAG, DELETE_TAG } from "../../app/src/actions/actions_tags"; + +describe("PlcReducer", () => { + it("should not change state on unused type", () => { + expect(TagsReducer({test: "test"}, "test")).toEqual({test: "test"}); + }); + + it("should return a default empty object", () => { + expect(TagsReducer(undefined, "test")).toEqual({}); + }); + + describe("IPC_TAGUPDATE", () => { + const action = { + type: IPC_TAGUPDATE, + payload: { name: "test", value: 111.111 } + }; + + it("should store a new value for a new tag", () => { + const newState = TagsReducer({}, action); + expect(newState).toEqual({ test: { name: "test", value: 111.111 }}); + }); + + it("should store a new value for an existing tag", () => { + const existingState = { test: { name: "test", value: 0.00 }}; + const newState = TagsReducer(existingState, action); + expect(newState).toEqual({test: { name: "test", value: 111.111 }}); + }); + }); + + describe("STORE_NEW_TAG", () => { + const action = { + type: STORE_NEW_TAG, + payload: "test" + }; + + it("should create a new object for a new tag", () => { + const newState = TagsReducer({}, action); + expect(newState).toEqual({ test: { name: "test" }}); + }); + }); + + describe("DELETE_TAG", () => { + const action = { + type: DELETE_TAG, + payload: "test" + }; + + it("should remove the object in state with the key in the payload", () => { + const initialState = { + test: { name: "test", value: 10.0 }, + remain: { name: "remain", value: 1000 } + }; + const newState = TagsReducer(initialState, action); + expect(newState).toEqual({ remain: { name: "remain", value: 1000 } }); + }); + }); + +}); \ No newline at end of file diff --git a/app/build/bundle.js b/app/build/bundle.js index 8d1a979..4502085 100644 --- a/app/build/bundle.js +++ b/app/build/bundle.js @@ -79,7 +79,7 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.PLC_DATA_RECEIVED = exports.INITIALIZE_PLC = exports.SET_PLC_IPADDRESS = undefined;\nexports.setPlcIpAddress = setPlcIpAddress;\nexports.ipcPlcInitializeSend = ipcPlcInitializeSend;\nexports.ipcPlcDetailsReceived = ipcPlcDetailsReceived;\n\nvar _electron = __webpack_require__(/*! electron */ \"electron\");\n\nvar SET_PLC_IPADDRESS = exports.SET_PLC_IPADDRESS = \"SET_PLC_IPADDRESS\";\nvar INITIALIZE_PLC = exports.INITIALIZE_PLC = \"INITIALIZE_PLC\";\nvar PLC_DATA_RECEIVED = exports.PLC_DATA_RECEIVED = \"PLC_DATA_RECEIVED\";\n\nfunction setPlcIpAddress(ipAddress) {\n\treturn {\n\t\ttype: SET_PLC_IPADDRESS,\n\t\tpayload: ipAddress\n\t};\n}\n\nfunction ipcPlcInitializeSend(ipAddress, tagList) {\n\t_electron.ipcRenderer.send(\"plc:initialize\", ipAddress, tagList);\n\treturn {\n\t\ttype: INITIALIZE_PLC,\n\t\tpayload: true\n\t};\n}\n\nfunction ipcPlcDetailsReceived(event, plcData) {\n\tconsole.log(\"action creator got PLC data\", plcData);\n\treturn {\n\t\ttype: PLC_DATA_RECEIVED,\n\t\tpayload: plcData\n\t};\n}\n\n//# sourceURL=webpack:///./app/src/actions/actions_plc.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.PLC_ERROR_RECEIVED = exports.PLC_DATA_RECEIVED = exports.INITIALIZE_PLC = exports.SET_PLC_IPADDRESS = undefined;\nexports.setPlcIpAddress = setPlcIpAddress;\nexports.ipcPlcInitializeSend = ipcPlcInitializeSend;\nexports.ipcPlcDetailsReceived = ipcPlcDetailsReceived;\nexports.ipcPlcErrorReceived = ipcPlcErrorReceived;\n\nvar _electron = __webpack_require__(/*! electron */ \"electron\");\n\nvar SET_PLC_IPADDRESS = exports.SET_PLC_IPADDRESS = \"SET_PLC_IPADDRESS\";\nvar INITIALIZE_PLC = exports.INITIALIZE_PLC = \"INITIALIZE_PLC\";\nvar PLC_DATA_RECEIVED = exports.PLC_DATA_RECEIVED = \"PLC_DATA_RECEIVED\";\nvar PLC_ERROR_RECEIVED = exports.PLC_ERROR_RECEIVED = \"PLC_ERROR_RECEIVED\";\n\nfunction setPlcIpAddress(ipAddress) {\n\treturn {\n\t\ttype: SET_PLC_IPADDRESS,\n\t\tpayload: ipAddress\n\t};\n}\n\nfunction ipcPlcInitializeSend(ipAddress, tagList) {\n\t_electron.ipcRenderer.send(\"plc:initialize\", ipAddress, tagList);\n\treturn {\n\t\ttype: INITIALIZE_PLC,\n\t\tpayload: true\n\t};\n}\n\nfunction ipcPlcDetailsReceived(event, plcData) {\n\treturn {\n\t\ttype: PLC_DATA_RECEIVED,\n\t\tpayload: plcData\n\t};\n}\n\nfunction ipcPlcErrorReceived(event, plcError) {\n\treturn {\n\t\ttype: PLC_ERROR_RECEIVED,\n\t\tpayload: plcError\n\t};\n}\n\n//# sourceURL=webpack:///./app/src/actions/actions_plc.js?"); /***/ }), @@ -107,6 +107,18 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ }), +/***/ "./app/src/components/EventLog.js": +/*!****************************************!*\ + !*** ./app/src/components/EventLog.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _reactEventTimeline = __webpack_require__(/*! react-event-timeline */ \"./node_modules/react-event-timeline/dist/index.js\");\n\nvar _reactFontawesome = __webpack_require__(/*! @fortawesome/react-fontawesome */ \"./node_modules/@fortawesome/react-fontawesome/index.es.js\");\n\nvar _reactFontawesome2 = _interopRequireDefault(_reactFontawesome);\n\nvar _fontawesomeProRegular = __webpack_require__(/*! @fortawesome/fontawesome-pro-regular */ \"./node_modules/@fortawesome/fontawesome-pro-regular/index.es.js\");\n\nvar _actions_tags = __webpack_require__(/*! ../actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EventLog = function (_Component) {\n\t_inherits(EventLog, _Component);\n\n\tfunction EventLog() {\n\t\t_classCallCheck(this, EventLog);\n\n\t\treturn _possibleConstructorReturn(this, (EventLog.__proto__ || Object.getPrototypeOf(EventLog)).apply(this, arguments));\n\t}\n\n\t_createClass(EventLog, [{\n\t\tkey: \"renderTimelineEvents\",\n\t\tvalue: function renderTimelineEvents() {\n\t\t\treturn _lodash2.default.map(this.props.events, function (event, key) {\n\t\t\t\tvar icon = _react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faCalendar });\n\t\t\t\tvar cardHeaderStyle = { backgroundColor: \"#007bff\" };\n\t\t\t\tif (event.eventType === \"alarm\") {\n\t\t\t\t\ticon = _react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faExclamationTriangle });\n\t\t\t\t\tcardHeaderStyle = { backgroundColor: \"#dc3545\" };\n\t\t\t\t}\n\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t_reactEventTimeline.TimelineEvent,\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: event.tag,\n\t\t\t\t\t\tcreatedAt: event.timestamp.toString(),\n\t\t\t\t\t\ticon: icon,\n\t\t\t\t\t\ticonColor: event.eventType === \"alarm\" ? \"#dc3545\" : \"#007bff\",\n\t\t\t\t\t\tcontainer: \"card\",\n\t\t\t\t\t\tkey: key,\n\t\t\t\t\t\tcardHeaderStyle: cardHeaderStyle\n\t\t\t\t\t},\n\t\t\t\t\tevent.text\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!this.props.events) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\tnull,\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Loading...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"container\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"button\",\n\t\t\t\t\t{\n\t\t\t\t\t\tclassName: \"btn btn-primary\",\n\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\treturn _this2.props.writeTag(\"cmd_ResetAlarms\", true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstyle: { marginTop: \"10px\", marginBottom: \"10px\" }\n\t\t\t\t\t},\n\t\t\t\t\t\"Reset Alarms\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\"hr\", null),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactEventTimeline.Timeline,\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.renderTimelineEvents()\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn EventLog;\n}(_react.Component);\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\tevents: state.events\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, { writeTag: _actions_tags.writeTag })(EventLog);\n\n//# sourceURL=webpack:///./app/src/components/EventLog.js?"); + +/***/ }), + /***/ "./app/src/components/Header.js": /*!**************************************!*\ !*** ./app/src/components/Header.js ***! @@ -115,7 +127,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _reactRouterDom = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/es/index.js\");\n\nvar _reactFontawesome = __webpack_require__(/*! @fortawesome/react-fontawesome */ \"./node_modules/@fortawesome/react-fontawesome/index.es.js\");\n\nvar _reactFontawesome2 = _interopRequireDefault(_reactFontawesome);\n\nvar _fontawesomeProRegular = __webpack_require__(/*! @fortawesome/fontawesome-pro-regular */ \"./node_modules/@fortawesome/fontawesome-pro-regular/index.es.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Component) {\n\t_inherits(Header, _Component);\n\n\tfunction Header() {\n\t\t_classCallCheck(this, Header);\n\n\t\treturn _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t}\n\n\t_createClass(Header, [{\n\t\tkey: \"renderRunningState\",\n\t\tvalue: function renderRunningState() {\n\t\t\tif (!this.props.tags) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\n\t\t\tif (!this.props.tags.Device_Status_INT) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\n\t\t\tvar deviceStatus = void 0;\n\t\t\tvar deviceClass = void 0;\n\t\t\tswitch (this.props.tags.Device_Status_INT.value) {\n\t\t\t\tcase 0:\n\t\t\t\t\tdeviceStatus = \"Running\";\n\t\t\t\t\tdeviceClass = \"btn btn-success\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tdeviceStatus = \"Pumped Off\";\n\t\t\t\t\tdeviceClass = \"btn btn-warning\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tdeviceStatus = \"Alarmed\";\n\t\t\t\t\tdeviceClass = \"btn btn-danger\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tdeviceStatus = \"Locked Out\";\n\t\t\t\t\tdeviceClass = \"btn btn-danger\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tdeviceStatus = \"Stopped\";\n\t\t\t\t\tdeviceClass = \"btn btn-secondary\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tdeviceStatus = \"Unknown\";\n\t\t\t\t\tdeviceClass = \"btn btn-info\";\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"button\",\n\t\t\t\t{ className: deviceClass + \" disabled\" },\n\t\t\t\tdeviceStatus\n\t\t\t);\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"nav\",\n\t\t\t\t{ className: \"navbar navbar-light navbar-expand-sm bg-light\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t{ to: \"/\", className: \"navbar-brand\" },\n\t\t\t\t\t_react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faTint }),\n\t\t\t\t\t\" Max Water System\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"navbar-nav\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/controls\" },\n\t\t\t\t\t\t\"Control\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/permissives\" },\n\t\t\t\t\t\t\"Permissives\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/alltags\" },\n\t\t\t\t\t\t\"All Tags\"\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"navbar-nav ml-auto\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"span\",\n\t\t\t\t\t\t{ className: \"navbar-text\" },\n\t\t\t\t\t\tthis.renderRunningState()\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/settings\", id: \"settings-button\" },\n\t\t\t\t\t\t_react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faCog })\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Header;\n}(_react.Component);\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps)(Header);\n\n//# sourceURL=webpack:///./app/src/components/Header.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _reactRouterDom = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/es/index.js\");\n\nvar _reactFontawesome = __webpack_require__(/*! @fortawesome/react-fontawesome */ \"./node_modules/@fortawesome/react-fontawesome/index.es.js\");\n\nvar _reactFontawesome2 = _interopRequireDefault(_reactFontawesome);\n\nvar _fontawesomeProRegular = __webpack_require__(/*! @fortawesome/fontawesome-pro-regular */ \"./node_modules/@fortawesome/fontawesome-pro-regular/index.es.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Component) {\n\t_inherits(Header, _Component);\n\n\tfunction Header() {\n\t\t_classCallCheck(this, Header);\n\n\t\treturn _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t}\n\n\t_createClass(Header, [{\n\t\tkey: \"renderRunningState\",\n\t\tvalue: function renderRunningState() {\n\t\t\tif (!this.props.tags) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\n\t\t\tif (!this.props.tags.Device_Status_INT) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\n\t\t\tvar deviceStatus = void 0;\n\t\t\tvar deviceClass = void 0;\n\t\t\tswitch (this.props.tags.Device_Status_INT.value) {\n\t\t\t\tcase 0:\n\t\t\t\t\tdeviceStatus = \"Running\";\n\t\t\t\t\tdeviceClass = \"btn btn-success\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tdeviceStatus = \"Pumped Off\";\n\t\t\t\t\tdeviceClass = \"btn btn-warning\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tdeviceStatus = \"Alarmed\";\n\t\t\t\t\tdeviceClass = \"btn btn-danger\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tdeviceStatus = \"Locked Out\";\n\t\t\t\t\tdeviceClass = \"btn btn-danger\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tdeviceStatus = \"Stopped\";\n\t\t\t\t\tdeviceClass = \"btn btn-secondary\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tdeviceStatus = \"Unknown\";\n\t\t\t\t\tdeviceClass = \"btn btn-info\";\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"button\",\n\t\t\t\t{ className: deviceClass + \" disabled\" },\n\t\t\t\tdeviceStatus\n\t\t\t);\n\t\t}\n\t}, {\n\t\tkey: \"renderAlarmButton\",\n\t\tvalue: function renderAlarmButton() {\n\t\t\tif (!this.props.alarms) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\n\t\t\tvar btnClassName = this.props.alarms.length > 0 ? \"btn btn-danger alarms-active\" : \"btn btn-light\";\n\t\t\tvar btnText = this.props.alarms.length > 0 ? \"Alarms Active: \" + this.props.alarms.length : \"No Alarms\";\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t{\n\t\t\t\t\tstyle: { marginRight: \"10px\" },\n\t\t\t\t\tto: \"/events\",\n\t\t\t\t\tclassName: btnClassName\n\t\t\t\t},\n\t\t\t\tbtnText\n\t\t\t);\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"nav\",\n\t\t\t\t{ className: \"navbar navbar-light navbar-expand-sm bg-light\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t{ to: \"/\", className: \"navbar-brand\" },\n\t\t\t\t\t_react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faTint }),\n\t\t\t\t\t\" Max Water System\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"navbar-nav\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/controls\" },\n\t\t\t\t\t\t\"Control\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/permissives\" },\n\t\t\t\t\t\t\"Permissives\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/alltags\" },\n\t\t\t\t\t\t\"All Tags\"\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"navbar-nav ml-auto\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"span\",\n\t\t\t\t\t\t{ className: \"navbar-text\" },\n\t\t\t\t\t\tthis.renderAlarmButton()\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"span\",\n\t\t\t\t\t\t{ className: \"navbar-text\" },\n\t\t\t\t\t\tthis.renderRunningState()\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t_reactRouterDom.Link,\n\t\t\t\t\t\t{ className: \"nav-item nav-link\", to: \"/settings\", id: \"settings-button\" },\n\t\t\t\t\t\t_react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faCog })\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Header;\n}(_react.Component);\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\talarms: state.alarms\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps)(Header);\n\n//# sourceURL=webpack:///./app/src/components/Header.js?"); /***/ }), @@ -127,7 +139,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _reactVis = __webpack_require__(/*! react-vis */ \"./node_modules/react-vis/es/index.js\");\n\n__webpack_require__(/*! ../../../node_modules/react-vis/dist/style.css */ \"./node_modules/react-vis/dist/style.css\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Main = function (_Component) {\n\t_inherits(Main, _Component);\n\n\tfunction Main() {\n\t\t_classCallCheck(this, Main);\n\n\t\treturn _possibleConstructorReturn(this, (Main.__proto__ || Object.getPrototypeOf(Main)).apply(this, arguments));\n\t}\n\n\t_createClass(Main, [{\n\t\tkey: \"getChartValues\",\n\t\tvalue: function getChartValues(values) {\n\t\t\treturn _lodash2.default.map(values, function (val) {\n\t\t\t\treturn { x: val.timestamp, y: val.value };\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tif (!this.props.tagHistory) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Loading...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"container\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Process Values\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactVis.FlexibleWidthXYPlot,\n\t\t\t\t\t{\n\t\t\t\t\t\theight: 300,\n\t\t\t\t\t\txType: \"time\"\n\t\t\t\t\t},\n\t\t\t\t\t_react2.default.createElement(_reactVis.VerticalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.HorizontalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.XAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.YAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_IntakePressure)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_Flowmeter)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_FluidLevel)\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactVis.DiscreteColorLegend, {\n\t\t\t\t\titems: [{ title: \"Intake Pressure\" }, { title: \"Flowmeter\" }, { title: \"Fluid Level\" }],\n\t\t\t\t\torientation: \"horizontal\"\n\t\t\t\t}),\n\t\t\t\t_react2.default.createElement(\"hr\", null),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"VFD Data\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactVis.FlexibleWidthXYPlot,\n\t\t\t\t\t{\n\t\t\t\t\t\theight: 300,\n\t\t\t\t\t\txType: \"time\"\n\t\t\t\t\t},\n\t\t\t\t\t_react2.default.createElement(_reactVis.VerticalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.HorizontalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.XAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.YAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_OutCurrent)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_SpeedFdbk)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_OutPower)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_Temp)\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactVis.DiscreteColorLegend, {\n\t\t\t\t\titems: [{ title: \"VFD Current\" }, { title: \"VFD Speed Feedback\" }, { title: \"VFD Output Power\" }, { title: \"VFD Temp\" }],\n\t\t\t\t\torientation: \"horizontal\"\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Main;\n}(_react.Component);\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\ttagHistory: state.tagHistory\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps)(Main);\n\n//# sourceURL=webpack:///./app/src/components/Main.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _reactVis = __webpack_require__(/*! react-vis */ \"./node_modules/react-vis/es/index.js\");\n\n__webpack_require__(/*! ../../../node_modules/react-vis/dist/style.css */ \"./node_modules/react-vis/dist/style.css\");\n\nvar _d3Color = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/index.js\");\n\nvar _d3Interpolate = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/index.js\");\n\nvar _reactLiquidGauge = __webpack_require__(/*! react-liquid-gauge */ \"./node_modules/react-liquid-gauge/lib/index.js\");\n\nvar _reactLiquidGauge2 = _interopRequireDefault(_reactLiquidGauge);\n\nvar _reactCanvasGauges = __webpack_require__(/*! react-canvas-gauges */ \"./node_modules/react-canvas-gauges/dist/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Main = function (_Component) {\n\t_inherits(Main, _Component);\n\n\tfunction Main() {\n\t\t_classCallCheck(this, Main);\n\n\t\treturn _possibleConstructorReturn(this, (Main.__proto__ || Object.getPrototypeOf(Main)).apply(this, arguments));\n\t}\n\n\t_createClass(Main, [{\n\t\tkey: \"getChartValues\",\n\t\tvalue: function getChartValues(values) {\n\t\t\treturn _lodash2.default.map(values, function (val) {\n\t\t\t\treturn { x: val.timestamp, y: val.value };\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: \"renderLiquidGauge\",\n\t\tvalue: function renderLiquidGauge(tag, units, maxValue, label) {\n\t\t\tif (!tag) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\t\t\tvar tagValue = tag.value;\n\t\t\tvar endColor = \"#1F4788\";\n\t\t\tvar startColor = \"#dc143c\";\n\n\t\t\tvar radius = 100;\n\t\t\tvar interpolate = (0, _d3Interpolate.interpolateRgb)(startColor, endColor);\n\t\t\tvar fillColor = interpolate(tagValue / maxValue);\n\t\t\tvar gradientStops = [{\n\t\t\t\tkey: \"0%\",\n\t\t\t\tstopColor: (0, _d3Color.color)(fillColor).darker(0.5).toString(),\n\t\t\t\tstopOpacity: 1,\n\t\t\t\toffset: \"0%\"\n\t\t\t}, {\n\t\t\t\tkey: \"50%\",\n\t\t\t\tstopColor: fillColor,\n\t\t\t\tstopOpacity: 0.75,\n\t\t\t\toffset: \"50%\"\n\t\t\t}, {\n\t\t\t\tkey: \"100%\",\n\t\t\t\tstopColor: (0, _d3Color.color)(fillColor).brighter(0.5).toString(),\n\t\t\t\tstopOpacity: 0.5,\n\t\t\t\toffset: \"100%\"\n\t\t\t}];\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"col\", style: { textAlign: \"center\" } },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\tlabel\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactLiquidGauge2.default, {\n\t\t\t\t\tstyle: { margin: \"0 auto\" },\n\t\t\t\t\twidth: radius * 2,\n\t\t\t\t\theight: radius * 2,\n\t\t\t\t\tvalue: tagValue / maxValue * 100,\n\t\t\t\t\tpercent: units,\n\t\t\t\t\ttextSize: 1,\n\t\t\t\t\ttextOffsetX: 0,\n\t\t\t\t\ttextOffsetY: 0,\n\t\t\t\t\ttextRenderer: function textRenderer(props) {\n\t\t\t\t\t\tvar value = Math.round(tagValue);\n\t\t\t\t\t\tvar radius = Math.min(props.height / 2, props.width / 2);\n\t\t\t\t\t\tvar textPixels = props.textSize * radius / 2;\n\t\t\t\t\t\tvar valueStyle = {\n\t\t\t\t\t\t\tfontSize: textPixels\n\t\t\t\t\t\t};\n\t\t\t\t\t\tvar percentStyle = {\n\t\t\t\t\t\t\tfontSize: textPixels * 0.6\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\t\t\"tspan\",\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"tspan\",\n\t\t\t\t\t\t\t\t{ className: \"value\", style: valueStyle },\n\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"tspan\",\n\t\t\t\t\t\t\t\t{ style: percentStyle },\n\t\t\t\t\t\t\t\tprops.percent\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\triseAnimation: true,\n\t\t\t\t\twaveAnimation: true,\n\t\t\t\t\twaveFrequency: 3,\n\t\t\t\t\twaveAmplitude: 2,\n\t\t\t\t\tgradient: true,\n\t\t\t\t\tgradientStops: gradientStops,\n\t\t\t\t\tcircleStyle: {\n\t\t\t\t\t\tfill: fillColor\n\t\t\t\t\t},\n\t\t\t\t\twaveStyle: {\n\t\t\t\t\t\tfill: fillColor\n\t\t\t\t\t},\n\t\t\t\t\ttextStyle: {\n\t\t\t\t\t\tfill: (0, _d3Color.color)(\"#444\").toString(),\n\t\t\t\t\t\tfontFamily: \"Arial\"\n\t\t\t\t\t},\n\t\t\t\t\twaveTextStyle: {\n\t\t\t\t\t\tfill: (0, _d3Color.color)(\"#fff\").toString(),\n\t\t\t\t\t\tfontFamily: \"Arial\"\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}, {\n\t\tkey: \"renderRadialGauge\",\n\t\tvalue: function renderRadialGauge(tag, units, maxValue, label) {\n\t\t\tif (!tag) {\n\t\t\t\treturn _react2.default.createElement(\"span\", null);\n\t\t\t}\n\n\t\t\tvar ticks = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"col\", style: { textAlign: \"center\" } },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\tlabel\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactCanvasGauges.RadialGauge, {\n\t\t\t\t\theight: 200,\n\t\t\t\t\twidth: 200,\n\t\t\t\t\tunits: units,\n\t\t\t\t\ttitle: label,\n\t\t\t\t\tvalue: tag.value,\n\t\t\t\t\tminValue: 0,\n\t\t\t\t\tmaxValue: maxValue,\n\t\t\t\t\tmajorTicks: ticks.map(function (t) {\n\t\t\t\t\t\treturn t * maxValue;\n\t\t\t\t\t}),\n\t\t\t\t\tminorTicks: 2\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tif (!this.props.tagHistory) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Loading...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (this.props.plc.error) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container plc-error\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"PLC Error\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h3\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tthis.props.plc.error\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (Object.keys(this.props.tags).length === 0) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Waiting for data...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"container\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Process Values\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"row\", style: { marginBottom: \"20px\" } },\n\t\t\t\t\tthis.renderLiquidGauge(this.props.tags.val_FluidLevel, \"ft.\", 500, \"Level\"),\n\t\t\t\t\tthis.renderRadialGauge(this.props.tags.val_Flowmeter_BarrelsPerDay, \"BPD\", 5000, \"Flow Rate\"),\n\t\t\t\t\tthis.renderRadialGauge(this.props.tags.val_TubingPressure, \"PSI\", 400, \"Tubing Pressure\")\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactVis.FlexibleWidthXYPlot,\n\t\t\t\t\t{\n\t\t\t\t\t\theight: 300,\n\t\t\t\t\t\txType: \"time\"\n\t\t\t\t\t},\n\t\t\t\t\t_react2.default.createElement(_reactVis.VerticalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.HorizontalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.XAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.YAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_IntakePressure)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_Flowmeter)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_FluidLevel)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_IntakeTemperature)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.val_TubingPressure)\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactVis.DiscreteColorLegend, {\n\t\t\t\t\titems: [{ title: \"Intake Pressure\" }, { title: \"Flowmeter\" }, { title: \"Fluid Level\" }, { title: \"Intake Temp\" }, { title: \"Tubing Pressure\" }],\n\t\t\t\t\torientation: \"horizontal\"\n\t\t\t\t}),\n\t\t\t\t_react2.default.createElement(\"hr\", null),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"VFD Data\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"row\", style: { marginBottom: \"20px\" } },\n\t\t\t\t\tthis.renderRadialGauge(this.props.tags.VFD_OutCurrent, \"A.\", 100, \"Current\"),\n\t\t\t\t\tthis.renderRadialGauge(this.props.tags.VFD_SpeedFdbk, \"Hz\", 60, \"Frequency\")\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactVis.FlexibleWidthXYPlot,\n\t\t\t\t\t{\n\t\t\t\t\t\theight: 300,\n\t\t\t\t\t\txType: \"time\"\n\t\t\t\t\t},\n\t\t\t\t\t_react2.default.createElement(_reactVis.VerticalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.HorizontalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.XAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.YAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_OutCurrent)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_SpeedFdbk)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_OutPower)\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(_reactVis.LineSeries, {\n\t\t\t\t\t\tdata: this.getChartValues(this.props.tagHistory.VFD_Temp)\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactVis.DiscreteColorLegend, {\n\t\t\t\t\titems: [{ title: \"VFD Current\" }, { title: \"VFD Speed Feedback\" }, { title: \"VFD Output Power\" }, { title: \"VFD Temp\" }],\n\t\t\t\t\torientation: \"horizontal\"\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Main;\n}(_react.Component);\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\ttagHistory: state.tagHistory,\n\t\tplc: state.plc\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps)(Main);\n\n//# sourceURL=webpack:///./app/src/components/Main.js?"); /***/ }), @@ -151,7 +163,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _actions_plc = __webpack_require__(/*! ../actions/actions_plc */ \"./app/src/actions/actions_plc.js\");\n\nvar _actions_tags = __webpack_require__(/*! ../actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Settings = function (_Component) {\n\t_inherits(Settings, _Component);\n\n\tfunction Settings(props) {\n\t\t_classCallCheck(this, Settings);\n\n\t\tvar _this = _possibleConstructorReturn(this, (Settings.__proto__ || Object.getPrototypeOf(Settings)).call(this, props));\n\n\t\t_this.getTagList = function () {\n\t\t\tvar tags = _this.props.tags;\n\n\n\t\t\tvar tableMiddle = _lodash2.default.map(tags, function (tag) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"tr\",\n\t\t\t\t\t{ key: tag.name },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"td\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\ttag.name\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"td\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassName: \"btn red\",\n\t\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\treturn _this.onDeleteClick(e, tag.name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"i\",\n\t\t\t\t\t\t\t\t{ className: \"material-icons\" },\n\t\t\t\t\t\t\t\t\"clear\"\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"table\",\n\t\t\t\tnull,\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"thead\",\n\t\t\t\t\tnull,\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"tr\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"th\",\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\"Tag\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\t_react2.default.createElement(\"th\", null)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"tbody\",\n\t\t\t\t\tnull,\n\t\t\t\t\ttableMiddle\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\n\t\t_this.onDeleteClick = function (e, tagName) {\n\t\t\te.preventDefault();\n\t\t\t_this.props.deleteTag(tagName);\n\t\t};\n\n\t\t_this.onIpAddressInputChange = function (event) {\n\t\t\t_this.setState({ ipAddress: event.target.value });\n\t\t};\n\n\t\t_this.sendIpAddress = function (e) {\n\t\t\te.preventDefault();\n\t\t\t_this.props.setPlcIpAddress(_this.state.ipAddress);\n\t\t};\n\n\t\t_this.onNewTagChange = function (e) {\n\t\t\t_this.setState({ newTag: e.target.value });\n\t\t};\n\n\t\t_this.onNewTagSubmit = function (e) {\n\t\t\te.preventDefault();\n\t\t\t_this.props.storeNewTag(_this.state.newTag);\n\t\t\t_this.setState({ newTag: \"\" });\n\t\t};\n\n\t\t_this.onSave = function (e) {\n\t\t\tconsole.log(_this.props);\n\t\t\te.preventDefault();\n\t\t\t_this.props.ipcPlcInitializeSend(_this.props.plc.ipAddress, _this.props.tags);\n\t\t\t_this.props.history.push(\"/\");\n\t\t};\n\n\t\t_this.state = {\n\t\t\tipAddress: \"\",\n\t\t\tnewTag: \"\"\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(Settings, [{\n\t\tkey: \"componentWillMount\",\n\t\tvalue: function componentWillMount() {\n\t\t\tconsole.log(this.props.plc);\n\t\t\tif (this.props.plc && this.props.plc.ipAddress) {\n\t\t\t\tconsole.log(this.props.plc.ipAddress);\n\t\t\t\tthis.setState({ ipAddress: this.props.plc.ipAddress });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar ipAddressBtnClass = this.state.ipAddress === this.props.plc.ipAddress || this.state.ipAddress.length === 0 ? \"btn disabled right\" : \"btn right\";\n\t\t\tvar initializeBtnClass = this.props.plc.ipAddress && _lodash2.default.map(this.props.tags, function (t) {\n\t\t\t\treturn t;\n\t\t\t}).length > 0 ? \"btn\" : \"btn disabled\";\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ style: styles.container },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"ul\",\n\t\t\t\t\t{ className: \"collection with-header\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"li\",\n\t\t\t\t\t\t{ className: \"collection-header\" },\n\t\t\t\t\t\t\"Settings\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"form\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"li\",\n\t\t\t\t\t\t\t{ className: \"collection-item\" },\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"p\",\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\"IP Address\"\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t_react2.default.createElement(\"input\", {\n\t\t\t\t\t\t\t\tvalue: this.state.ipAddress,\n\t\t\t\t\t\t\t\tplaceholder: \"PLC IP Address\",\n\t\t\t\t\t\t\t\tonChange: this.onIpAddressInputChange\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tclassName: ipAddressBtnClass,\n\t\t\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\t\treturn _this2.sendIpAddress(e);\n\t\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\t\"Set IP Address\"\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"form\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"li\",\n\t\t\t\t\t\t\t{ className: \"collection-item\" },\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"h4\",\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\"Tag List\"\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tthis.getTagList(),\n\t\t\t\t\t\t\t_react2.default.createElement(\"input\", {\n\t\t\t\t\t\t\t\tvalue: this.state.newTag,\n\t\t\t\t\t\t\t\tonChange: this.onNewTagChange,\n\t\t\t\t\t\t\t\tplaceholder: \"New Tag Name...\"\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tclassName: \"btn\",\n\t\t\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\t\treturn _this2.onNewTagSubmit(e);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"Add Tag\"\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"li\",\n\t\t\t\t\t\t\t{ className: \"collection-item right\" },\n\t\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tclassName: initializeBtnClass,\n\t\t\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\t\treturn _this2.onSave(e);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"Save\"\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Settings;\n}(_react.Component);\n\nvar styles = {\n\tcontainer: {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\"\n\t},\n\tpointer: {\n\t\tcursor: \"pointer\"\n\t}\n};\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\tplc: state.plc\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, { setPlcIpAddress: _actions_plc.setPlcIpAddress, storeNewTag: _actions_tags.storeNewTag, ipcPlcInitializeSend: _actions_plc.ipcPlcInitializeSend, deleteTag: _actions_tags.deleteTag })(Settings);\n\n//# sourceURL=webpack:///./app/src/components/Settings.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _actions_plc = __webpack_require__(/*! ../actions/actions_plc */ \"./app/src/actions/actions_plc.js\");\n\nvar _actions_tags = __webpack_require__(/*! ../actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nvar _reactFontawesome = __webpack_require__(/*! @fortawesome/react-fontawesome */ \"./node_modules/@fortawesome/react-fontawesome/index.es.js\");\n\nvar _reactFontawesome2 = _interopRequireDefault(_reactFontawesome);\n\nvar _fontawesomeProRegular = __webpack_require__(/*! @fortawesome/fontawesome-pro-regular */ \"./node_modules/@fortawesome/fontawesome-pro-regular/index.es.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Settings = function (_Component) {\n\t_inherits(Settings, _Component);\n\n\tfunction Settings(props) {\n\t\t_classCallCheck(this, Settings);\n\n\t\tvar _this = _possibleConstructorReturn(this, (Settings.__proto__ || Object.getPrototypeOf(Settings)).call(this, props));\n\n\t\t_this.getTagList = function () {\n\t\t\tvar tags = _this.props.tags;\n\n\n\t\t\treturn _lodash2.default.map(tags, function (tag) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"li\",\n\t\t\t\t\t{ key: tag.name, className: \"list-group-item\" },\n\t\t\t\t\ttag.name,\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: \"btn btn-outline-danger float-right\",\n\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\treturn _this.onDeleteClick(e, tag.name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t_react2.default.createElement(_reactFontawesome2.default, { icon: _fontawesomeProRegular.faTimesSquare })\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\t\t};\n\n\t\t_this.onDeleteClick = function (e, tagName) {\n\t\t\te.preventDefault();\n\t\t\t_this.props.deleteTag(tagName);\n\t\t};\n\n\t\t_this.onIpAddressInputChange = function (event) {\n\t\t\t_this.setState({ ipAddress: event.target.value });\n\t\t};\n\n\t\t_this.sendIpAddress = function (e) {\n\t\t\te.preventDefault();\n\t\t\t_this.props.setPlcIpAddress(_this.state.ipAddress);\n\t\t};\n\n\t\t_this.onNewTagChange = function (e) {\n\t\t\t_this.setState({ newTag: e.target.value });\n\t\t};\n\n\t\t_this.onNewTagSubmit = function (e) {\n\t\t\te.preventDefault();\n\t\t\t_this.props.storeNewTag(_this.state.newTag);\n\t\t\t_this.setState({ newTag: \"\" });\n\t\t};\n\n\t\t_this.onSave = function (e) {\n\t\t\tconsole.log(_this.props);\n\t\t\te.preventDefault();\n\t\t\t_this.props.ipcPlcInitializeSend(_this.props.plc.ipAddress, _this.props.tags);\n\t\t\t_this.props.history.push(\"/\");\n\t\t};\n\n\t\t_this.state = {\n\t\t\tipAddress: \"\",\n\t\t\tnewTag: \"\"\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(Settings, [{\n\t\tkey: \"componentWillMount\",\n\t\tvalue: function componentWillMount() {\n\t\t\tconsole.log(this.props.plc);\n\t\t\tif (this.props.plc && this.props.plc.ipAddress) {\n\t\t\t\tconsole.log(this.props.plc.ipAddress);\n\t\t\t\tthis.setState({ ipAddress: this.props.plc.ipAddress });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar ipAddressBtnClass = this.state.ipAddress === this.props.plc.ipAddress || this.state.ipAddress.length === 0 ? \"btn btn-primary disabled\" : \"btn btn-primary\";\n\t\t\tvar initializeBtnClass = this.props.plc.ipAddress && _lodash2.default.map(this.props.tags, function (t) {\n\t\t\t\treturn t;\n\t\t\t}).length > 0 ? \"btn btn-success\" : \"btn sbtn-success disabled\";\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"container\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h1\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Settings\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"form\",\n\t\t\t\t\t{ className: \"form-inline mb-2\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t{ className: \"form-group\" },\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"label\",\n\t\t\t\t\t\t\t{ htmlFor: \"ipAddress\" },\n\t\t\t\t\t\t\t\"IP Address\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\t_react2.default.createElement(\"input\", {\n\t\t\t\t\t\t\tid: \"ipAddress\",\n\t\t\t\t\t\t\tclassName: \"form-control\\t\",\n\t\t\t\t\t\t\tvalue: this.state.ipAddress,\n\t\t\t\t\t\t\tplaceholder: \"PLC IP Address\",\n\t\t\t\t\t\t\tonChange: this.onIpAddressInputChange\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassName: ipAddressBtnClass,\n\t\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\treturn _this2.sendIpAddress(e);\n\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\"Set IP Address\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h4\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Tag List\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"ul\",\n\t\t\t\t\t{ className: \"list-group\" },\n\t\t\t\t\tthis.getTagList()\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"form\",\n\t\t\t\t\tnull,\n\t\t\t\t\t_react2.default.createElement(\"input\", {\n\t\t\t\t\t\tvalue: this.state.newTag,\n\t\t\t\t\t\tonChange: this.onNewTagChange,\n\t\t\t\t\t\tplaceholder: \"New Tag Name...\"\n\t\t\t\t\t}),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: \"btn btn-success float-right\",\n\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\treturn _this2.onNewTagSubmit(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"Add Tag\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: initializeBtnClass,\n\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\treturn _this2.onSave(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"Save\"\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Settings;\n}(_react.Component);\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\tplc: state.plc\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, { setPlcIpAddress: _actions_plc.setPlcIpAddress, storeNewTag: _actions_tags.storeNewTag, ipcPlcInitializeSend: _actions_plc.ipcPlcInitializeSend, deleteTag: _actions_tags.deleteTag })(Settings);\n\n//# sourceURL=webpack:///./app/src/components/Settings.js?"); /***/ }), @@ -186,7 +198,31 @@ eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./app/ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _redux = __webpack_require__(/*! redux */ \"./node_modules/redux/es/index.js\");\n\nvar _reducer_tags = __webpack_require__(/*! ./reducer_tags */ \"./app/src/reducers/reducer_tags.js\");\n\nvar _reducer_tags2 = _interopRequireDefault(_reducer_tags);\n\nvar _reducer_plc = __webpack_require__(/*! ./reducer_plc */ \"./app/src/reducers/reducer_plc.js\");\n\nvar _reducer_plc2 = _interopRequireDefault(_reducer_plc);\n\nvar _reducer_taghistory = __webpack_require__(/*! ./reducer_taghistory */ \"./app/src/reducers/reducer_taghistory.js\");\n\nvar _reducer_taghistory2 = _interopRequireDefault(_reducer_taghistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rootReducer = (0, _redux.combineReducers)({\n\ttags: _reducer_tags2.default,\n\ttagHistory: _reducer_taghistory2.default,\n\tplc: _reducer_plc2.default\n});\n\nexports.default = rootReducer;\n\n//# sourceURL=webpack:///./app/src/reducers/index.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _redux = __webpack_require__(/*! redux */ \"./node_modules/redux/es/index.js\");\n\nvar _reducer_tags = __webpack_require__(/*! ./reducer_tags */ \"./app/src/reducers/reducer_tags.js\");\n\nvar _reducer_tags2 = _interopRequireDefault(_reducer_tags);\n\nvar _reducer_plc = __webpack_require__(/*! ./reducer_plc */ \"./app/src/reducers/reducer_plc.js\");\n\nvar _reducer_plc2 = _interopRequireDefault(_reducer_plc);\n\nvar _reducer_taghistory = __webpack_require__(/*! ./reducer_taghistory */ \"./app/src/reducers/reducer_taghistory.js\");\n\nvar _reducer_taghistory2 = _interopRequireDefault(_reducer_taghistory);\n\nvar _reducer_alarm = __webpack_require__(/*! ./reducer_alarm */ \"./app/src/reducers/reducer_alarm.js\");\n\nvar _reducer_alarm2 = _interopRequireDefault(_reducer_alarm);\n\nvar _reducer_events = __webpack_require__(/*! ./reducer_events */ \"./app/src/reducers/reducer_events.js\");\n\nvar _reducer_events2 = _interopRequireDefault(_reducer_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rootReducer = (0, _redux.combineReducers)({\n\ttags: _reducer_tags2.default,\n\ttagHistory: _reducer_taghistory2.default,\n\tplc: _reducer_plc2.default,\n\talarms: _reducer_alarm2.default,\n\tevents: _reducer_events2.default\n});\n\nexports.default = rootReducer;\n\n//# sourceURL=webpack:///./app/src/reducers/index.js?"); + +/***/ }), + +/***/ "./app/src/reducers/reducer_alarm.js": +/*!*******************************************!*\ + !*** ./app/src/reducers/reducer_alarm.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nexports.default = function () {\n\tvar state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\tvar action = arguments[1];\n\n\tswitch (action.type) {\n\t\tcase _actions_tags.IPC_TAGUPDATE:\n\t\t\tvar _action$payload = action.payload,\n\t\t\t name = _action$payload.name,\n\t\t\t value = _action$payload.value;\n\n\t\t\tvar alarmTagList = _lodash2.default.map(_lodash2.default.filter(_renderer_process.eventTags, function (tag) {\n\t\t\t\treturn tag.eventType === \"alarm\";\n\t\t\t}), function (ftag) {\n\t\t\t\treturn ftag.tag;\n\t\t\t});\n\t\t\tif (alarmTagList.includes(name)) {\n\t\t\t\tif (value) {\n\t\t\t\t\treturn _lodash2.default.uniq(_lodash2.default.concat(state, name));\n\t\t\t\t} else {\n\t\t\t\t\tvar newActiveState = _lodash2.default.filter(state, function (tag) {\n\t\t\t\t\t\treturn tag !== name;\n\t\t\t\t\t});\n\t\t\t\t\treturn newActiveState;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _actions_tags = __webpack_require__(/*! ../actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nvar _renderer_process = __webpack_require__(/*! ../renderer_process */ \"./app/src/renderer_process.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//# sourceURL=webpack:///./app/src/reducers/reducer_alarm.js?"); + +/***/ }), + +/***/ "./app/src/reducers/reducer_events.js": +/*!********************************************!*\ + !*** ./app/src/reducers/reducer_events.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function () {\n\tvar state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\tvar action = arguments[1];\n\n\tswitch (action.type) {\n\t\tcase _actions_tags.IPC_TAGUPDATE:\n\t\t\tvar _action$payload = action.payload,\n\t\t\t name = _action$payload.name,\n\t\t\t value = _action$payload.value;\n\n\t\t\tvar eventTagList = _lodash2.default.map(_renderer_process.eventTags, function (ftag) {\n\t\t\t\treturn ftag.tag;\n\t\t\t});\n\t\t\tif (eventTagList.includes(name)) {\n\t\t\t\tif (value) {\n\t\t\t\t\tvar thisEvent = _lodash2.default.find(_renderer_process.eventTags, function (tag) {\n\t\t\t\t\t\treturn tag.tag === name;\n\t\t\t\t\t});\n\t\t\t\t\tvar newHistory = _lodash2.default.concat([_extends({}, thisEvent, { timestamp: new Date() })], state);\n\t\t\t\t\treturn newHistory;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn state;\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _actions_tags = __webpack_require__(/*! ../actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nvar _renderer_process = __webpack_require__(/*! ../renderer_process */ \"./app/src/renderer_process.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//# sourceURL=webpack:///./app/src/reducers/reducer_events.js?"); /***/ }), @@ -198,7 +234,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function () {\n\tvar state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\tvar action = arguments[1];\n\n\tswitch (action.type) {\n\t\tcase _actions_plc.SET_PLC_IPADDRESS:\n\t\t\treturn _extends({}, state, { ipAddress: action.payload });\n\n\t\tcase _actions_plc.PLC_DATA_RECEIVED:\n\t\t\tconsole.log(action.payload);\n\t\t\treturn _extends({}, state, action.payload);\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nvar _actions_plc = __webpack_require__(/*! ../actions/actions_plc */ \"./app/src/actions/actions_plc.js\");\n\n//# sourceURL=webpack:///./app/src/reducers/reducer_plc.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function () {\n\tvar state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\tvar action = arguments[1];\n\n\tswitch (action.type) {\n\t\tcase _actions_plc.SET_PLC_IPADDRESS:\n\t\t\treturn _extends({}, state, { ipAddress: action.payload });\n\n\t\tcase _actions_plc.PLC_DATA_RECEIVED:\n\t\t\treturn _extends({}, state, action.payload);\n\n\t\tcase _actions_plc.PLC_ERROR_RECEIVED:\n\t\t\tconsole.log(\"plcError\", action.payload);\n\t\t\treturn _extends({}, state, { error: action.payload });\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nvar _actions_plc = __webpack_require__(/*! ../actions/actions_plc */ \"./app/src/actions/actions_plc.js\");\n\n//# sourceURL=webpack:///./app/src/reducers/reducer_plc.js?"); /***/ }), @@ -234,7 +270,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.historyTags = undefined;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _redux = __webpack_require__(/*! redux */ \"./node_modules/redux/es/index.js\");\n\nvar _reduxElectronIpc = __webpack_require__(/*! redux-electron-ipc */ \"./node_modules/redux-electron-ipc/index.js\");\n\nvar _reduxElectronIpc2 = _interopRequireDefault(_reduxElectronIpc);\n\nvar _reactRouterDom = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/es/index.js\");\n\nvar _reducers = __webpack_require__(/*! ./reducers */ \"./app/src/reducers/index.js\");\n\nvar _reducers2 = _interopRequireDefault(_reducers);\n\nvar _TagsIndex = __webpack_require__(/*! ./components/TagsIndex */ \"./app/src/components/TagsIndex.js\");\n\nvar _TagsIndex2 = _interopRequireDefault(_TagsIndex);\n\nvar _Settings = __webpack_require__(/*! ./components/Settings */ \"./app/src/components/Settings.js\");\n\nvar _Settings2 = _interopRequireDefault(_Settings);\n\nvar _Header = __webpack_require__(/*! ./components/Header */ \"./app/src/components/Header.js\");\n\nvar _Header2 = _interopRequireDefault(_Header);\n\nvar _Permissives = __webpack_require__(/*! ./components/Permissives */ \"./app/src/components/Permissives.js\");\n\nvar _Permissives2 = _interopRequireDefault(_Permissives);\n\nvar _Main = __webpack_require__(/*! ./components/Main */ \"./app/src/components/Main.js\");\n\nvar _Main2 = _interopRequireDefault(_Main);\n\nvar _Controls = __webpack_require__(/*! ./components/Controls */ \"./app/src/components/Controls.js\");\n\nvar _Controls2 = _interopRequireDefault(_Controls);\n\nvar _actions_tags = __webpack_require__(/*! ./actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nvar _actions_plc = __webpack_require__(/*! ./actions/actions_plc */ \"./app/src/actions/actions_plc.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _require = __webpack_require__(/*! ../../tagList.json */ \"./tagList.json\");\n\nvar historyTags = _require.history_tags;\nexports.historyTags = historyTags;\n\n\nvar ipc = (0, _reduxElectronIpc2.default)({\n\t\"tag:valueupdate\": _actions_tags.ipcTagUpdate,\n\t\"plc:connected\": _actions_plc.ipcPlcDetailsReceived\n});\n\nvar createStoreWithMiddleware = (0, _redux.applyMiddleware)(ipc)(_redux.createStore);\n\n_reactDom2.default.render(_react2.default.createElement(\n\t_reactRedux.Provider,\n\t{ store: createStoreWithMiddleware(_reducers2.default) },\n\t_react2.default.createElement(\n\t\t_reactRouterDom.BrowserRouter,\n\t\tnull,\n\t\t_react2.default.createElement(\n\t\t\t\"div\",\n\t\t\tnull,\n\t\t\t_react2.default.createElement(_Header2.default, null),\n\t\t\t_react2.default.createElement(\n\t\t\t\t_reactRouterDom.Switch,\n\t\t\t\tnull,\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/settings\", component: _Settings2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/permissives\", component: _Permissives2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/alltags\", component: _TagsIndex2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/controls\", component: _Controls2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/\", component: _Main2.default })\n\t\t\t)\n\t\t)\n\t)\n), document.querySelector(\"#app\"));\n\n//# sourceURL=webpack:///./app/src/renderer_process.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.eventTags = exports.historyTags = undefined;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _redux = __webpack_require__(/*! redux */ \"./node_modules/redux/es/index.js\");\n\nvar _reduxElectronIpc = __webpack_require__(/*! redux-electron-ipc */ \"./node_modules/redux-electron-ipc/index.js\");\n\nvar _reduxElectronIpc2 = _interopRequireDefault(_reduxElectronIpc);\n\nvar _reactRouterDom = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/es/index.js\");\n\nvar _reducers = __webpack_require__(/*! ./reducers */ \"./app/src/reducers/index.js\");\n\nvar _reducers2 = _interopRequireDefault(_reducers);\n\nvar _TagsIndex = __webpack_require__(/*! ./components/TagsIndex */ \"./app/src/components/TagsIndex.js\");\n\nvar _TagsIndex2 = _interopRequireDefault(_TagsIndex);\n\nvar _Settings = __webpack_require__(/*! ./components/Settings */ \"./app/src/components/Settings.js\");\n\nvar _Settings2 = _interopRequireDefault(_Settings);\n\nvar _Header = __webpack_require__(/*! ./components/Header */ \"./app/src/components/Header.js\");\n\nvar _Header2 = _interopRequireDefault(_Header);\n\nvar _Permissives = __webpack_require__(/*! ./components/Permissives */ \"./app/src/components/Permissives.js\");\n\nvar _Permissives2 = _interopRequireDefault(_Permissives);\n\nvar _Main = __webpack_require__(/*! ./components/Main */ \"./app/src/components/Main.js\");\n\nvar _Main2 = _interopRequireDefault(_Main);\n\nvar _Controls = __webpack_require__(/*! ./components/Controls */ \"./app/src/components/Controls.js\");\n\nvar _Controls2 = _interopRequireDefault(_Controls);\n\nvar _EventLog = __webpack_require__(/*! ./components/EventLog */ \"./app/src/components/EventLog.js\");\n\nvar _EventLog2 = _interopRequireDefault(_EventLog);\n\nvar _actions_tags = __webpack_require__(/*! ./actions/actions_tags */ \"./app/src/actions/actions_tags.js\");\n\nvar _actions_plc = __webpack_require__(/*! ./actions/actions_plc */ \"./app/src/actions/actions_plc.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _require = __webpack_require__(/*! ../../tagList.json */ \"./tagList.json\");\n\nvar historyTags = _require.history_tags,\n eventTags = _require.event_tags;\nexports.historyTags = historyTags;\nexports.eventTags = eventTags;\n\n\nvar ipc = (0, _reduxElectronIpc2.default)({\n\t\"tag:valueupdate\": _actions_tags.ipcTagUpdate,\n\t\"plc:connected\": _actions_plc.ipcPlcDetailsReceived,\n\t\"plc:error\": _actions_plc.ipcPlcErrorReceived\n});\n\nvar createStoreWithMiddleware = (0, _redux.applyMiddleware)(ipc)(_redux.createStore);\n\n_reactDom2.default.render(_react2.default.createElement(\n\t_reactRedux.Provider,\n\t{ store: createStoreWithMiddleware(_reducers2.default) },\n\t_react2.default.createElement(\n\t\t_reactRouterDom.BrowserRouter,\n\t\tnull,\n\t\t_react2.default.createElement(\n\t\t\t\"div\",\n\t\t\tnull,\n\t\t\t_react2.default.createElement(_Header2.default, null),\n\t\t\t_react2.default.createElement(\n\t\t\t\t_reactRouterDom.Switch,\n\t\t\t\tnull,\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/settings\", component: _Settings2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/permissives\", component: _Permissives2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/alltags\", component: _TagsIndex2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/controls\", component: _Controls2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/events\", component: _EventLog2.default }),\n\t\t\t\t_react2.default.createElement(_reactRouterDom.Route, { path: \"/\", component: _Main2.default })\n\t\t\t)\n\t\t)\n\t)\n), document.querySelector(\"#app\"));\n\n//# sourceURL=webpack:///./app/src/renderer_process.js?"); /***/ }), @@ -274,6 +310,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _for /***/ }), +/***/ "./node_modules/canvas-gauges/gauge.min.js": +/*!*************************************************!*\ + !*** ./node_modules/canvas-gauges/gauge.min.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/*!\n * The MIT License (MIT)\n * \n * Copyright (c) 2016 Mykhailo Stadnyk \n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * @version 2.1.4\n */\n!function(e){\"use strict\";function t(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t1&&(d=1),1!==d&&(c=r(d),isFinite(c)&&!isNaN(c)&&(d=c)),t&&t(d),s0){for(a=e.toFixed(i).toString().split(\".\"),n=r-a[0].length;o1?(r=~i.indexOf(\".\"),~i.indexOf(\"-\")?\"-\"+[t.majorTicksInt+t.majorTicksDec+2+(r?1:0)-i.length].join(\"0\")+i.replace(\"-\",\"\"):[t.majorTicksInt+t.majorTicksDec+1+(r?1:0)-i.length].join(\"0\")+i):i}function f(e){return e*Math.PI/180}function m(e,t){return{x:-e*Math.sin(t),y:e*Math.cos(t)}}function v(e,t,i,r){var o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=e.createLinearGradient(o?0:n,o?n:0,o?0:r,o?r:0);return a.addColorStop(0,t),a.addColorStop(1,i),a}function b(e,t){if(arguments.length>2&&void 0!==arguments[2]&&arguments[2])return e.restore(),!0;e.save();var i=t.borderShadowWidth;return i&&(e.shadowBlur=i,e.shadowColor=t.colorBorderShadow),!0}function g(e,t){t.needleShadow&&(e.shadowOffsetX=2,e.shadowOffsetY=2,e.shadowBlur=10,e.shadowColor=t.colorNeedleShadowDown)}function p(e,t,i){return e[\"font\"+t+\"Style\"]+\" \"+e[\"font\"+t+\"Weight\"]+\" \"+e[\"font\"+t+\"Size\"]*i+\"px \"+e[\"font\"+t]}function w(e){e.shadowOffsetX=null,e.shadowOffsetY=null,e.shadowBlur=null,e.shadowColor=\"\",e.strokeStyle=null,e.lineWidth=0,e.save()}function k(e,t,i,r){t.valueTextShadow&&(e.shadowOffsetX=i,e.shadowOffsetY=i,e.shadowBlur=r,e.shadowColor=t.colorValueTextShadow)}function y(e,t,i,r,o,n){if(t.valueBox){w(e);var a=t.valueDec?1+t.valueDec:0,l=\"9\".repeat(Math.max.apply(null,[String(parseInt(i)).length+a].concat(t.majorTicks.map(function(e){return String(parseInt(e,10)).length+a})))),s=t.valueText||h(i,t),d=n/200,u=n/100,f=.4*u,m=1.2*u;e.font=p(t,\"Value\",d),k(e,t,f,m);var v=e.measureText(t.valueText?s:\"-\"+h(Number(l),t)).width;w(e);var b=parseFloat(t.fontValueSize)*d+f+m,g=u*parseFloat(t.valueBoxStroke),y=2*n-2*g,x=v+10*u,T=1.1*b+f+m,S=u*t.valueBoxBorderRadius,W=(parseFloat(t.valueBoxWidth)||0)/100*y;W>x&&(x=W),x>y&&(x=y);var O=r-x/2,V=o-T/2,P=o-5.75*u;if(e.beginPath(),S?c(e,O,V,x,T,S):e.rect(O,V,x,T),g){var M=e.createRadialGradient(r,P,10*u,r,P,20*u);M.addColorStop(0,t.colorValueBoxRect),M.addColorStop(1,t.colorValueBoxRectEnd),e.strokeStyle=M,e.lineWidth=g,e.stroke()}t.colorValueBoxShadow&&(e.shadowBlur=1.2*u,e.shadowColor=t.colorValueBoxShadow),t.colorValueBoxBackground&&(e.fillStyle=t.colorValueBoxBackground,e.fill()),e.closePath(),e.restore(),k(e,t,f,m),e.fillStyle=t.colorValueText,e.textAlign=\"center\",e.textBaseline=\"alphabetic\",e.fillText(s,O+x/2,o+T/2-b/3),e.restore()}}function x(e){var t=e.value,i=e.minValue,r=e.maxValue,o=.01*(r-i);return{normal:tr?r:t,indented:tr?r+o:t}}function T(e,t,i,r,o){i.beginPath(),i.arc(0,0,ke(e),0,2*Se,!0),i.lineWidth=t,i.strokeStyle=o?Te.linearGradient(i,r,o,e):r,i.stroke(),i.closePath()}function S(e,t){var i=be.pixelRatio;return e.maxRadius||(e.maxRadius=e.max-t.borderShadowWidth-t.borderOuterWidth*i-t.borderMiddleWidth*i-t.borderInnerWidth*i+(t.borderOuterWidth?.5:0)+(t.borderMiddleWidth?.5:0)+(t.borderInnerWidth?.5:0)),e.maxRadius}function W(e,t){var i=be.pixelRatio,r=t.borderShadowWidth*i,o=e.max-r-t.borderOuterWidth*i/2,n=o-t.borderOuterWidth*i/2-t.borderMiddleWidth*i/2+.5,a=n-t.borderMiddleWidth*i/2-t.borderInnerWidth*i/2+.5,l=S(e,t),s=void 0,d=!1;e.save(),t.borderOuterWidth&&(d=Te.drawShadow(e,t,d),T(o,t.borderOuterWidth*i,e,t.colorBorderOuter,t.colorBorderOuterEnd)),t.borderMiddleWidth&&(d=Te.drawShadow(e,t,d),T(n,t.borderMiddleWidth*i,e,t.colorBorderMiddle,t.colorBorderMiddleEnd)),t.borderInnerWidth&&(d=Te.drawShadow(e,t,d),T(a,t.borderInnerWidth*i,e,t.colorBorderInner,t.colorBorderInnerEnd)),Te.drawShadow(e,t,d),e.beginPath(),e.arc(0,0,ke(l),0,2*Se,!0),t.colorPlateEnd?(s=e.createRadialGradient(0,0,l/2,0,0,l),s.addColorStop(0,t.colorPlate),s.addColorStop(1,t.colorPlateEnd)):s=t.colorPlate,e.fillStyle=s,e.fill(),e.closePath(),e.restore()}function O(e,t){var i=e.max*(parseFloat(t.highlightsWidth)||0)/100;if(i){var r=ke(P(e,t)-i/2),o=0,n=t.highlights.length,a=(t.maxValue-t.minValue)/t.ticksAngle;for(e.save();on?o:n,n>o,o>n?i:r):a,t>0?Te.roundRect(e,i,r,o,n,t):e.rect(i,r,o,n),e.fill(),e.closePath()}function z(e,t,i,r,o,n,a,l,s){e.beginPath(),e.lineWidth=t,e.strokeStyle=s?Te.linearGradient(e,l,s,a,!0,o):l,i>0?Te.roundRect(e,r,o,n,a,i):e.rect(r,o,n,a),e.stroke(),e.closePath()}function L(e,t,i,r,o,n){var a=be.pixelRatio;e.save();var l=t.borderRadius*a,s=o-t.borderShadowWidth-t.borderOuterWidth*a,d=s-t.borderOuterWidth*a-t.borderMiddleWidth*a,c=d-t.borderMiddleWidth*a-t.borderInnerWidth*a,h=c-t.borderInnerWidth*a,u=n-t.borderShadowWidth-t.borderOuterWidth*a,f=u-t.borderOuterWidth*a-t.borderMiddleWidth*a,m=f-t.borderMiddleWidth*a-t.borderInnerWidth*a,v=m-t.borderInnerWidth*a,b=i-(d-s)/2,g=b-(c-d)/2,p=g-(h-c)/2,w=r-(f-u)/2,k=w-(m-f)/2,y=k-(v-m)/2,x=0,T=!1;return t.borderOuterWidth&&(T=Te.drawShadow(e,t,T),z(e,t.borderOuterWidth*a,l,i+t.borderOuterWidth*a/2-x,r+t.borderOuterWidth*a/2-x,s,u,t.colorBorderOuter,t.colorBorderOuterEnd),x+=.5*a),t.borderMiddleWidth&&(T=Te.drawShadow(e,t,T),z(e,t.borderMiddleWidth*a,l-=1+2*x,b+t.borderMiddleWidth*a/2-x,w+t.borderMiddleWidth*a/2-x,d+2*x,f+2*x,t.colorBorderMiddle,t.colorBorderMiddleEnd),x+=.5*a),t.borderInnerWidth&&(T=Te.drawShadow(e,t,T),z(e,t.borderInnerWidth*a,l-=1+2*x,g+t.borderInnerWidth*a/2-x,k+t.borderInnerWidth*a/2-x,c+2*x,m+2*x,t.colorBorderInner,t.colorBorderInnerEnd),x+=.5*a),Te.drawShadow(e,t,T),D(e,l,p,y,h+2*x,v+2*x,t.colorPlate,t.colorPlateEnd),e.restore(),[p,y,h,v]}function G(e,t,i,r,o,n){var a=be.pixelRatio,l=n>=o,s=l?.85*o:n,d=l?n:o;i=l?we(i+(o-s)/2):i;var c=!!t.title,h=!!t.units,u=!!t.valueBox,f=void 0,m=void 0,v=void 0;l?(m=we(.05*d),f=we(.075*d),v=we(.11*d),c&&(d-=f,r+=f),h&&(d-=m),u&&(d-=v)):(m=f=we(.15*s),c&&(s-=f,r+=f),h&&(s-=m));var b=2*t.barStrokeWidth,g=t.barBeginCircle?we(s*t.barBeginCircle/200-b/2):0,p=we(s*t.barWidth/100-b),w=we(d*t.barLength/100-b),k=we((d-w)/2),y=we(i+(l?s/2:k+g)),x=we(r+(l?d-k-g+b/2:s/2)),T=!l||t.hasLeft&&t.hasRight?0:(t.hasRight?-1:1)*t.ticksWidth/100*s,S=l||t.hasLeft&&t.hasRight?0:(t.hasRight?-1:1)*t.ticksWidth/100*s;return e.barDimensions={isVertical:l,width:s,length:d,barWidth:p,barLength:w,strokeWidth:b,barMargin:k,radius:g,pixelRatio:a,barOffset:null,titleMargin:c?f:0,unitsMargin:h?m:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:i+T,Y:r+S,x0:y+T,y0:x+S,baseX:i,baseY:r,ticksPadding:t.ticksPadding/100},e.barDimensions}function F(e,t,i,r,o,n,a){var l=G(e,t,r,o,n,a),s=l.isVertical,d=l.width,c=l.barWidth,h=l.barLength,u=l.strokeWidth,f=l.barMargin,m=l.radius,v=l.x0,b=l.y0,g=l.X,p=l.Y,w=h;if(e.save(),e.beginPath(),t.barBeginCircle){var k=Te.radians(s?270:0),y=Math.asin(c/2/m),x=Math.cos(y),T=Math.sin(y),S=v+(s?m*T:m*x-u/2),W=s?b-m*x:b+m*T,O=ke(s?W-b:S-v);e.barDimensions.barOffset=we(O+m);var V=s?we(v-m*T):S,P=s?W:we(b-m*T);\"progress\"===i&&(h=e.barDimensions.barOffset+(h-e.barDimensions.barOffset)*(Te.normalizedValue(t).normal-t.minValue)/(t.maxValue-t.minValue));var M=we(S+h-e.barDimensions.barOffset+u/2),B=we(W-h+e.barDimensions.barOffset-u/2);e.arc(v,b,m,k+y,k-y),s?(e.moveTo(S,P),e.lineTo(S,B),e.lineTo(V,B),e.lineTo(V,P)):(e.moveTo(S,P),e.lineTo(M,P),e.lineTo(M,W),e.lineTo(S,W))}else{var A=we(s?g+(d-c)/2:g+f),j=we(s?p+h+f:p+(d-c)/2);\"progress\"===i&&(h*=(t.value-t.minValue)/(t.maxValue-t.minValue)),s?e.rect(A,j,c,-h):e.rect(A,j,h,c)}\"progress\"!==i&&t.barStrokeWidth&&(e.lineWidth=u,e.strokeStyle=t.colorBarStroke,e.stroke()),\"progress\"!==i&&t.colorBar?(e.fillStyle=t.colorBarEnd?Te.linearGradient(e,t.colorBar,t.colorBarEnd,h,s,s?p:g):t.colorBar,e.fill()):\"progress\"===i&&t.colorBarProgress&&(e.fillStyle=t.colorBarProgressEnd?Te.linearGradient(e,t.colorBarProgress,t.colorBarProgressEnd,w,s,s?p:g):t.colorBarProgress,e.fill()),e.closePath(),t.barBeginCircle&&(e.barDimensions.radius+=u),e.barDimensions.barWidth+=u,e.barDimensions.barLength+=u}function X(e,t,i,r,o,n){F(e,t,\"\",i,r,o,n)}function Y(e,t){return t.needleSide!==e||t.tickSide!==e||t.numberSide!==e}function U(e,t,i,r,o,n){t.barProgress&&F(e,t,\"progress\",i,r,o,n)}function q(e,t){var i=e.barDimensions,r=i.isVertical,o=i.width,n=i.length,a=i.barWidth,l=i.barOffset,s=i.barMargin,d=i.X,c=i.Y,h=i.ticksLength,u=i.ticksPadding,f=o*(parseFloat(t.highlightsWidth)||0)/100;if(t.highlights&&f){var m=\"right\"!==t.tickSide,v=\"left\"!==t.tickSide,b=0,g=t.highlights.length,p=(o-a)/2,w=t.maxValue-t.minValue,k=we(r?d+p:d+s+l),y=f,x=r?c+n-s-l:c+p,T=we((t.ticksWidth/100+u)*o)+(f-t.ticksWidth/100*o),S=we(a+u*o);for(e.save();bn&&(d*=-1),e.moveTo(i-h,r),e.lineTo(i+h,r),e.lineTo(i+h,r+d),e.lineTo(i,n),e.lineTo(i-h,r+d),e.lineTo(i-h,r)):(i>o&&(d*=-1),e.moveTo(i,r-h),e.lineTo(i,r+h),e.lineTo(i+d,r+h),e.lineTo(o,r),e.lineTo(i+d,r-h),e.lineTo(i,r-h)),e.fill(),e.closePath()}function ae(e,t,i,r,o,n,a){var l=(parseFloat(t.fontValueSize)||0)*n/200,s=(.11*a-l)/2;e.barDimensions.isVertical&&Te.drawValueBox(e,t,i,r+n/2,o+a-l-s,n)}var le=function(){function e(e,t){var i=[],r=!0,o=!1,n=void 0;try{for(var a,l=e[Symbol.iterator]();!(r=(a=l.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){o=!0,n=e}finally{try{!r&&l.return&&l.return()}finally{if(o)throw n}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),se=function e(t,i,r){null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,i);if(void 0===o){var n=Object.getPrototypeOf(t);return null===n?void 0:e(n,i,r)}if(\"value\"in o)return o.value;var a=o.get;if(void 0!==a)return a.call(r)},de=function e(t,i,r,o){var n=Object.getOwnPropertyDescriptor(t,i);if(void 0===n){var a=Object.getPrototypeOf(t);null!==a&&e(a,i,r,o)}else if(\"value\"in n&&n.writable)n.value=r;else{var l=n.set;void 0!==l&&l.call(o,r)}return r},ce=function(){function e(e,t){for(var i=0;i>>0;if(0===o)return-1;var n=+t||0;if(Math.abs(n)===1/0&&(n=0),n>=o)return-1;for(i=Math.max(n>=0?n:o-Math.abs(n),0);i>>0,r=arguments[1],o=r>>0,n=o<0?Math.max(i+o,0):Math.min(o,i),a=arguments[2],l=void 0===a?i:a>>0,s=l<0?Math.max(i+l,0):Math.min(l,i);n1?r-1:0),n=1;n1?t-1:0),r=1;r=(7-4*t)/11)return-Math.pow((11-6*t-11*e)/4,2)+Math.pow(i,2)},elastic:function(e){return 1-fe.delastic(1-e)},delastic:function(e){return Math.pow(2,10*(e-1))*Math.cos(20*Math.PI*1.5/3*e)}},me=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"linear\",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:250,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){};if(o(this,e),this.duration=i,this.rule=t,this.draw=r,this.end=n,\"function\"!=typeof this.draw)throw new TypeError(\"Invalid animation draw callback:\",r);if(\"function\"!=typeof this.end)throw new TypeError(\"Invalid animation end callback:\",n)}return ce(e,[{key:\"animate\",value:function(e,t){var i=this;this.frame&&this.cancel();var r=window.performance&&window.performance.now?window.performance.now():n(\"animationStartTime\")||Date.now();e=e||this.draw,t=t||this.end,this.draw=e,this.end=t,this.frame=ue(function(o){return a(o,e,r,fe[i.rule]||i.rule,i.duration,t,i)})}},{key:\"cancel\",value:function(){if(this.frame){(n(\"cancelAnimationFrame\")||function(e){})(this.frame),this.frame=null}}},{key:\"destroy\",value:function(){this.cancel(),this.draw=null,this.end=null}}]),e}();me.rules=fe;var ve=function(){function t(i,r,n){o(this,t),this.options=i,this.element=r.toLowerCase(),this.type=t.toDashed(n),this.Type=e[n],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||t.domReady(this.traverse.bind(this))}return ce(t,[{key:\"isValidNode\",value:function(e){return!(!e.tagName||e.tagName.toLowerCase()!==this.element||e.getAttribute(\"data-type\")!==this.type)}},{key:\"traverse\",value:function(){for(var e=document.getElementsByTagName(this.element),t=0,i=e.length;t1&&void 0!==arguments[1])||arguments[1],i=e.split(/-/),r=0,o=i.length,n=\"\";r1&&void 0!==arguments[1]?arguments[1]:0;return e=parseFloat(e),!isNaN(e)&&isFinite(e)||(e=parseFloat(t)||0),e}},{key:\"version\",get:function(){return pe}}]),n}(he);void 0!==e&&(e.BaseGauge=xe,e.gauges=(window.document||{}).gauges=ye);var Te={roundRect:c,padValue:h,formatMajorTickNumber:u,radians:f,radialPoint:m,linearGradient:v,drawNeedleShadow:g,drawValueBox:y,verifyError:s,prepareTicks:d,drawShadow:b,font:p,normalizedValue:x},Se=Math.PI,We=Se/2,Oe=Object.assign({},ge,{ticksAngle:270,startAngle:45,colorNeedleCircleOuter:\"#f0f0f0\",colorNeedleCircleOuterEnd:\"#ccc\",colorNeedleCircleInner:\"#e8e8e8\",colorNeedleCircleInnerEnd:\"#f5f5f5\",needleCircleSize:10,needleCircleInner:!0,needleCircleOuter:!0,needleStart:20,animationTarget:\"needle\",useMinPath:!1,barWidth:0}),Ve=function(e){function t(e){return o(this,t),e=Object.assign({},Oe,e||{}),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t.configure(e)))}return r(t,e),ce(t,[{key:\"draw\",value:function(){try{var e=this.canvas,i=[-e.drawX,-e.drawY,e.drawWidth,e.drawHeight],r=i[0],o=i[1],n=i[2],a=i[3],l=this.options;if(\"needle\"===l.animationTarget){if(!e.elementClone.initialized){var s=e.contextClone;s.clearRect(r,o,n,a),s.save(),this.emit(\"beforePlate\"),W(s,l),this.emit(\"beforeHighlights\"),O(s,l),this.emit(\"beforeMinorTicks\"),V(s,l),this.emit(\"beforeMajorTicks\"),M(s,l),this.emit(\"beforeNumbers\"),j(s,l),this.emit(\"beforeTitle\"),C(s,l),this.emit(\"beforeUnits\"),N(s,l),e.elementClone.initialized=!0}this.canvas.commit(),e.context.clearRect(r,o,n,a),e.context.save(),e.context.drawImage(e.elementClone,r,o,n,a),e.context.save(),this.emit(\"beforeProgressBar\"),R(e.context,l),this.emit(\"beforeValueBox\"),_(e.context,l,I(this)),this.emit(\"beforeNeedle\"),E(e.context,l)}else{var d=-Te.radians((l.value-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle);if(e.context.clearRect(r,o,n,a),e.context.save(),this.emit(\"beforePlate\"),W(e.context,l),e.context.rotate(d),this.emit(\"beforeHighlights\"),O(e.context,l),this.emit(\"beforeMinorTicks\"),V(e.context,l),this.emit(\"beforeMajorTicks\"),M(e.context,l),this.emit(\"beforeNumbers\"),j(e.context,l),this.emit(\"beforeProgressBar\"),R(e.context,l),e.context.rotate(-d),e.context.save(),!e.elementClone.initialized){var c=e.contextClone;c.clearRect(r,o,n,a),c.save(),this.emit(\"beforeTitle\"),C(c,l),this.emit(\"beforeUnits\"),N(c,l),this.emit(\"beforeNeedle\"),E(c,l),e.elementClone.initialized=!0}e.context.drawImage(e.elementClone,r,o,n,a)}this.emit(\"beforeValueBox\"),_(e.context,l,I(this)),se(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),\"draw\",this).call(this)}catch(e){Te.verifyError(e)}return this}},{key:\"value\",set:function(e){e=xe.ensureValue(e,this.options.minValue),this.options.animation&&360===this.options.ticksAngle&&this.options.useMinPath&&(this._value=e,e=this.options.value+((e-this.options.value)%360+540)%360-180),de(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),\"value\",e,this)},get:function(){return se(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),\"value\",this)}}],[{key:\"configure\",value:function(e){return e.barWidth>50&&(e.barWidth=50),isNaN(e.startAngle)&&(e.startAngle=45),isNaN(e.ticksAngle)&&(e.ticksAngle=270),e.ticksAngle>360&&(e.ticksAngle=360),e.ticksAngle<0&&(e.ticksAngle=0),e.startAngle<0&&(e.startAngle=0),e.startAngle>360&&(e.startAngle=360),e}}]),t}(xe);void 0!==e&&(e.RadialGauge=Ve),xe.initialize(\"RadialGauge\",Oe);var Pe=Object.assign({},ge,{borderRadius:0,barBeginCircle:30,colorBarEnd:\"\",colorBarProgressEnd:\"\",needleWidth:6,tickSide:\"both\",needleSide:\"both\",numberSide:\"both\",ticksWidth:10,ticksWidthMinor:5,ticksPadding:5,barLength:85,fontTitleSize:26,highlightsWidth:10}),Me=function(e){function n(e){return o(this,n),e=Object.assign({},Pe,e||{}),i(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n.configure(e)))}return r(n,e),ce(n,[{key:\"draw\",value:function(){try{var e=this.canvas,i=[-e.drawX,-e.drawY,e.drawWidth,e.drawHeight],r=i[0],o=i[1],a=i[2],l=i[3],s=this.options;if(!e.elementClone.initialized){var d=e.contextClone;d.clearRect(r,o,a,l),d.save(),this.emit(\"beforePlate\"),this.drawBox=L(d,s,r,o,a,l),this.emit(\"beforeBar\"),X.apply(void 0,[d,s].concat(t(this.drawBox))),e.context.barDimensions=d.barDimensions,this.emit(\"beforeHighlights\"),q(d,s),this.emit(\"beforeMinorTicks\"),K(d,s),this.emit(\"beforeMajorTicks\"),$(d,s),this.emit(\"beforeNumbers\"),Q(d,s),this.emit(\"beforeTitle\"),ee(d,s),this.emit(\"beforeUnits\"),te(d,s),e.elementClone.initialized=!0}this.canvas.commit(),e.context.clearRect(r,o,a,l),e.context.save(),e.context.drawImage(e.elementClone,r,o,a,l),e.context.save(),this.emit(\"beforeProgressBar\"),U.apply(void 0,[e.context,s].concat(t(this.drawBox))),this.emit(\"beforeNeedle\"),ie(e.context,s),this.emit(\"beforeValueBox\"),ae.apply(void 0,[e.context,s,s.animatedValue?this.options.value:this.value].concat(t(this.drawBox))),se(n.prototype.__proto__||Object.getPrototypeOf(n.prototype),\"draw\",this).call(this)}catch(e){Te.verifyError(e)}return this}}],[{key:\"configure\",value:function(e){return e.barStrokeWidth>=e.barWidth&&(e.barStrokeWidth=we(e.barWidth/2)),e.hasLeft=Y(\"right\",e),e.hasRight=Y(\"left\",e),e.value>e.maxValue&&(e.value=e.maxValue),e.value= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dispatch);\n\n\n//# sourceURL=webpack:///./node_modules/d3-dispatch/src/dispatch.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/index.js": +/*!***************************************!*\ + !*** ./node_modules/d3-ease/index.js ***! + \***************************************/ +/*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/linear */ \"./node_modules/d3-ease/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeLinear\", function() { return _src_linear__WEBPACK_IMPORTED_MODULE_0__[\"linear\"]; });\n\n/* harmony import */ var _src_quad__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/quad */ \"./node_modules/d3-ease/src/quad.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuad\", function() { return _src_quad__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadIn\", function() { return _src_quad__WEBPACK_IMPORTED_MODULE_1__[\"quadIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadOut\", function() { return _src_quad__WEBPACK_IMPORTED_MODULE_1__[\"quadOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadInOut\", function() { return _src_quad__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony import */ var _src_cubic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/cubic */ \"./node_modules/d3-ease/src/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubic\", function() { return _src_cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicIn\", function() { return _src_cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicOut\", function() { return _src_cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicInOut\", function() { return _src_cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony import */ var _src_poly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/poly */ \"./node_modules/d3-ease/src/poly.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePoly\", function() { return _src_poly__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyIn\", function() { return _src_poly__WEBPACK_IMPORTED_MODULE_3__[\"polyIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyOut\", function() { return _src_poly__WEBPACK_IMPORTED_MODULE_3__[\"polyOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyInOut\", function() { return _src_poly__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony import */ var _src_sin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./src/sin */ \"./node_modules/d3-ease/src/sin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSin\", function() { return _src_sin__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinIn\", function() { return _src_sin__WEBPACK_IMPORTED_MODULE_4__[\"sinIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinOut\", function() { return _src_sin__WEBPACK_IMPORTED_MODULE_4__[\"sinOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinInOut\", function() { return _src_sin__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony import */ var _src_exp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./src/exp */ \"./node_modules/d3-ease/src/exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExp\", function() { return _src_exp__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpIn\", function() { return _src_exp__WEBPACK_IMPORTED_MODULE_5__[\"expIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpOut\", function() { return _src_exp__WEBPACK_IMPORTED_MODULE_5__[\"expOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpInOut\", function() { return _src_exp__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony import */ var _src_circle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./src/circle */ \"./node_modules/d3-ease/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircle\", function() { return _src_circle__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleIn\", function() { return _src_circle__WEBPACK_IMPORTED_MODULE_6__[\"circleIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleOut\", function() { return _src_circle__WEBPACK_IMPORTED_MODULE_6__[\"circleOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleInOut\", function() { return _src_circle__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony import */ var _src_bounce__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./src/bounce */ \"./node_modules/d3-ease/src/bounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounce\", function() { return _src_bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceIn\", function() { return _src_bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceOut\", function() { return _src_bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceInOut\", function() { return _src_bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceInOut\"]; });\n\n/* harmony import */ var _src_back__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./src/back */ \"./node_modules/d3-ease/src/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBack\", function() { return _src_back__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackIn\", function() { return _src_back__WEBPACK_IMPORTED_MODULE_8__[\"backIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackOut\", function() { return _src_back__WEBPACK_IMPORTED_MODULE_8__[\"backOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackInOut\", function() { return _src_back__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony import */ var _src_elastic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./src/elastic */ \"./node_modules/d3-ease/src/elastic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElastic\", function() { return _src_elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticIn\", function() { return _src_elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticOut\", function() { return _src_elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticInOut\", function() { return _src_elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticInOut\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/back.js": +/*!******************************************!*\ + !*** ./node_modules/d3-ease/src/back.js ***! + \******************************************/ +/*! exports provided: backIn, backOut, backInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backIn\", function() { return backIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backOut\", function() { return backOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backInOut\", function() { return backInOut; });\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/back.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/bounce.js": +/*!********************************************!*\ + !*** ./node_modules/d3-ease/src/bounce.js ***! + \********************************************/ +/*! exports provided: bounceIn, bounceOut, bounceInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceIn\", function() { return bounceIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceOut\", function() { return bounceOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceInOut\", function() { return bounceInOut; });\nvar b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/bounce.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/circle.js": +/*!********************************************!*\ + !*** ./node_modules/d3-ease/src/circle.js ***! + \********************************************/ +/*! exports provided: circleIn, circleOut, circleInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleIn\", function() { return circleIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleOut\", function() { return circleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleInOut\", function() { return circleInOut; });\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/circle.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/cubic.js": +/*!*******************************************!*\ + !*** ./node_modules/d3-ease/src/cubic.js ***! + \*******************************************/ +/*! exports provided: cubicIn, cubicOut, cubicInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicIn\", function() { return cubicIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicOut\", function() { return cubicOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicInOut\", function() { return cubicInOut; });\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/cubic.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/elastic.js": +/*!*********************************************!*\ + !*** ./node_modules/d3-ease/src/elastic.js ***! + \*********************************************/ +/*! exports provided: elasticIn, elasticOut, elasticInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticIn\", function() { return elasticIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticOut\", function() { return elasticOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticInOut\", function() { return elasticInOut; });\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/elastic.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/exp.js": +/*!*****************************************!*\ + !*** ./node_modules/d3-ease/src/exp.js ***! + \*****************************************/ +/*! exports provided: expIn, expOut, expInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expIn\", function() { return expIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expOut\", function() { return expOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expInOut\", function() { return expInOut; });\nfunction expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nfunction expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/exp.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/linear.js": +/*!********************************************!*\ + !*** ./node_modules/d3-ease/src/linear.js ***! + \********************************************/ +/*! exports provided: linear */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\nfunction linear(t) {\n return +t;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/linear.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/poly.js": +/*!******************************************!*\ + !*** ./node_modules/d3-ease/src/poly.js ***! + \******************************************/ +/*! exports provided: polyIn, polyOut, polyInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyIn\", function() { return polyIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyOut\", function() { return polyOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyInOut\", function() { return polyInOut; });\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/poly.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/quad.js": +/*!******************************************!*\ + !*** ./node_modules/d3-ease/src/quad.js ***! + \******************************************/ +/*! exports provided: quadIn, quadOut, quadInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadIn\", function() { return quadIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadOut\", function() { return quadOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadInOut\", function() { return quadInOut; });\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/quad.js?"); + +/***/ }), + +/***/ "./node_modules/d3-ease/src/sin.js": +/*!*****************************************!*\ + !*** ./node_modules/d3-ease/src/sin.js ***! + \*****************************************/ +/*! exports provided: sinIn, sinOut, sinInOut */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinIn\", function() { return sinIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinOut\", function() { return sinOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinInOut\", function() { return sinInOut; });\nvar pi = Math.PI,\n halfPi = pi / 2;\n\nfunction sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/sin.js?"); + +/***/ }), + /***/ "./node_modules/d3-format/index.js": /*!*****************************************!*\ !*** ./node_modules/d3-format/index.js ***! @@ -2866,6 +3069,606 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/d3-selection/index.js": +/*!********************************************!*\ + !*** ./node_modules/d3-selection/index.js ***! + \********************************************/ +/*! exports provided: create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_create__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/create */ \"./node_modules/d3-selection/src/create.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return _src_create__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _src_creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/creator */ \"./node_modules/d3-selection/src/creator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"creator\", function() { return _src_creator__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_local__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/local */ \"./node_modules/d3-selection/src/local.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"local\", function() { return _src_local__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _src_matcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/matcher */ \"./node_modules/d3-selection/src/matcher.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return _src_matcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _src_mouse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./src/mouse */ \"./node_modules/d3-selection/src/mouse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mouse\", function() { return _src_mouse__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _src_namespace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./src/namespace */ \"./node_modules/d3-selection/src/namespace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"namespace\", function() { return _src_namespace__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _src_namespaces__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./src/namespaces */ \"./node_modules/d3-selection/src/namespaces.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"namespaces\", function() { return _src_namespaces__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _src_point__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./src/point */ \"./node_modules/d3-selection/src/point.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clientPoint\", function() { return _src_point__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _src_select__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./src/select */ \"./node_modules/d3-selection/src/select.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return _src_select__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _src_selectAll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./src/selectAll */ \"./node_modules/d3-selection/src/selectAll.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selectAll\", function() { return _src_selectAll__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _src_selection_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./src/selection/index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selection\", function() { return _src_selection_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _src_selector__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./src/selector */ \"./node_modules/d3-selection/src/selector.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selector\", function() { return _src_selector__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _src_selectorAll__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./src/selectorAll */ \"./node_modules/d3-selection/src/selectorAll.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selectorAll\", function() { return _src_selectorAll__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _src_selection_style__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./src/selection/style */ \"./node_modules/d3-selection/src/selection/style.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"style\", function() { return _src_selection_style__WEBPACK_IMPORTED_MODULE_13__[\"styleValue\"]; });\n\n/* harmony import */ var _src_touch__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./src/touch */ \"./node_modules/d3-selection/src/touch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"touch\", function() { return _src_touch__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _src_touches__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./src/touches */ \"./node_modules/d3-selection/src/touches.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"touches\", function() { return _src_touches__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _src_window__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./src/window */ \"./node_modules/d3-selection/src/window.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"window\", function() { return _src_window__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _src_selection_on__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./src/selection/on */ \"./node_modules/d3-selection/src/selection/on.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"event\", function() { return _src_selection_on__WEBPACK_IMPORTED_MODULE_17__[\"event\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"customEvent\", function() { return _src_selection_on__WEBPACK_IMPORTED_MODULE_17__[\"customEvent\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/constant.js": +/*!***************************************************!*\ + !*** ./node_modules/d3-selection/src/constant.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/constant.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/create.js": +/*!*************************************************!*\ + !*** ./node_modules/d3-selection/src/create.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./creator */ \"./node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./select */ \"./node_modules/d3-selection/src/select.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n return Object(_select__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Object(_creator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name).call(document.documentElement));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/create.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/creator.js": +/*!**************************************************!*\ + !*** ./node_modules/d3-selection/src/creator.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespace */ \"./node_modules/d3-selection/src/namespace.js\");\n/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespaces */ \"./node_modules/d3-selection/src/namespaces.js\");\n\n\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === _namespaces__WEBPACK_IMPORTED_MODULE_1__[\"xhtml\"] && document.documentElement.namespaceURI === _namespaces__WEBPACK_IMPORTED_MODULE_1__[\"xhtml\"]\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/creator.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/local.js": +/*!************************************************!*\ + !*** ./node_modules/d3-selection/src/local.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return local; });\nvar nextId = 0;\n\nfunction local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/local.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/matcher.js": +/*!**************************************************!*\ + !*** ./node_modules/d3-selection/src/matcher.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nvar matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (matcher);\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/matcher.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/mouse.js": +/*!************************************************!*\ + !*** ./node_modules/d3-selection/src/mouse.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ \"./node_modules/d3-selection/src/sourceEvent.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node) {\n var event = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n if (event.changedTouches) event = event.changedTouches[0];\n return Object(_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, event);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/mouse.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/namespace.js": +/*!****************************************************!*\ + !*** ./node_modules/d3-selection/src/namespace.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespaces */ \"./node_modules/d3-selection/src/namespaces.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return _namespaces__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasOwnProperty(prefix) ? {space: _namespaces__WEBPACK_IMPORTED_MODULE_0__[\"default\"][prefix], local: name} : name;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/namespace.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/namespaces.js": +/*!*****************************************************!*\ + !*** ./node_modules/d3-selection/src/namespaces.js ***! + \*****************************************************/ +/*! exports provided: xhtml, default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"xhtml\", function() { return xhtml; });\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/namespaces.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/point.js": +/*!************************************************!*\ + !*** ./node_modules/d3-selection/src/point.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/point.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/select.js": +/*!*************************************************!*\ + !*** ./node_modules/d3-selection/src/select.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return typeof selector === \"string\"\n ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([[document.querySelector(selector)]], [document.documentElement])\n : new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([[selector]], _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"root\"]);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/select.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selectAll.js": +/*!****************************************************!*\ + !*** ./node_modules/d3-selection/src/selectAll.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return typeof selector === \"string\"\n ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([document.querySelectorAll(selector)], [document.documentElement])\n : new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([selector == null ? [] : selector], _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"root\"]);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selectAll.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/append.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/append.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator */ \"./node_modules/d3-selection/src/creator.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var create = typeof name === \"function\" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/append.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/attr.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/attr.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../namespace */ \"./node_modules/d3-selection/src/namespace.js\");\n\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/attr.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/call.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/call.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/call.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/classed.js": +/*!************************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/classed.js ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/classed.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/clone.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/clone.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/clone.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/data.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/data.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _enter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enter */ \"./node_modules/d3-selection/src/selection/enter.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/d3-selection/src/constant.js\");\n\n\n\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__[\"EnterNode\"](parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__[\"EnterNode\"](parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = Object(_constant__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/data.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/datum.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/datum.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/datum.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/dispatch.js": +/*!*************************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/dispatch.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window */ \"./node_modules/d3-selection/src/window.js\");\n\n\nfunction dispatchEvent(node, type, params) {\n var window = Object(_window__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/dispatch.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/each.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/each.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/each.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/empty.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/empty.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return !this.node();\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/empty.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/enter.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/enter.js ***! + \**********************************************************/ +/*! exports provided: default, EnterNode */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EnterNode\", function() { return EnterNode; });\n/* harmony import */ var _sparse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sparse */ \"./node_modules/d3-selection/src/selection/sparse.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Selection\"](this._enter || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), this._parents);\n});\n\nfunction EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/enter.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/exit.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/exit.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sparse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sparse */ \"./node_modules/d3-selection/src/selection/sparse.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Selection\"](this._exit || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), this._parents);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/exit.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/filter.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/filter.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _matcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../matcher */ \"./node_modules/d3-selection/src/matcher.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(match) {\n if (typeof match !== \"function\") match = Object(_matcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](subgroups, this._parents);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/filter.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/html.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/html.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/html.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/index.js ***! + \**********************************************************/ +/*! exports provided: root, Selection, default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"root\", function() { return root; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Selection\", function() { return Selection; });\n/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select */ \"./node_modules/d3-selection/src/selection/select.js\");\n/* harmony import */ var _selectAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectAll */ \"./node_modules/d3-selection/src/selection/selectAll.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./filter */ \"./node_modules/d3-selection/src/selection/filter.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./data */ \"./node_modules/d3-selection/src/selection/data.js\");\n/* harmony import */ var _enter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./enter */ \"./node_modules/d3-selection/src/selection/enter.js\");\n/* harmony import */ var _exit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exit */ \"./node_modules/d3-selection/src/selection/exit.js\");\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./merge */ \"./node_modules/d3-selection/src/selection/merge.js\");\n/* harmony import */ var _order__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./order */ \"./node_modules/d3-selection/src/selection/order.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./sort */ \"./node_modules/d3-selection/src/selection/sort.js\");\n/* harmony import */ var _call__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./call */ \"./node_modules/d3-selection/src/selection/call.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./nodes */ \"./node_modules/d3-selection/src/selection/nodes.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./node */ \"./node_modules/d3-selection/src/selection/node.js\");\n/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./size */ \"./node_modules/d3-selection/src/selection/size.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./empty */ \"./node_modules/d3-selection/src/selection/empty.js\");\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./each */ \"./node_modules/d3-selection/src/selection/each.js\");\n/* harmony import */ var _attr__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./attr */ \"./node_modules/d3-selection/src/selection/attr.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./style */ \"./node_modules/d3-selection/src/selection/style.js\");\n/* harmony import */ var _property__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./property */ \"./node_modules/d3-selection/src/selection/property.js\");\n/* harmony import */ var _classed__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./classed */ \"./node_modules/d3-selection/src/selection/classed.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./text */ \"./node_modules/d3-selection/src/selection/text.js\");\n/* harmony import */ var _html__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./html */ \"./node_modules/d3-selection/src/selection/html.js\");\n/* harmony import */ var _raise__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./raise */ \"./node_modules/d3-selection/src/selection/raise.js\");\n/* harmony import */ var _lower__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./lower */ \"./node_modules/d3-selection/src/selection/lower.js\");\n/* harmony import */ var _append__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./append */ \"./node_modules/d3-selection/src/selection/append.js\");\n/* harmony import */ var _insert__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./insert */ \"./node_modules/d3-selection/src/selection/insert.js\");\n/* harmony import */ var _remove__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./remove */ \"./node_modules/d3-selection/src/selection/remove.js\");\n/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./clone */ \"./node_modules/d3-selection/src/selection/clone.js\");\n/* harmony import */ var _datum__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./datum */ \"./node_modules/d3-selection/src/selection/datum.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./on */ \"./node_modules/d3-selection/src/selection/on.js\");\n/* harmony import */ var _dispatch__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./dispatch */ \"./node_modules/d3-selection/src/selection/dispatch.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: _select__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n selectAll: _selectAll__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n filter: _filter__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n data: _data__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n enter: _enter__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n exit: _exit__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n merge: _merge__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n order: _order__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n sort: _sort__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n call: _call__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n nodes: _nodes__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n node: _node__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n size: _size__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n empty: _empty__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n each: _each__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n attr: _attr__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n style: _style__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n property: _property__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n classed: _classed__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n text: _text__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n html: _html__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n raise: _raise__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n lower: _lower__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n append: _append__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n insert: _insert__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n remove: _remove__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n clone: _clone__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n datum: _datum__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n on: _on__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n dispatch: _dispatch__WEBPACK_IMPORTED_MODULE_29__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (selection);\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/insert.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/insert.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator */ \"./node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector */ \"./node_modules/d3-selection/src/selector.js\");\n\n\n\nfunction constantNull() {\n return null;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, before) {\n var create = typeof name === \"function\" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : Object(_selector__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/insert.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/lower.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/lower.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.each(lower);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/lower.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/merge.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/merge.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](merges, this._parents);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/merge.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/node.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/node.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/node.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/nodes.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/nodes.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/nodes.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/on.js": +/*!*******************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/on.js ***! + \*******************************************************/ +/*! exports provided: event, default, customEvent */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"event\", function() { return event; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"customEvent\", function() { return customEvent; });\nvar filterEvents = {};\n\nvar event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n});\n\nfunction customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/on.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/order.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/order.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/order.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/property.js": +/*!*************************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/property.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/property.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/raise.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/raise.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.each(raise);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/raise.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/remove.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/remove.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.each(remove);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/remove.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/select.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/select.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector */ \"./node_modules/d3-selection/src/selector.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(select) {\n if (typeof select !== \"function\") select = Object(_selector__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](subgroups, this._parents);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/select.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/selectAll.js": +/*!**************************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/selectAll.js ***! + \**************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _selectorAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selectorAll */ \"./node_modules/d3-selection/src/selectorAll.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(select) {\n if (typeof select !== \"function\") select = Object(_selectorAll__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](subgroups, parents);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/selectAll.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/size.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/size.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/size.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/sort.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/sort.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](sortgroups, this._parents).order();\n});\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/sort.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/sparse.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/sparse.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(update) {\n return new Array(update.length);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/sparse.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/style.js": +/*!**********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/style.js ***! + \**********************************************************/ +/*! exports provided: default, styleValue */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleValue\", function() { return styleValue; });\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window */ \"./node_modules/d3-selection/src/window.js\");\n\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n});\n\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || Object(_window__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/style.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selection/text.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-selection/src/selection/text.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selection/text.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selector.js": +/*!***************************************************!*\ + !*** ./node_modules/d3-selection/src/selector.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction none() {}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selector.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/selectorAll.js": +/*!******************************************************!*\ + !*** ./node_modules/d3-selection/src/selectorAll.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction empty() {\n return [];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/selectorAll.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/sourceEvent.js": +/*!******************************************************!*\ + !*** ./node_modules/d3-selection/src/sourceEvent.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _selection_on__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/on */ \"./node_modules/d3-selection/src/selection/on.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var current = _selection_on__WEBPACK_IMPORTED_MODULE_0__[\"event\"], source;\n while (source = current.sourceEvent) current = source;\n return current;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/sourceEvent.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/touch.js": +/*!************************************************!*\ + !*** ./node_modules/d3-selection/src/touch.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ \"./node_modules/d3-selection/src/sourceEvent.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return Object(_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, touch);\n }\n }\n\n return null;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/touch.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/touches.js": +/*!**************************************************!*\ + !*** ./node_modules/d3-selection/src/touches.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ \"./node_modules/d3-selection/src/sourceEvent.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, touches) {\n if (touches == null) touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = Object(_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, touches[i]);\n }\n\n return points;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/touches.js?"); + +/***/ }), + +/***/ "./node_modules/d3-selection/src/window.js": +/*!*************************************************!*\ + !*** ./node_modules/d3-selection/src/window.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-selection/src/window.js?"); + +/***/ }), + /***/ "./node_modules/d3-shape/index.js": /*!****************************************!*\ !*** ./node_modules/d3-shape/index.js ***! @@ -3742,6 +4545,366 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/d3-timer/index.js": +/*!****************************************!*\ + !*** ./node_modules/d3-timer/index.js ***! + \****************************************/ +/*! exports provided: now, timer, timerFlush, timeout, interval */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_timer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/timer */ \"./node_modules/d3-timer/src/timer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return _src_timer__WEBPACK_IMPORTED_MODULE_0__[\"now\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return _src_timer__WEBPACK_IMPORTED_MODULE_0__[\"timer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return _src_timer__WEBPACK_IMPORTED_MODULE_0__[\"timerFlush\"]; });\n\n/* harmony import */ var _src_timeout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/timeout */ \"./node_modules/d3-timer/src/timeout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeout\", function() { return _src_timeout__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/interval */ \"./node_modules/d3-timer/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return _src_interval__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-timer/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-timer/src/interval.js": +/*!***********************************************!*\ + !*** ./node_modules/d3-timer/src/interval.js ***! + \***********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer */ \"./node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"], total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? Object(_timer__WEBPACK_IMPORTED_MODULE_0__[\"now\"])() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-timer/src/interval.js?"); + +/***/ }), + +/***/ "./node_modules/d3-timer/src/timeout.js": +/*!**********************************************!*\ + !*** ./node_modules/d3-timer/src/timeout.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer */ \"./node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"];\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-timer/src/timeout.js?"); + +/***/ }), + +/***/ "./node_modules/d3-timer/src/timer.js": +/*!********************************************!*\ + !*** ./node_modules/d3-timer/src/timer.js ***! + \********************************************/ +/*! exports provided: now, Timer, timer, timerFlush */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return now; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Timer\", function() { return Timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return timerFlush; });\nvar frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-timer/src/timer.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/index.js": +/*!*********************************************!*\ + !*** ./node_modules/d3-transition/index.js ***! + \*********************************************/ +/*! exports provided: transition, active, interrupt */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/selection/index */ \"./node_modules/d3-transition/src/selection/index.js\");\n/* harmony import */ var _src_transition_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/transition/index */ \"./node_modules/d3-transition/src/transition/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transition\", function() { return _src_transition_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_active__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/active */ \"./node_modules/d3-transition/src/active.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"active\", function() { return _src_active__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _src_interrupt__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/interrupt */ \"./node_modules/d3-transition/src/interrupt.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interrupt\", function() { return _src_interrupt__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/active.js": +/*!**************************************************!*\ + !*** ./node_modules/d3-transition/src/active.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transition_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition/index */ \"./node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _transition_schedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition/schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\nvar root = [null];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > _transition_schedule__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULED\"] && schedule.name === name) {\n return new _transition_index__WEBPACK_IMPORTED_MODULE_0__[\"Transition\"]([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/active.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/interrupt.js": +/*!*****************************************************!*\ + !*** ./node_modules/d3-transition/src/interrupt.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transition_schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition/schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > _transition_schedule__WEBPACK_IMPORTED_MODULE_0__[\"STARTING\"] && schedule.state < _transition_schedule__WEBPACK_IMPORTED_MODULE_0__[\"ENDING\"];\n schedule.state = _transition_schedule__WEBPACK_IMPORTED_MODULE_0__[\"ENDED\"];\n schedule.timer.stop();\n if (active) schedule.on.call(\"interrupt\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/interrupt.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/selection/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-transition/src/selection/index.js ***! + \***********************************************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _interrupt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interrupt */ \"./node_modules/d3-transition/src/selection/interrupt.js\");\n/* harmony import */ var _transition__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transition */ \"./node_modules/d3-transition/src/selection/transition.js\");\n\n\n\n\nd3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selection\"].prototype.interrupt = _interrupt__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nd3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selection\"].prototype.transition = _transition__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/selection/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/selection/interrupt.js": +/*!***************************************************************!*\ + !*** ./node_modules/d3-transition/src/selection/interrupt.js ***! + \***************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interrupt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interrupt */ \"./node_modules/d3-transition/src/interrupt.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n return this.each(function() {\n Object(_interrupt__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, name);\n });\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/selection/interrupt.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/selection/transition.js": +/*!****************************************************************!*\ + !*** ./node_modules/d3-transition/src/selection/transition.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transition_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transition/index */ \"./node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _transition_schedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transition/schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-timer */ \"./node_modules/d3-timer/index.js\");\n\n\n\n\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: d3_ease__WEBPACK_IMPORTED_MODULE_2__[\"easeCubicInOut\"]\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = Object(d3_timer__WEBPACK_IMPORTED_MODULE_3__[\"now\"])(), defaultTiming;\n }\n }\n return timing;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var id,\n timing;\n\n if (name instanceof _transition_index__WEBPACK_IMPORTED_MODULE_0__[\"Transition\"]) {\n id = name._id, name = name._name;\n } else {\n id = Object(_transition_index__WEBPACK_IMPORTED_MODULE_0__[\"newId\"])(), (timing = defaultTiming).time = Object(d3_timer__WEBPACK_IMPORTED_MODULE_3__[\"now\"])(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n Object(_transition_schedule__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new _transition_index__WEBPACK_IMPORTED_MODULE_0__[\"Transition\"](groups, this._parents, name, id);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/selection/transition.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/attr.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/attr.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/index.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _tween__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tween */ \"./node_modules/d3-transition/src/transition/tween.js\");\n/* harmony import */ var _interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interpolate */ \"./node_modules/d3-transition/src/transition/interpolate.js\");\n\n\n\n\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttribute(name);\n value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var fullname = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__[\"namespace\"])(name), i = fullname === \"transform\" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateTransformSvg\"] : _interpolate__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, Object(_tween__WEBPACK_IMPORTED_MODULE_2__[\"tweenValue\"])(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + \"\"));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/attr.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/attrTween.js": +/*!****************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/attrTween.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n\n\nfunction attrTweenNS(fullname, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttribute(name, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"namespace\"])(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/attrTween.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/delay.js": +/*!************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/delay.js ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction delayFunction(id, value) {\n return function() {\n Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"init\"])(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"init\"])(this, id).delay = value;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.node(), id).delay;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/delay.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/duration.js": +/*!***************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/duration.js ***! + \***************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction durationFunction(id, value) {\n return function() {\n Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"])(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"])(this, id).duration = value;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.node(), id).duration;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/duration.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/ease.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/ease.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"])(this, id).ease = value;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.node(), id).ease;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/ease.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/filter.js": +/*!*************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/filter.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-transition/src/transition/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(match) {\n if (typeof match !== \"function\") match = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"matcher\"])(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Transition\"](subgroups, this._parents, this._name, this._id);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/filter.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/index.js": +/*!************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/index.js ***! + \************************************************************/ +/*! exports provided: Transition, default, newId */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transition\", function() { return Transition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return transition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"newId\", function() { return newId; });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _attr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./attr */ \"./node_modules/d3-transition/src/transition/attr.js\");\n/* harmony import */ var _attrTween__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attrTween */ \"./node_modules/d3-transition/src/transition/attrTween.js\");\n/* harmony import */ var _delay__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./delay */ \"./node_modules/d3-transition/src/transition/delay.js\");\n/* harmony import */ var _duration__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./duration */ \"./node_modules/d3-transition/src/transition/duration.js\");\n/* harmony import */ var _ease__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ease */ \"./node_modules/d3-transition/src/transition/ease.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filter */ \"./node_modules/d3-transition/src/transition/filter.js\");\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./merge */ \"./node_modules/d3-transition/src/transition/merge.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./on */ \"./node_modules/d3-transition/src/transition/on.js\");\n/* harmony import */ var _remove__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./remove */ \"./node_modules/d3-transition/src/transition/remove.js\");\n/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./select */ \"./node_modules/d3-transition/src/transition/select.js\");\n/* harmony import */ var _selectAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./selectAll */ \"./node_modules/d3-transition/src/transition/selectAll.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./selection */ \"./node_modules/d3-transition/src/transition/selection.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./style */ \"./node_modules/d3-transition/src/transition/style.js\");\n/* harmony import */ var _styleTween__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./styleTween */ \"./node_modules/d3-transition/src/transition/styleTween.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./text */ \"./node_modules/d3-transition/src/transition/text.js\");\n/* harmony import */ var _transition__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./transition */ \"./node_modules/d3-transition/src/transition/transition.js\");\n/* harmony import */ var _tween__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./tween */ \"./node_modules/d3-transition/src/transition/tween.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nfunction transition(name) {\n return Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selection\"])().transition(name);\n}\n\nfunction newId() {\n return ++id;\n}\n\nvar selection_prototype = d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selection\"].prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: _select__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n selectAll: _selectAll__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n filter: _filter__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n merge: _merge__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n selection: _selection__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n transition: _transition__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: _on__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n attr: _attr__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n attrTween: _attrTween__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n style: _style__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n styleTween: _styleTween__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n text: _text__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n remove: _remove__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n tween: _tween__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n delay: _delay__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n duration: _duration__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ease: _ease__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n};\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/interpolate.js": +/*!******************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/interpolate.js ***! + \******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var c;\n return (typeof b === \"number\" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateNumber\"]\n : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRgb\"]\n : (c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRgb\"])\n : d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateString\"])(a, b);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/interpolate.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/merge.js": +/*!************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/merge.js ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-transition/src/transition/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Transition\"](merges, this._parents, this._name, this._id);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/merge.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/on.js": +/*!*********************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/on.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? _schedule__WEBPACK_IMPORTED_MODULE_0__[\"init\"] : _schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"];\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/on.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/remove.js": +/*!*************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/remove.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/remove.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/schedule.js": +/*!***************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/schedule.js ***! + \***************************************************************/ +/*! exports provided: CREATED, SCHEDULED, STARTING, STARTED, RUNNING, ENDING, ENDED, default, init, set, get */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATED\", function() { return CREATED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULED\", function() { return SCHEDULED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STARTING\", function() { return STARTING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STARTED\", function() { return STARTED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RUNNING\", function() { return RUNNING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ENDING\", function() { return ENDING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ENDED\", function() { return ENDED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"init\", function() { return init; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return get; });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ \"./node_modules/d3-dispatch/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/d3-timer/index.js\");\n\n\n\nvar emptyOn = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__[\"dispatch\"])(\"start\", \"end\", \"interrupt\");\nvar emptyTween = [];\n\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n});\n\nfunction init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nfunction set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTING) throw new Error(\"too late; already started\");\n return schedule;\n}\n\nfunction get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"])(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timeout\"])(start);\n\n // Interrupt the active transition, if any.\n // Dispatch the interrupt event.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions. No interrupt event is dispatched\n // because the cancelled transitions never started. Note that this also\n // removes this transition from the pending list!\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timeout\"])(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(null, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/schedule.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/select.js": +/*!*************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/select.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n Object(_schedule__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(subgroup[i], name, id, i, subgroup, Object(_schedule__WEBPACK_IMPORTED_MODULE_2__[\"get\"])(node, id));\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Transition\"](subgroups, this._parents, name, id);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/select.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/selectAll.js": +/*!****************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/selectAll.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selectorAll\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = Object(_schedule__WEBPACK_IMPORTED_MODULE_2__[\"get\"])(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n Object(_schedule__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Transition\"](subgroups, parents, name, id);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/selectAll.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/selection.js": +/*!****************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/selection.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n\n\nvar Selection = d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"selection\"].prototype.constructor;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return new Selection(this._groups, this._parents);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/selection.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/style.js": +/*!************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/style.js ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/index.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n/* harmony import */ var _tween__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tween */ \"./node_modules/d3-transition/src/transition/tween.js\");\n/* harmony import */ var _interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interpolate */ \"./node_modules/d3-transition/src/transition/interpolate.js\");\n\n\n\n\n\nfunction styleRemove(name, interpolate) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__[\"style\"])(this, name),\n value1 = (this.style.removeProperty(name), Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__[\"style\"])(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\nfunction styleRemoveEnd(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__[\"style\"])(this, name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__[\"style\"])(this, name),\n value1 = value(this);\n if (value1 == null) value1 = (this.style.removeProperty(name), Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__[\"style\"])(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateTransformCss\"] : _interpolate__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return value == null ? this\n .styleTween(name, styleRemove(name, i))\n .on(\"end.style.\" + name, styleRemoveEnd(name))\n : this.styleTween(name, typeof value === \"function\"\n ? styleFunction(name, i, Object(_tween__WEBPACK_IMPORTED_MODULE_2__[\"tweenValue\"])(this, \"style.\" + name, value))\n : styleConstant(name, i, value + \"\"), priority);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/style.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/styleTween.js": +/*!*****************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/styleTween.js ***! + \*****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nfunction styleTween(name, value, priority) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.style.setProperty(name, i(t), priority);\n };\n }\n tween._value = value;\n return tween;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/styleTween.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/text.js": +/*!***********************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/text.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _tween__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tween */ \"./node_modules/d3-transition/src/transition/tween.js\");\n\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(Object(_tween__WEBPACK_IMPORTED_MODULE_0__[\"tweenValue\"])(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/text.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/transition.js": +/*!*****************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/transition.js ***! + \*****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var name = this._name,\n id0 = this._id,\n id1 = Object(_index__WEBPACK_IMPORTED_MODULE_0__[\"newId\"])();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = Object(_schedule__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(node, id0);\n Object(_schedule__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Transition\"](groups, this._parents, name, id1);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/transition.js?"); + +/***/ }), + +/***/ "./node_modules/d3-transition/src/transition/tween.js": +/*!************************************************************!*\ + !*** ./node_modules/d3-transition/src/transition/tween.js ***! + \************************************************************/ +/*! exports provided: default, tweenValue */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tweenValue\", function() { return tweenValue; });\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule */ \"./node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"])(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"])(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n});\n\nfunction tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"set\"])(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return Object(_schedule__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(node, id).value[name];\n };\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-transition/src/transition/tween.js?"); + +/***/ }), + /***/ "./node_modules/d3-voronoi/index.js": /*!******************************************!*\ !*** ./node_modules/d3-voronoi/index.js ***! @@ -4063,6 +5226,18 @@ eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source /***/ }), +/***/ "./node_modules/fbjs/lib/memoizeStringOnly.js": +/*!****************************************************!*\ + !*** ./node_modules/fbjs/lib/memoizeStringOnly.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n\n\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/memoizeStringOnly.js?"); + +/***/ }), + /***/ "./node_modules/fbjs/lib/shallowEqual.js": /*!***********************************************!*\ !*** ./node_modules/fbjs/lib/shallowEqual.js ***! @@ -4535,6 +5710,54 @@ eval("var now = __webpack_require__(/*! performance-now */ \"./node_modules/perf /***/ }), +/***/ "./node_modules/react-canvas-gauges/dist/LinearGauge.js": +/*!**************************************************************!*\ + !*** ./node_modules/react-canvas-gauges/dist/LinearGauge.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _canvasGauges = __webpack_require__(/*! canvas-gauges */ \"./node_modules/canvas-gauges/gauge.min.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ReactLinearGauge = function (_React$Component) {\n _inherits(ReactLinearGauge, _React$Component);\n\n function ReactLinearGauge() {\n _classCallCheck(this, ReactLinearGauge);\n\n return _possibleConstructorReturn(this, (ReactLinearGauge.__proto__ || Object.getPrototypeOf(ReactLinearGauge)).apply(this, arguments));\n }\n\n _createClass(ReactLinearGauge, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var options = Object.assign({}, this.props, {\n renderTo: this.el\n });\n this.gauge = new _canvasGauges.LinearGauge(options).draw();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.gauge.update(nextProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement('canvas', { ref: function ref(canvas) {\n _this2.el = canvas;\n } });\n }\n }]);\n\n return ReactLinearGauge;\n}(_react2.default.Component);\n\nexports.default = ReactLinearGauge;\n\n//# sourceURL=webpack:///./node_modules/react-canvas-gauges/dist/LinearGauge.js?"); + +/***/ }), + +/***/ "./node_modules/react-canvas-gauges/dist/RadialGauge.js": +/*!**************************************************************!*\ + !*** ./node_modules/react-canvas-gauges/dist/RadialGauge.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _canvasGauges = __webpack_require__(/*! canvas-gauges */ \"./node_modules/canvas-gauges/gauge.min.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ReactRadialGauge = function (_React$Component) {\n _inherits(ReactRadialGauge, _React$Component);\n\n function ReactRadialGauge() {\n _classCallCheck(this, ReactRadialGauge);\n\n return _possibleConstructorReturn(this, (ReactRadialGauge.__proto__ || Object.getPrototypeOf(ReactRadialGauge)).apply(this, arguments));\n }\n\n _createClass(ReactRadialGauge, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var options = Object.assign({}, this.props, {\n renderTo: this.el\n });\n this.gauge = new _canvasGauges.RadialGauge(options).draw();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.gauge.update(nextProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement('canvas', { ref: function ref(canvas) {\n _this2.el = canvas;\n } });\n }\n }]);\n\n return ReactRadialGauge;\n}(_react2.default.Component);\n\nexports.default = ReactRadialGauge;\n\n//# sourceURL=webpack:///./node_modules/react-canvas-gauges/dist/RadialGauge.js?"); + +/***/ }), + +/***/ "./node_modules/react-canvas-gauges/dist/index.js": +/*!********************************************************!*\ + !*** ./node_modules/react-canvas-gauges/dist/index.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RadialGauge = exports.LinearGauge = undefined;\n\nvar _LinearGauge = __webpack_require__(/*! ./LinearGauge */ \"./node_modules/react-canvas-gauges/dist/LinearGauge.js\");\n\nvar _LinearGauge2 = _interopRequireDefault(_LinearGauge);\n\nvar _RadialGauge = __webpack_require__(/*! ./RadialGauge */ \"./node_modules/react-canvas-gauges/dist/RadialGauge.js\");\n\nvar _RadialGauge2 = _interopRequireDefault(_RadialGauge);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.LinearGauge = _LinearGauge2.default;\nexports.RadialGauge = _RadialGauge2.default;\n\n//# sourceURL=webpack:///./node_modules/react-canvas-gauges/dist/index.js?"); + +/***/ }), + +/***/ "./node_modules/react-dom/cjs/react-dom-server.node.development.js": +/*!*************************************************************************!*\ + !*** ./node_modules/react-dom/cjs/react-dom-server.node.development.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/** @license React v16.2.0\n * react-dom-server.node.development.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ \"./node_modules/fbjs/lib/invariant.js\");\nvar _assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ \"./node_modules/fbjs/lib/emptyFunction.js\");\nvar emptyObject = __webpack_require__(/*! fbjs/lib/emptyObject */ \"./node_modules/fbjs/lib/emptyObject.js\");\nvar hyphenateStyleName = __webpack_require__(/*! fbjs/lib/hyphenateStyleName */ \"./node_modules/fbjs/lib/hyphenateStyleName.js\");\nvar memoizeStringOnly = __webpack_require__(/*! fbjs/lib/memoizeStringOnly */ \"./node_modules/fbjs/lib/memoizeStringOnly.js\");\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ \"./node_modules/fbjs/lib/warning.js\");\nvar checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\nvar camelizeStyleName = __webpack_require__(/*! fbjs/lib/camelizeStyleName */ \"./node_modules/fbjs/lib/camelizeStyleName.js\");\nvar stream = __webpack_require__(/*! stream */ \"stream\");\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\n// These attributes should be all lowercase to allow for\n// case insensitive checks\nvar RESERVED_PROPS = {\n children: true,\n dangerouslySetInnerHTML: true,\n defaultValue: true,\n defaultChecked: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n suppressHydrationWarning: true,\n style: true\n};\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n HAS_STRING_BOOLEAN_VALUE: 0x40,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n for (var propName in Properties) {\n !!properties.hasOwnProperty(propName) ? invariant(false, \"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.\", propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE),\n hasStringBooleanValue: checkMask(propConfig, Injection.HAS_STRING_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? invariant(false, \"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s\", propName) : void 0;\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n\n propertyInfo.attributeName = attributeName;\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n // Downcase references to whitelist properties to check for membership\n // without case-sensitivity. This allows the whitelist to pick up\n // `allowfullscreen`, which should be written using the property configuration\n // for `allowFullscreen`\n properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":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\";\n/* eslint-enable max-len */\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n\n\nvar ROOT_ATTRIBUTE_NAME = 'data-reactroot';\n\n/**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\nvar properties = {};\n\n/**\n * Checks whether a property name is a writeable attribute.\n * @method\n */\nfunction shouldSetAttribute(name, value) {\n if (isReservedProp(name)) {\n return false;\n }\n if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n return false;\n }\n if (value === null) {\n return true;\n }\n switch (typeof value) {\n case 'boolean':\n return shouldAttributeAcceptBooleanValue(name);\n case 'undefined':\n case 'number':\n case 'string':\n case 'object':\n return true;\n default:\n // function, symbol\n return false;\n }\n}\n\nfunction getPropertyInfo(name) {\n return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction shouldAttributeAcceptBooleanValue(name) {\n if (isReservedProp(name)) {\n return true;\n }\n var propertyInfo = getPropertyInfo(name);\n if (propertyInfo) {\n return propertyInfo.hasBooleanValue || propertyInfo.hasStringBooleanValue || propertyInfo.hasOverloadedBooleanValue;\n }\n var prefix = name.toLowerCase().slice(0, 5);\n return prefix === 'data-' || prefix === 'aria-';\n}\n\n/**\n * Checks to see if a property name is within the list of properties\n * reserved for internal React operations. These properties should\n * not be set on an HTML element.\n *\n * @private\n * @param {string} name\n * @return {boolean} If the name is within reserved props\n */\nfunction isReservedProp(name) {\n return RESERVED_PROPS.hasOwnProperty(name);\n}\n\nvar injection = DOMPropertyInjection;\n\nvar MUST_USE_PROPERTY = injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = injection.HAS_OVERLOADED_BOOLEAN_VALUE;\nvar HAS_STRING_BOOLEAN_VALUE = injection.HAS_STRING_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n // When adding attributes to this list, be sure to also add them to\n // the `possibleStandardNames` module to ensure casing and incorrect\n // name warnings.\n Properties: {\n allowFullScreen: HAS_BOOLEAN_VALUE,\n // specifies target context for links with `preload` type\n async: HAS_BOOLEAN_VALUE,\n // Note: there is a special case that prevents it from being written to the DOM\n // on the client side because the browsers are inconsistent. Instead we call focus().\n autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_OVERLOADED_BOOLEAN_VALUE,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n contentEditable: HAS_STRING_BOOLEAN_VALUE,\n controls: HAS_BOOLEAN_VALUE,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: HAS_STRING_BOOLEAN_VALUE,\n formNoValidate: HAS_BOOLEAN_VALUE,\n hidden: HAS_BOOLEAN_VALUE,\n loop: HAS_BOOLEAN_VALUE,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n playsInline: HAS_BOOLEAN_VALUE,\n readOnly: HAS_BOOLEAN_VALUE,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n scoped: HAS_BOOLEAN_VALUE,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n start: HAS_NUMERIC_VALUE,\n // support for projecting regular DOM Elements via V1 named slots ( shadow dom )\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: HAS_STRING_BOOLEAN_VALUE,\n // Style must be explicitly set in the attribute list. React components\n // expect a style object\n style: 0,\n // Keep it in the whitelist because it is case-sensitive for SVG.\n tabIndex: 0,\n // itemScope is for for Microdata support.\n // See http://schema.org/docs/gs.html\n itemScope: HAS_BOOLEAN_VALUE,\n // These attributes must stay in the white-list because they have\n // different attribute names (see DOMAttributeNames below)\n acceptCharset: 0,\n className: 0,\n htmlFor: 0,\n httpEquiv: 0,\n // Attributes with mutation methods must be specified in the whitelist\n // Set the string boolean flag to allow the behavior\n value: HAS_STRING_BOOLEAN_VALUE\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nvar HAS_STRING_BOOLEAN_VALUE$1 = injection.HAS_STRING_BOOLEAN_VALUE;\n\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n/**\n * This is a list of all SVG attributes that need special casing,\n * namespacing, or boolean value assignment.\n *\n * When adding attributes to this list, be sure to also add them to\n * the `possibleStandardNames` module to ensure casing and incorrect\n * name warnings.\n *\n * SVG Attributes List:\n * https://www.w3.org/TR/SVG/attindex.html\n * SMIL Spec:\n * https://www.w3.org/TR/smil\n */\nvar ATTRS = ['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'x-height', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xmlns:xlink', 'xml:lang', 'xml:space'];\n\nvar SVGDOMPropertyConfig = {\n Properties: {\n autoReverse: HAS_STRING_BOOLEAN_VALUE$1,\n externalResourcesRequired: HAS_STRING_BOOLEAN_VALUE$1,\n preserveAlpha: HAS_STRING_BOOLEAN_VALUE$1\n },\n DOMAttributeNames: {\n autoReverse: 'autoReverse',\n externalResourcesRequired: 'externalResourcesRequired',\n preserveAlpha: 'preserveAlpha'\n },\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n }\n};\n\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\nvar capitalize = function (token) {\n return token[1].toUpperCase();\n};\n\nATTRS.forEach(function (original) {\n var reactName = original.replace(CAMELIZE, capitalize);\n\n SVGDOMPropertyConfig.Properties[reactName] = 0;\n SVGDOMPropertyConfig.DOMAttributeNames[reactName] = original;\n});\n\ninjection.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\ninjection.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.2.0';\n\nvar describeComponentFrame = function (name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\n\nvar ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar ReactCurrentOwner = ReactInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame = ReactInternals.ReactDebugCurrentFrame;\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol['for'];\n\n\n\n\n\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb;\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escapes special characters and HTML entities in a given html string.\n *\n * @param {string} string HTML string to escape for later insertion\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextForBrowser(value) + '\"';\n}\n\n// isAttributeNameSafe() is currently duplicated in DOMPropertyOperations.\n// TODO: Find a better place for this.\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n {\n warning(false, 'Invalid attribute name: `%s`', attributeName);\n }\n return false;\n}\n\n// shouldIgnoreValue() is currently duplicated in DOMPropertyOperations.\n// TODO: Find a better place for this.\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\n\n/**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n\n\nfunction createMarkupForRoot() {\n return ROOT_ATTRIBUTE_NAME + '=\"\"';\n}\n\n/**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\nfunction createMarkupForProperty(name, value) {\n var propertyInfo = getPropertyInfo(name);\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n } else if (typeof value !== 'boolean' || shouldAttributeAcceptBooleanValue(name)) {\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n }\n } else if (shouldSetAttribute(name, value)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n}\n\n/**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\nfunction createMarkupForCustomAttribute(name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n}\n\nvar HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nvar Namespaces = {\n html: HTML_NAMESPACE,\n mathml: MATH_NAMESPACE,\n svg: SVG_NAMESPACE\n};\n\n// Assumes there is no parent namespace.\nfunction getIntrinsicNamespace(type) {\n switch (type) {\n case 'svg':\n return SVG_NAMESPACE;\n case 'math':\n return MATH_NAMESPACE;\n default:\n return HTML_NAMESPACE;\n }\n}\n\nfunction getChildNamespace(parentNamespace, type) {\n if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n // No (or default) parent namespace: potential entry point.\n return getIntrinsicNamespace(type);\n }\n if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n // We're leaving SVG.\n return HTML_NAMESPACE;\n }\n // By default, pass namespace below.\n return parentNamespace;\n}\n\nvar ReactControlledValuePropTypes = {\n checkPropTypes: null\n};\n\n{\n var hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n };\n\n var propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n }\n };\n\n /**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\n ReactControlledValuePropTypes.checkPropTypes = function (tagName, props, getStack) {\n checkPropTypes(propTypes, props, 'prop', tagName, getStack);\n };\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\nvar HTML = '__html';\n\nfunction assertValidProps(tag, props, getStack) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', tag, getStack()) : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : void 0;\n }\n {\n warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.%s', getStack());\n }\n !(props.style == null || typeof props.style === 'object') ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getStack()) : void 0;\n}\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return ('' + value).trim();\n}\n\nfunction isCustomComponent(tagName, props) {\n if (tagName.indexOf('-') === -1) {\n return typeof props.is === 'string';\n }\n switch (tagName) {\n // These are reserved SVG and MathML elements.\n // We don't mind this whitelist too much because we expect it to never grow.\n // The alternative is to track the namespace in a few places which is convoluted.\n // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n case 'annotation-xml':\n case 'color-profile':\n case 'font-face':\n case 'font-face-src':\n case 'font-face-uri':\n case 'font-face-format':\n case 'font-face-name':\n case 'missing-glyph':\n return false;\n default:\n return true;\n }\n}\n\nvar warnValidStyle = emptyFunction;\n\n{\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n var warnedForInfinityValue = false;\n\n var warnHyphenatedStyleName = function (name, getStack) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), getStack());\n };\n\n var warnBadVendoredStyleName = function (name, getStack) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), getStack());\n };\n\n var warnStyleValueWithSemicolon = function (name, value, getStack) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n warning(false, \"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.%s', name, value.replace(badStyleValueWithSemicolonPattern, ''), getStack());\n };\n\n var warnStyleValueIsNaN = function (name, value, getStack) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, getStack());\n };\n\n var warnStyleValueIsInfinity = function (name, value, getStack) {\n if (warnedForInfinityValue) {\n return;\n }\n\n warnedForInfinityValue = true;\n warning(false, '`Infinity` is an invalid value for the `%s` css style property.%s', name, getStack());\n };\n\n warnValidStyle = function (name, value, getStack) {\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, getStack);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, getStack);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, getStack);\n }\n\n if (typeof value === 'number') {\n if (isNaN(value)) {\n warnStyleValueIsNaN(name, value, getStack);\n } else if (!isFinite(value)) {\n warnStyleValueIsInfinity(name, value, getStack);\n }\n }\n };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\nvar ariaProperties = {\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction getStackAddendum$1() {\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n return stack != null ? stack : '';\n}\n\nfunction validateProperty(tagName, name) {\n if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n return true;\n }\n\n if (rARIACamel.test(name)) {\n var ariaName = 'aria-' + name.slice(4).toLowerCase();\n var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null;\n\n // If this is an aria-* attribute, but is not listed in the known DOM\n // DOM properties, then it is an invalid aria-* attribute.\n if (correctName == null) {\n warning(false, 'Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.%s', name, getStackAddendum$1());\n warnedProperties[name] = true;\n return true;\n }\n // aria-* attributes should be lowercase; suggest the lowercase version.\n if (name !== correctName) {\n warning(false, 'Invalid ARIA attribute `%s`. Did you mean `%s`?%s', name, correctName, getStackAddendum$1());\n warnedProperties[name] = true;\n return true;\n }\n }\n\n if (rARIA.test(name)) {\n var lowerCasedName = name.toLowerCase();\n var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null;\n\n // If this is an aria-* attribute, but is not listed in the known DOM\n // DOM properties, then it is an invalid aria-* attribute.\n if (standardName == null) {\n warnedProperties[name] = true;\n return false;\n }\n // aria-* attributes should be lowercase; suggest the lowercase version.\n if (name !== standardName) {\n warning(false, 'Unknown ARIA attribute `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum$1());\n warnedProperties[name] = true;\n return true;\n }\n }\n\n return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n var invalidProps = [];\n\n for (var key in props) {\n var isValid = validateProperty(type, key);\n if (!isValid) {\n invalidProps.push(key);\n }\n }\n\n var unknownPropString = invalidProps.map(function (prop) {\n return '`' + prop + '`';\n }).join(', ');\n\n if (invalidProps.length === 1) {\n warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum$1());\n } else if (invalidProps.length > 1) {\n warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum$1());\n }\n}\n\nfunction validateProperties(type, props) {\n if (isCustomComponent(type, props)) {\n return;\n }\n warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\n\nfunction getStackAddendum$2() {\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n return stack != null ? stack : '';\n}\n\nfunction validateProperties$1(type, props) {\n if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n return;\n }\n\n if (props != null && props.value === null && !didWarnValueNull) {\n didWarnValueNull = true;\n if (type === 'select' && props.multiple) {\n warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.%s', type, getStackAddendum$2());\n } else {\n warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', type, getStackAddendum$2());\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\n\n/**\n * Ordered list of injected plugins.\n */\n\n\n/**\n * Mapping from event name to dispatch config\n */\n\n\n/**\n * Mapping from registration name to plugin module\n */\nvar registrationNameModules = {};\n\n/**\n * Mapping from registration name to event name\n */\n\n\n/**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in true.\n * @type {Object}\n */\nvar possibleRegistrationNames = {};\n// Trust the developer to only use possibleRegistrationNames in true\n\n/**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n\n\n/**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n\n// When adding attributes to the HTML or SVG whitelist, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n // HTML\n accept: 'accept',\n acceptcharset: 'acceptCharset',\n 'accept-charset': 'acceptCharset',\n accesskey: 'accessKey',\n action: 'action',\n allowfullscreen: 'allowFullScreen',\n alt: 'alt',\n as: 'as',\n async: 'async',\n autocapitalize: 'autoCapitalize',\n autocomplete: 'autoComplete',\n autocorrect: 'autoCorrect',\n autofocus: 'autoFocus',\n autoplay: 'autoPlay',\n autosave: 'autoSave',\n capture: 'capture',\n cellpadding: 'cellPadding',\n cellspacing: 'cellSpacing',\n challenge: 'challenge',\n charset: 'charSet',\n checked: 'checked',\n children: 'children',\n cite: 'cite',\n 'class': 'className',\n classid: 'classID',\n classname: 'className',\n cols: 'cols',\n colspan: 'colSpan',\n content: 'content',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n controls: 'controls',\n controlslist: 'controlsList',\n coords: 'coords',\n crossorigin: 'crossOrigin',\n dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n data: 'data',\n datetime: 'dateTime',\n 'default': 'default',\n defaultchecked: 'defaultChecked',\n defaultvalue: 'defaultValue',\n defer: 'defer',\n dir: 'dir',\n disabled: 'disabled',\n download: 'download',\n draggable: 'draggable',\n enctype: 'encType',\n 'for': 'htmlFor',\n form: 'form',\n formmethod: 'formMethod',\n formaction: 'formAction',\n formenctype: 'formEncType',\n formnovalidate: 'formNoValidate',\n formtarget: 'formTarget',\n frameborder: 'frameBorder',\n headers: 'headers',\n height: 'height',\n hidden: 'hidden',\n high: 'high',\n href: 'href',\n hreflang: 'hrefLang',\n htmlfor: 'htmlFor',\n httpequiv: 'httpEquiv',\n 'http-equiv': 'httpEquiv',\n icon: 'icon',\n id: 'id',\n innerhtml: 'innerHTML',\n inputmode: 'inputMode',\n integrity: 'integrity',\n is: 'is',\n itemid: 'itemID',\n itemprop: 'itemProp',\n itemref: 'itemRef',\n itemscope: 'itemScope',\n itemtype: 'itemType',\n keyparams: 'keyParams',\n keytype: 'keyType',\n kind: 'kind',\n label: 'label',\n lang: 'lang',\n list: 'list',\n loop: 'loop',\n low: 'low',\n manifest: 'manifest',\n marginwidth: 'marginWidth',\n marginheight: 'marginHeight',\n max: 'max',\n maxlength: 'maxLength',\n media: 'media',\n mediagroup: 'mediaGroup',\n method: 'method',\n min: 'min',\n minlength: 'minLength',\n multiple: 'multiple',\n muted: 'muted',\n name: 'name',\n nonce: 'nonce',\n novalidate: 'noValidate',\n open: 'open',\n optimum: 'optimum',\n pattern: 'pattern',\n placeholder: 'placeholder',\n playsinline: 'playsInline',\n poster: 'poster',\n preload: 'preload',\n profile: 'profile',\n radiogroup: 'radioGroup',\n readonly: 'readOnly',\n referrerpolicy: 'referrerPolicy',\n rel: 'rel',\n required: 'required',\n reversed: 'reversed',\n role: 'role',\n rows: 'rows',\n rowspan: 'rowSpan',\n sandbox: 'sandbox',\n scope: 'scope',\n scoped: 'scoped',\n scrolling: 'scrolling',\n seamless: 'seamless',\n selected: 'selected',\n shape: 'shape',\n size: 'size',\n sizes: 'sizes',\n span: 'span',\n spellcheck: 'spellCheck',\n src: 'src',\n srcdoc: 'srcDoc',\n srclang: 'srcLang',\n srcset: 'srcSet',\n start: 'start',\n step: 'step',\n style: 'style',\n summary: 'summary',\n tabindex: 'tabIndex',\n target: 'target',\n title: 'title',\n type: 'type',\n usemap: 'useMap',\n value: 'value',\n width: 'width',\n wmode: 'wmode',\n wrap: 'wrap',\n\n // SVG\n about: 'about',\n accentheight: 'accentHeight',\n 'accent-height': 'accentHeight',\n accumulate: 'accumulate',\n additive: 'additive',\n alignmentbaseline: 'alignmentBaseline',\n 'alignment-baseline': 'alignmentBaseline',\n allowreorder: 'allowReorder',\n alphabetic: 'alphabetic',\n amplitude: 'amplitude',\n arabicform: 'arabicForm',\n 'arabic-form': 'arabicForm',\n ascent: 'ascent',\n attributename: 'attributeName',\n attributetype: 'attributeType',\n autoreverse: 'autoReverse',\n azimuth: 'azimuth',\n basefrequency: 'baseFrequency',\n baselineshift: 'baselineShift',\n 'baseline-shift': 'baselineShift',\n baseprofile: 'baseProfile',\n bbox: 'bbox',\n begin: 'begin',\n bias: 'bias',\n by: 'by',\n calcmode: 'calcMode',\n capheight: 'capHeight',\n 'cap-height': 'capHeight',\n clip: 'clip',\n clippath: 'clipPath',\n 'clip-path': 'clipPath',\n clippathunits: 'clipPathUnits',\n cliprule: 'clipRule',\n 'clip-rule': 'clipRule',\n color: 'color',\n colorinterpolation: 'colorInterpolation',\n 'color-interpolation': 'colorInterpolation',\n colorinterpolationfilters: 'colorInterpolationFilters',\n 'color-interpolation-filters': 'colorInterpolationFilters',\n colorprofile: 'colorProfile',\n 'color-profile': 'colorProfile',\n colorrendering: 'colorRendering',\n 'color-rendering': 'colorRendering',\n contentscripttype: 'contentScriptType',\n contentstyletype: 'contentStyleType',\n cursor: 'cursor',\n cx: 'cx',\n cy: 'cy',\n d: 'd',\n datatype: 'datatype',\n decelerate: 'decelerate',\n descent: 'descent',\n diffuseconstant: 'diffuseConstant',\n direction: 'direction',\n display: 'display',\n divisor: 'divisor',\n dominantbaseline: 'dominantBaseline',\n 'dominant-baseline': 'dominantBaseline',\n dur: 'dur',\n dx: 'dx',\n dy: 'dy',\n edgemode: 'edgeMode',\n elevation: 'elevation',\n enablebackground: 'enableBackground',\n 'enable-background': 'enableBackground',\n end: 'end',\n exponent: 'exponent',\n externalresourcesrequired: 'externalResourcesRequired',\n fill: 'fill',\n fillopacity: 'fillOpacity',\n 'fill-opacity': 'fillOpacity',\n fillrule: 'fillRule',\n 'fill-rule': 'fillRule',\n filter: 'filter',\n filterres: 'filterRes',\n filterunits: 'filterUnits',\n floodopacity: 'floodOpacity',\n 'flood-opacity': 'floodOpacity',\n floodcolor: 'floodColor',\n 'flood-color': 'floodColor',\n focusable: 'focusable',\n fontfamily: 'fontFamily',\n 'font-family': 'fontFamily',\n fontsize: 'fontSize',\n 'font-size': 'fontSize',\n fontsizeadjust: 'fontSizeAdjust',\n 'font-size-adjust': 'fontSizeAdjust',\n fontstretch: 'fontStretch',\n 'font-stretch': 'fontStretch',\n fontstyle: 'fontStyle',\n 'font-style': 'fontStyle',\n fontvariant: 'fontVariant',\n 'font-variant': 'fontVariant',\n fontweight: 'fontWeight',\n 'font-weight': 'fontWeight',\n format: 'format',\n from: 'from',\n fx: 'fx',\n fy: 'fy',\n g1: 'g1',\n g2: 'g2',\n glyphname: 'glyphName',\n 'glyph-name': 'glyphName',\n glyphorientationhorizontal: 'glyphOrientationHorizontal',\n 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n glyphorientationvertical: 'glyphOrientationVertical',\n 'glyph-orientation-vertical': 'glyphOrientationVertical',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n hanging: 'hanging',\n horizadvx: 'horizAdvX',\n 'horiz-adv-x': 'horizAdvX',\n horizoriginx: 'horizOriginX',\n 'horiz-origin-x': 'horizOriginX',\n ideographic: 'ideographic',\n imagerendering: 'imageRendering',\n 'image-rendering': 'imageRendering',\n in2: 'in2',\n 'in': 'in',\n inlist: 'inlist',\n intercept: 'intercept',\n k1: 'k1',\n k2: 'k2',\n k3: 'k3',\n k4: 'k4',\n k: 'k',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n kerning: 'kerning',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n letterspacing: 'letterSpacing',\n 'letter-spacing': 'letterSpacing',\n lightingcolor: 'lightingColor',\n 'lighting-color': 'lightingColor',\n limitingconeangle: 'limitingConeAngle',\n local: 'local',\n markerend: 'markerEnd',\n 'marker-end': 'markerEnd',\n markerheight: 'markerHeight',\n markermid: 'markerMid',\n 'marker-mid': 'markerMid',\n markerstart: 'markerStart',\n 'marker-start': 'markerStart',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n mask: 'mask',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n mathematical: 'mathematical',\n mode: 'mode',\n numoctaves: 'numOctaves',\n offset: 'offset',\n opacity: 'opacity',\n operator: 'operator',\n order: 'order',\n orient: 'orient',\n orientation: 'orientation',\n origin: 'origin',\n overflow: 'overflow',\n overlineposition: 'overlinePosition',\n 'overline-position': 'overlinePosition',\n overlinethickness: 'overlineThickness',\n 'overline-thickness': 'overlineThickness',\n paintorder: 'paintOrder',\n 'paint-order': 'paintOrder',\n panose1: 'panose1',\n 'panose-1': 'panose1',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointerevents: 'pointerEvents',\n 'pointer-events': 'pointerEvents',\n points: 'points',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n prefix: 'prefix',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n property: 'property',\n r: 'r',\n radius: 'radius',\n refx: 'refX',\n refy: 'refY',\n renderingintent: 'renderingIntent',\n 'rendering-intent': 'renderingIntent',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n resource: 'resource',\n restart: 'restart',\n result: 'result',\n results: 'results',\n rotate: 'rotate',\n rx: 'rx',\n ry: 'ry',\n scale: 'scale',\n security: 'security',\n seed: 'seed',\n shaperendering: 'shapeRendering',\n 'shape-rendering': 'shapeRendering',\n slope: 'slope',\n spacing: 'spacing',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n speed: 'speed',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stemh: 'stemh',\n stemv: 'stemv',\n stitchtiles: 'stitchTiles',\n stopcolor: 'stopColor',\n 'stop-color': 'stopColor',\n stopopacity: 'stopOpacity',\n 'stop-opacity': 'stopOpacity',\n strikethroughposition: 'strikethroughPosition',\n 'strikethrough-position': 'strikethroughPosition',\n strikethroughthickness: 'strikethroughThickness',\n 'strikethrough-thickness': 'strikethroughThickness',\n string: 'string',\n stroke: 'stroke',\n strokedasharray: 'strokeDasharray',\n 'stroke-dasharray': 'strokeDasharray',\n strokedashoffset: 'strokeDashoffset',\n 'stroke-dashoffset': 'strokeDashoffset',\n strokelinecap: 'strokeLinecap',\n 'stroke-linecap': 'strokeLinecap',\n strokelinejoin: 'strokeLinejoin',\n 'stroke-linejoin': 'strokeLinejoin',\n strokemiterlimit: 'strokeMiterlimit',\n 'stroke-miterlimit': 'strokeMiterlimit',\n strokewidth: 'strokeWidth',\n 'stroke-width': 'strokeWidth',\n strokeopacity: 'strokeOpacity',\n 'stroke-opacity': 'strokeOpacity',\n suppresscontenteditablewarning: 'suppressContentEditableWarning',\n suppresshydrationwarning: 'suppressHydrationWarning',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textanchor: 'textAnchor',\n 'text-anchor': 'textAnchor',\n textdecoration: 'textDecoration',\n 'text-decoration': 'textDecoration',\n textlength: 'textLength',\n textrendering: 'textRendering',\n 'text-rendering': 'textRendering',\n to: 'to',\n transform: 'transform',\n 'typeof': 'typeof',\n u1: 'u1',\n u2: 'u2',\n underlineposition: 'underlinePosition',\n 'underline-position': 'underlinePosition',\n underlinethickness: 'underlineThickness',\n 'underline-thickness': 'underlineThickness',\n unicode: 'unicode',\n unicodebidi: 'unicodeBidi',\n 'unicode-bidi': 'unicodeBidi',\n unicoderange: 'unicodeRange',\n 'unicode-range': 'unicodeRange',\n unitsperem: 'unitsPerEm',\n 'units-per-em': 'unitsPerEm',\n unselectable: 'unselectable',\n valphabetic: 'vAlphabetic',\n 'v-alphabetic': 'vAlphabetic',\n values: 'values',\n vectoreffect: 'vectorEffect',\n 'vector-effect': 'vectorEffect',\n version: 'version',\n vertadvy: 'vertAdvY',\n 'vert-adv-y': 'vertAdvY',\n vertoriginx: 'vertOriginX',\n 'vert-origin-x': 'vertOriginX',\n vertoriginy: 'vertOriginY',\n 'vert-origin-y': 'vertOriginY',\n vhanging: 'vHanging',\n 'v-hanging': 'vHanging',\n videographic: 'vIdeographic',\n 'v-ideographic': 'vIdeographic',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n visibility: 'visibility',\n vmathematical: 'vMathematical',\n 'v-mathematical': 'vMathematical',\n vocab: 'vocab',\n widths: 'widths',\n wordspacing: 'wordSpacing',\n 'word-spacing': 'wordSpacing',\n writingmode: 'writingMode',\n 'writing-mode': 'writingMode',\n x1: 'x1',\n x2: 'x2',\n x: 'x',\n xchannelselector: 'xChannelSelector',\n xheight: 'xHeight',\n 'x-height': 'xHeight',\n xlinkactuate: 'xlinkActuate',\n 'xlink:actuate': 'xlinkActuate',\n xlinkarcrole: 'xlinkArcrole',\n 'xlink:arcrole': 'xlinkArcrole',\n xlinkhref: 'xlinkHref',\n 'xlink:href': 'xlinkHref',\n xlinkrole: 'xlinkRole',\n 'xlink:role': 'xlinkRole',\n xlinkshow: 'xlinkShow',\n 'xlink:show': 'xlinkShow',\n xlinktitle: 'xlinkTitle',\n 'xlink:title': 'xlinkTitle',\n xlinktype: 'xlinkType',\n 'xlink:type': 'xlinkType',\n xmlbase: 'xmlBase',\n 'xml:base': 'xmlBase',\n xmllang: 'xmlLang',\n 'xml:lang': 'xmlLang',\n xmlns: 'xmlns',\n 'xml:space': 'xmlSpace',\n xmlnsxlink: 'xmlnsXlink',\n 'xmlns:xlink': 'xmlnsXlink',\n xmlspace: 'xmlSpace',\n y1: 'y1',\n y2: 'y2',\n y: 'y',\n ychannelselector: 'yChannelSelector',\n z: 'z',\n zoomandpan: 'zoomAndPan'\n};\n\nfunction getStackAddendum$3() {\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n return stack != null ? stack : '';\n}\n\n{\n var warnedProperties$1 = {};\n var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n var EVENT_NAME_REGEX = /^on./;\n var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n var validateProperty$1 = function (tagName, name, value, canUseEventSystem) {\n if (hasOwnProperty$1.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n return true;\n }\n\n var lowerCasedName = name.toLowerCase();\n if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n warning(false, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n warnedProperties$1[name] = true;\n return true;\n }\n\n // We can't rely on the event system being injected on the server.\n if (canUseEventSystem) {\n if (registrationNameModules.hasOwnProperty(name)) {\n return true;\n }\n var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n if (registrationName != null) {\n warning(false, 'Invalid event handler property `%s`. Did you mean `%s`?%s', name, registrationName, getStackAddendum$3());\n warnedProperties$1[name] = true;\n return true;\n }\n if (EVENT_NAME_REGEX.test(name)) {\n warning(false, 'Unknown event handler property `%s`. It will be ignored.%s', name, getStackAddendum$3());\n warnedProperties$1[name] = true;\n return true;\n }\n } else if (EVENT_NAME_REGEX.test(name)) {\n // If no event plugins have been injected, we are in a server environment.\n // So we can't tell if the event name is correct for sure, but we can filter\n // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n if (INVALID_EVENT_NAME_REGEX.test(name)) {\n warning(false, 'Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.%s', name, getStackAddendum$3());\n }\n warnedProperties$1[name] = true;\n return true;\n }\n\n // Let the ARIA attribute hook validate ARIA attributes\n if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n return true;\n }\n\n if (lowerCasedName === 'innerhtml') {\n warning(false, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (lowerCasedName === 'aria') {\n warning(false, 'The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n warning(false, 'Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.%s', typeof value, getStackAddendum$3());\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warning(false, 'Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.%s', name, getStackAddendum$3());\n warnedProperties$1[name] = true;\n return true;\n }\n\n var isReserved = isReservedProp(name);\n\n // Known attributes should match the casing specified in the property config.\n if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n var standardName = possibleStandardNames[lowerCasedName];\n if (standardName !== name) {\n warning(false, 'Invalid DOM property `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum$3());\n warnedProperties$1[name] = true;\n return true;\n }\n } else if (!isReserved && name !== lowerCasedName) {\n // Unknown attributes should have lowercase casing since that's how they\n // will be cased anyway with server rendering.\n warning(false, 'React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.%s', name, lowerCasedName, getStackAddendum$3());\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (typeof value === 'boolean' && !shouldAttributeAcceptBooleanValue(name)) {\n if (value) {\n warning(false, 'Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.%s', value, name, name, value, name, getStackAddendum$3());\n } else {\n warning(false, 'Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', value, name, name, value, name, name, name, getStackAddendum$3());\n }\n warnedProperties$1[name] = true;\n return true;\n }\n\n // Now that we've validated casing, do not validate\n // data types for reserved props\n if (isReserved) {\n return true;\n }\n\n // Warn when a known attribute is a bad type\n if (!shouldSetAttribute(name, value)) {\n warnedProperties$1[name] = true;\n return false;\n }\n\n return true;\n };\n}\n\nvar warnUnknownProperties = function (type, props, canUseEventSystem) {\n var unknownProps = [];\n for (var key in props) {\n var isValid = validateProperty$1(type, key, props[key], canUseEventSystem);\n if (!isValid) {\n unknownProps.push(key);\n }\n }\n\n var unknownPropString = unknownProps.map(function (prop) {\n return '`' + prop + '`';\n }).join(', ');\n if (unknownProps.length === 1) {\n warning(false, 'Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$3());\n } else if (unknownProps.length > 1) {\n warning(false, 'Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$3());\n }\n};\n\nfunction validateProperties$2(type, props, canUseEventSystem) {\n if (isCustomComponent(type, props)) {\n return;\n }\n warnUnknownProperties(type, props, canUseEventSystem);\n}\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Based on reading the React.Children implementation. TODO: type this somewhere?\n\nvar toArray = React.Children.toArray;\n\nvar getStackAddendum = emptyFunction.thatReturns('');\n\n{\n var validatePropertiesInDevelopment = function (type, props) {\n validateProperties(type, props);\n validateProperties$1(type, props);\n validateProperties$2(type, props, /* canUseEventSystem */false);\n };\n\n var describeStackFrame = function (element) {\n var source = element._source;\n var type = element.type;\n var name = getComponentName(type);\n var ownerName = null;\n return describeComponentFrame(name, source, ownerName);\n };\n\n var currentDebugStack = null;\n var currentDebugElementStack = null;\n var setCurrentDebugStack = function (stack) {\n var frame = stack[stack.length - 1];\n currentDebugElementStack = frame.debugElementStack;\n // We are about to enter a new composite stack, reset the array.\n currentDebugElementStack.length = 0;\n currentDebugStack = stack;\n ReactDebugCurrentFrame.getCurrentStack = getStackAddendum;\n };\n var pushElementToDebugStack = function (element) {\n if (currentDebugElementStack !== null) {\n currentDebugElementStack.push(element);\n }\n };\n var resetCurrentDebugStack = function () {\n currentDebugElementStack = null;\n currentDebugStack = null;\n ReactDebugCurrentFrame.getCurrentStack = null;\n };\n getStackAddendum = function () {\n if (currentDebugStack === null) {\n return '';\n }\n var stack = '';\n var debugStack = currentDebugStack;\n for (var i = debugStack.length - 1; i >= 0; i--) {\n var frame = debugStack[i];\n var _debugElementStack = frame.debugElementStack;\n for (var ii = _debugElementStack.length - 1; ii >= 0; ii--) {\n stack += describeStackFrame(_debugElementStack[ii]);\n }\n }\n return stack;\n };\n}\n\nvar didWarnDefaultInputValue = false;\nvar didWarnDefaultChecked = false;\nvar didWarnDefaultSelectValue = false;\nvar didWarnDefaultTextareaValue = false;\nvar didWarnInvalidOptionChildren = false;\nvar didWarnAboutNoopUpdateForComponent = {};\nvar valuePropNames = ['value', 'defaultValue'];\nvar newlineEatingTags = {\n listing: true,\n pre: true,\n textarea: true\n};\n\nfunction getComponentName(type) {\n return typeof type === 'string' ? type : typeof type === 'function' ? type.displayName || type.name : null;\n}\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nfunction validateDangerousTag(tag) {\n if (!validatedTagCache.hasOwnProperty(tag)) {\n !VALID_TAG_REGEX.test(tag) ? invariant(false, 'Invalid tag: %s', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nfunction createMarkupForStyles(styles) {\n var serialized = '';\n var delimiter = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = styles[styleName];\n {\n if (!isCustomProperty) {\n warnValidStyle$1(styleName, styleValue, getStackAddendum);\n }\n }\n if (styleValue != null) {\n serialized += delimiter + processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n\n delimiter = ';';\n }\n }\n return serialized || null;\n}\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var constructor = publicInstance.constructor;\n var componentName = constructor && getComponentName(constructor) || 'ReactClass';\n var warningKey = componentName + '.' + callerName;\n if (didWarnAboutNoopUpdateForComponent[warningKey]) {\n return;\n }\n\n warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\\n\\nPlease check the code for the %s component.', callerName, callerName, componentName);\n didWarnAboutNoopUpdateForComponent[warningKey] = true;\n }\n}\n\nfunction shouldConstruct(Component) {\n return Component.prototype && Component.prototype.isReactComponent;\n}\n\nfunction getNonChildrenInnerMarkup(props) {\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n return innerHTML.__html;\n }\n } else {\n var content = props.children;\n if (typeof content === 'string' || typeof content === 'number') {\n return escapeTextForBrowser(content);\n }\n }\n return null;\n}\n\nfunction flattenTopLevelChildren(children) {\n if (!React.isValidElement(children)) {\n return toArray(children);\n }\n var element = children;\n if (element.type !== REACT_FRAGMENT_TYPE) {\n return [element];\n }\n var fragmentChildren = element.props.children;\n if (!React.isValidElement(fragmentChildren)) {\n return toArray(fragmentChildren);\n }\n var fragmentChildElement = fragmentChildren;\n return [fragmentChildElement];\n}\n\nfunction flattenOptionChildren(children) {\n var content = '';\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else {\n {\n if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n warning(false, 'Only strings and numbers are supported as