diff --git a/assets/js/config.js b/assets/js/config.js index 92ae7df..86a8680 100644 --- a/assets/js/config.js +++ b/assets/js/config.js @@ -32,7 +32,9 @@ var config = { tooltips: { allGood: '', notLogging: 'Not logging', - notSignedIn: 'Not signed In' + notSignedIn: 'Not signed In', + blacklisted: 'This URL is blacklisted', + whitelisted: 'This URL is not on your whitelist' }, // Default theme theme: 'light', diff --git a/assets/js/core/WakaTime.js b/assets/js/core/WakaTime.js index 98084f5..b528eb5 100644 --- a/assets/js/core/WakaTime.js +++ b/assets/js/core/WakaTime.js @@ -11,6 +11,7 @@ var getDomainFromUrl = require('./../helpers/getDomainFromUrl'); var currentTimestamp = require('./../helpers/currentTimestamp'); var changeExtensionState = require('../helpers/changeExtensionState'); var in_array = require('./../helpers/in_array'); +var contains = require('./../helpers/contains'); class WakaTime { @@ -88,7 +89,10 @@ class WakaTime { if (data !== false) { chrome.storage.sync.get({ - loggingEnabled: config.loggingEnabled + loggingEnabled: config.loggingEnabled, + loggingStyle: config.loggingStyle, + blacklist: '', + whitelist: '' }, (items) => { if (items.loggingEnabled === true) { @@ -99,11 +103,33 @@ class WakaTime { if (newState === 'active') { // Get current tab URL. chrome.tabs.query({active: true}, (tabs) => { + + var currentActiveTab = tabs[0]; + var debug = false; // If the current active tab has devtools open - if (in_array(tabs[0].id, this.tabsWithDevtoolsOpen)) debug = true; + if (in_array(currentActiveTab.id, this.tabsWithDevtoolsOpen)) debug = true; + + if (items.loggingStyle == 'blacklist') { + if (! contains(currentActiveTab.url, items.blacklist)) { + this.sendHeartbeat(currentActiveTab.url, debug); + } + else { + changeExtensionState('blacklisted'); + console.log(currentActiveTab.url + ' is on a blacklist.'); + } + } + + if (items.loggingStyle == 'whitelist') { + if (contains(currentActiveTab.url, items.whitelist)) { + this.sendHeartbeat(currentActiveTab.url, debug); + } + else { + changeExtensionState('whitelisted'); + console.log(currentActiveTab.url + ' is not on a whitelist.'); + } + } - this.sendHeartbeat(tabs[0].url, debug); }); } }); diff --git a/assets/js/helpers/changeExtensionState.js b/assets/js/helpers/changeExtensionState.js index 08c68d2..e879059 100644 --- a/assets/js/helpers/changeExtensionState.js +++ b/assets/js/helpers/changeExtensionState.js @@ -28,6 +28,14 @@ function changeExtensionState(state) { changeExtensionIcon(config.colors.notSignedIn); changeExtensionTooltip(config.tooltips.notSignedIn); break; + case 'blacklisted': + changeExtensionIcon(config.colors.notLogging); + changeExtensionTooltip(config.tooltips.blacklisted); + break; + case 'whitelisted': + changeExtensionIcon(config.colors.notLogging); + changeExtensionTooltip(config.tooltips.whitelisted); + break; } } diff --git a/assets/js/helpers/contains.js b/assets/js/helpers/contains.js new file mode 100644 index 0000000..2f9f7e9 --- /dev/null +++ b/assets/js/helpers/contains.js @@ -0,0 +1,21 @@ +/** + * Creates an array from list using \n as delimiter + * and checks if the line is located in the list. + * + * @param line + * @param list + * @returns {boolean} + */ +function contains(line, list) { + var lines = list.split('\n'); + + for (var i = 0; i < lines.length; i ++) { + if (line.indexOf(lines[i]) > - 1) { + return true; + } + } + + return false; +} + +module.exports = contains; \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index b3b109b..1c2d6bd 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -14,7 +14,7 @@ var WakaTime = require('./components/WakaTime.jsx'); React.render(React.createElement(WakaTime, null), document.getElementById('wakatime')); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./components/WakaTime.jsx":4,"bootstrap":13,"jquery":26,"react":183}],2:[function(require,module,exports){ +},{"./components/WakaTime.jsx":4,"bootstrap":14,"jquery":27,"react":184}],2:[function(require,module,exports){ /* global chrome */ 'use strict'; @@ -155,7 +155,7 @@ var MainList = React.createClass({ module.exports = MainList; -},{"react":183}],3:[function(require,module,exports){ +},{"react":184}],3:[function(require,module,exports){ "use strict"; var React = require("react"); @@ -292,7 +292,7 @@ var Navbar = React.createClass({ module.exports = Navbar; -},{"react":183}],4:[function(require,module,exports){ +},{"react":184}],4:[function(require,module,exports){ /* global chrome */ 'use strict'; @@ -471,7 +471,7 @@ var WakaTime = React.createClass({ module.exports = WakaTime; -},{"../config":5,"../core/WakaTime":6,"../helpers/changeExtensionState":8,"./MainList.jsx":2,"./NavBar.jsx":3,"jquery":26,"react":183}],5:[function(require,module,exports){ +},{"../config":5,"../core/WakaTime":6,"../helpers/changeExtensionState":8,"./MainList.jsx":2,"./NavBar.jsx":3,"jquery":27,"react":184}],5:[function(require,module,exports){ 'use strict'; var config = { @@ -508,7 +508,9 @@ var config = { tooltips: { allGood: '', notLogging: 'Not logging', - notSignedIn: 'Not signed In' + notSignedIn: 'Not signed In', + blacklisted: 'This URL is blacklisted', + whitelisted: 'This URL is not on your whitelist' }, // Default theme theme: 'light', @@ -553,6 +555,7 @@ var getDomainFromUrl = require('./../helpers/getDomainFromUrl'); var currentTimestamp = require('./../helpers/currentTimestamp'); var changeExtensionState = require('../helpers/changeExtensionState'); var in_array = require('./../helpers/in_array'); +var contains = require('./../helpers/contains'); var WakaTime = (function () { function WakaTime() { @@ -639,7 +642,10 @@ var WakaTime = (function () { if (data !== false) { chrome.storage.sync.get({ - loggingEnabled: config.loggingEnabled + loggingEnabled: config.loggingEnabled, + loggingStyle: config.loggingStyle, + blacklist: '', + whitelist: '' }, function (items) { if (items.loggingEnabled === true) { @@ -650,11 +656,30 @@ var WakaTime = (function () { if (newState === 'active') { // Get current tab URL. chrome.tabs.query({ active: true }, function (tabs) { + + var currentActiveTab = tabs[0]; + var debug = false; // If the current active tab has devtools open - if (in_array(tabs[0].id, _this.tabsWithDevtoolsOpen)) debug = true; + if (in_array(currentActiveTab.id, _this.tabsWithDevtoolsOpen)) debug = true; - _this.sendHeartbeat(tabs[0].url, debug); + if (items.loggingStyle == 'blacklist') { + if (!contains(currentActiveTab.url, items.blacklist)) { + _this.sendHeartbeat(currentActiveTab.url, debug); + } else { + changeExtensionState('blacklisted'); + console.log(currentActiveTab.url + ' is on a blacklist.'); + } + } + + if (items.loggingStyle == 'whitelist') { + if (contains(currentActiveTab.url, items.whitelist)) { + _this.sendHeartbeat(currentActiveTab.url, debug); + } else { + changeExtensionState('whitelisted'); + console.log(currentActiveTab.url + ' is not on a whitelist.'); + } + } }); } }); @@ -796,7 +821,7 @@ var WakaTime = (function () { exports['default'] = WakaTime; module.exports = exports['default']; -},{"../helpers/changeExtensionState":8,"./../config":5,"./../helpers/currentTimestamp":10,"./../helpers/getDomainFromUrl":11,"./../helpers/in_array":12,"jquery":26,"moment":28}],7:[function(require,module,exports){ +},{"../helpers/changeExtensionState":8,"./../config":5,"./../helpers/contains":10,"./../helpers/currentTimestamp":11,"./../helpers/getDomainFromUrl":12,"./../helpers/in_array":13,"jquery":27,"moment":29}],7:[function(require,module,exports){ /* global chrome */ 'use strict'; @@ -881,12 +906,20 @@ function changeExtensionState(state) { changeExtensionIcon(config.colors.notSignedIn); changeExtensionTooltip(config.tooltips.notSignedIn); break; + case 'blacklisted': + changeExtensionIcon(config.colors.notLogging); + changeExtensionTooltip(config.tooltips.blacklisted); + break; + case 'whitelisted': + changeExtensionIcon(config.colors.notLogging); + changeExtensionTooltip(config.tooltips.whitelisted); + break; } } module.exports = changeExtensionState; -},{"../config":5,"./changeExtensionIcon":7,"./changeExtensionTooltip":9,"./in_array":12}],9:[function(require,module,exports){ +},{"../config":5,"./changeExtensionIcon":7,"./changeExtensionTooltip":9,"./in_array":13}],9:[function(require,module,exports){ /* global chrome */ 'use strict'; @@ -912,6 +945,31 @@ function changeExtensionTooltip(text) { module.exports = changeExtensionTooltip; },{"../config":5}],10:[function(require,module,exports){ +/** + * Creates an array from list using \n as delimiter + * and checks if the line is located in the list. + * + * @param line + * @param list + * @returns {boolean} + */ +'use strict'; + +function contains(line, list) { + var lines = list.split('\n'); + + for (var i = 0; i < lines.length; i++) { + if (line.indexOf(lines[i]) > -1) { + return true; + } + } + + return false; +} + +module.exports = contains; + +},{}],11:[function(require,module,exports){ /** * Returns UNIX timestamp * @@ -925,7 +983,7 @@ function currentTimestamp() { module.exports = currentTimestamp; -},{}],11:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ /** * Returns domain from given URL. * @@ -942,7 +1000,7 @@ function getDomainFromUrl(url) { module.exports = getDomainFromUrl; -},{}],12:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ /** * Returns boolean if needle is found in haystack or not. * @@ -964,7 +1022,7 @@ function in_array(needle, haystack) { module.exports = in_array; -},{}],13:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. require('../../js/transition.js') require('../../js/alert.js') @@ -978,7 +1036,7 @@ require('../../js/popover.js') require('../../js/scrollspy.js') require('../../js/tab.js') require('../../js/affix.js') -},{"../../js/affix.js":14,"../../js/alert.js":15,"../../js/button.js":16,"../../js/carousel.js":17,"../../js/collapse.js":18,"../../js/dropdown.js":19,"../../js/modal.js":20,"../../js/popover.js":21,"../../js/scrollspy.js":22,"../../js/tab.js":23,"../../js/tooltip.js":24,"../../js/transition.js":25}],14:[function(require,module,exports){ +},{"../../js/affix.js":15,"../../js/alert.js":16,"../../js/button.js":17,"../../js/carousel.js":18,"../../js/collapse.js":19,"../../js/dropdown.js":20,"../../js/modal.js":21,"../../js/popover.js":22,"../../js/scrollspy.js":23,"../../js/tab.js":24,"../../js/tooltip.js":25,"../../js/transition.js":26}],15:[function(require,module,exports){ /* ======================================================================== * Bootstrap: affix.js v3.3.4 * http://getbootstrap.com/javascript/#affix @@ -1142,7 +1200,7 @@ require('../../js/affix.js') }(jQuery); -},{}],15:[function(require,module,exports){ +},{}],16:[function(require,module,exports){ /* ======================================================================== * Bootstrap: alert.js v3.3.4 * http://getbootstrap.com/javascript/#alerts @@ -1238,7 +1296,7 @@ require('../../js/affix.js') }(jQuery); -},{}],16:[function(require,module,exports){ +},{}],17:[function(require,module,exports){ /* ======================================================================== * Bootstrap: button.js v3.3.4 * http://getbootstrap.com/javascript/#buttons @@ -1356,7 +1414,7 @@ require('../../js/affix.js') }(jQuery); -},{}],17:[function(require,module,exports){ +},{}],18:[function(require,module,exports){ /* ======================================================================== * Bootstrap: carousel.js v3.3.4 * http://getbootstrap.com/javascript/#carousel @@ -1595,7 +1653,7 @@ require('../../js/affix.js') }(jQuery); -},{}],18:[function(require,module,exports){ +},{}],19:[function(require,module,exports){ /* ======================================================================== * Bootstrap: collapse.js v3.3.4 * http://getbootstrap.com/javascript/#collapse @@ -1808,7 +1866,7 @@ require('../../js/affix.js') }(jQuery); -},{}],19:[function(require,module,exports){ +},{}],20:[function(require,module,exports){ /* ======================================================================== * Bootstrap: dropdown.js v3.3.4 * http://getbootstrap.com/javascript/#dropdowns @@ -1971,7 +2029,7 @@ require('../../js/affix.js') }(jQuery); -},{}],20:[function(require,module,exports){ +},{}],21:[function(require,module,exports){ /* ======================================================================== * Bootstrap: modal.js v3.3.4 * http://getbootstrap.com/javascript/#modals @@ -2312,7 +2370,7 @@ require('../../js/affix.js') }(jQuery); -},{}],21:[function(require,module,exports){ +},{}],22:[function(require,module,exports){ /* ======================================================================== * Bootstrap: popover.js v3.3.4 * http://getbootstrap.com/javascript/#popovers @@ -2422,7 +2480,7 @@ require('../../js/affix.js') }(jQuery); -},{}],22:[function(require,module,exports){ +},{}],23:[function(require,module,exports){ /* ======================================================================== * Bootstrap: scrollspy.js v3.3.4 * http://getbootstrap.com/javascript/#scrollspy @@ -2596,7 +2654,7 @@ require('../../js/affix.js') }(jQuery); -},{}],23:[function(require,module,exports){ +},{}],24:[function(require,module,exports){ /* ======================================================================== * Bootstrap: tab.js v3.3.4 * http://getbootstrap.com/javascript/#tabs @@ -2751,7 +2809,7 @@ require('../../js/affix.js') }(jQuery); -},{}],24:[function(require,module,exports){ +},{}],25:[function(require,module,exports){ /* ======================================================================== * Bootstrap: tooltip.js v3.3.4 * http://getbootstrap.com/javascript/#tooltip @@ -3229,7 +3287,7 @@ require('../../js/affix.js') }(jQuery); -},{}],25:[function(require,module,exports){ +},{}],26:[function(require,module,exports){ /* ======================================================================== * Bootstrap: transition.js v3.3.4 * http://getbootstrap.com/javascript/#transitions @@ -3290,7 +3348,7 @@ require('../../js/affix.js') }(jQuery); -},{}],26:[function(require,module,exports){ +},{}],27:[function(require,module,exports){ /*! * jQuery JavaScript Library v2.1.4 * http://jquery.com/ @@ -12502,7 +12560,7 @@ return jQuery; })); -},{}],27:[function(require,module,exports){ +},{}],28:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -12562,7 +12620,7 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],28:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ //! moment.js //! version : 2.10.3 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors @@ -15674,7 +15732,7 @@ process.umask = function() { return 0; }; return _moment; })); -},{}],29:[function(require,module,exports){ +},{}],30:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -15701,7 +15759,7 @@ var AutoFocusMixin = { module.exports = AutoFocusMixin; -},{"./focusNode":147}],30:[function(require,module,exports){ +},{"./focusNode":148}],31:[function(require,module,exports){ /** * Copyright 2013-2015 Facebook, Inc. * All rights reserved. @@ -16196,7 +16254,7 @@ var BeforeInputEventPlugin = { module.exports = BeforeInputEventPlugin; -},{"./EventConstants":42,"./EventPropagators":47,"./ExecutionEnvironment":48,"./FallbackCompositionState":49,"./SyntheticCompositionEvent":121,"./SyntheticInputEvent":125,"./keyOf":169}],31:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPropagators":48,"./ExecutionEnvironment":49,"./FallbackCompositionState":50,"./SyntheticCompositionEvent":122,"./SyntheticInputEvent":126,"./keyOf":170}],32:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -16321,7 +16379,7 @@ var CSSProperty = { module.exports = CSSProperty; -},{}],32:[function(require,module,exports){ +},{}],33:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -16503,7 +16561,7 @@ var CSSPropertyOperations = { module.exports = CSSPropertyOperations; }).call(this,require('_process')) -},{"./CSSProperty":31,"./ExecutionEnvironment":48,"./camelizeStyleName":136,"./dangerousStyleValue":141,"./hyphenateStyleName":161,"./memoizeStringOnly":171,"./warning":182,"_process":27}],33:[function(require,module,exports){ +},{"./CSSProperty":32,"./ExecutionEnvironment":49,"./camelizeStyleName":137,"./dangerousStyleValue":142,"./hyphenateStyleName":162,"./memoizeStringOnly":172,"./warning":183,"_process":28}],34:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -16603,7 +16661,7 @@ PooledClass.addPoolingTo(CallbackQueue); module.exports = CallbackQueue; }).call(this,require('_process')) -},{"./Object.assign":54,"./PooledClass":55,"./invariant":163,"_process":27}],34:[function(require,module,exports){ +},{"./Object.assign":55,"./PooledClass":56,"./invariant":164,"_process":28}],35:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -16985,7 +17043,7 @@ var ChangeEventPlugin = { module.exports = ChangeEventPlugin; -},{"./EventConstants":42,"./EventPluginHub":44,"./EventPropagators":47,"./ExecutionEnvironment":48,"./ReactUpdates":115,"./SyntheticEvent":123,"./isEventSupported":164,"./isTextInputElement":166,"./keyOf":169}],35:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPluginHub":45,"./EventPropagators":48,"./ExecutionEnvironment":49,"./ReactUpdates":116,"./SyntheticEvent":124,"./isEventSupported":165,"./isTextInputElement":167,"./keyOf":170}],36:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -17010,7 +17068,7 @@ var ClientReactRootIndex = { module.exports = ClientReactRootIndex; -},{}],36:[function(require,module,exports){ +},{}],37:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -17148,7 +17206,7 @@ var DOMChildrenOperations = { module.exports = DOMChildrenOperations; }).call(this,require('_process')) -},{"./Danger":39,"./ReactMultiChildUpdateTypes":100,"./invariant":163,"./setTextContent":177,"_process":27}],37:[function(require,module,exports){ +},{"./Danger":40,"./ReactMultiChildUpdateTypes":101,"./invariant":164,"./setTextContent":178,"_process":28}],38:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -17447,7 +17505,7 @@ var DOMProperty = { module.exports = DOMProperty; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],38:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],39:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -17639,7 +17697,7 @@ var DOMPropertyOperations = { module.exports = DOMPropertyOperations; }).call(this,require('_process')) -},{"./DOMProperty":37,"./quoteAttributeValueForBrowser":175,"./warning":182,"_process":27}],39:[function(require,module,exports){ +},{"./DOMProperty":38,"./quoteAttributeValueForBrowser":176,"./warning":183,"_process":28}],40:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -17826,7 +17884,7 @@ var Danger = { module.exports = Danger; }).call(this,require('_process')) -},{"./ExecutionEnvironment":48,"./createNodesFromMarkup":140,"./emptyFunction":142,"./getMarkupWrap":155,"./invariant":163,"_process":27}],40:[function(require,module,exports){ +},{"./ExecutionEnvironment":49,"./createNodesFromMarkup":141,"./emptyFunction":143,"./getMarkupWrap":156,"./invariant":164,"_process":28}],41:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -17865,7 +17923,7 @@ var DefaultEventPluginOrder = [ module.exports = DefaultEventPluginOrder; -},{"./keyOf":169}],41:[function(require,module,exports){ +},{"./keyOf":170}],42:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -18005,7 +18063,7 @@ var EnterLeaveEventPlugin = { module.exports = EnterLeaveEventPlugin; -},{"./EventConstants":42,"./EventPropagators":47,"./ReactMount":98,"./SyntheticMouseEvent":127,"./keyOf":169}],42:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPropagators":48,"./ReactMount":99,"./SyntheticMouseEvent":128,"./keyOf":170}],43:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -18077,7 +18135,7 @@ var EventConstants = { module.exports = EventConstants; -},{"./keyMirror":168}],43:[function(require,module,exports){ +},{"./keyMirror":169}],44:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -18167,7 +18225,7 @@ var EventListener = { module.exports = EventListener; }).call(this,require('_process')) -},{"./emptyFunction":142,"_process":27}],44:[function(require,module,exports){ +},{"./emptyFunction":143,"_process":28}],45:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -18445,7 +18503,7 @@ var EventPluginHub = { module.exports = EventPluginHub; }).call(this,require('_process')) -},{"./EventPluginRegistry":45,"./EventPluginUtils":46,"./accumulateInto":133,"./forEachAccumulated":148,"./invariant":163,"_process":27}],45:[function(require,module,exports){ +},{"./EventPluginRegistry":46,"./EventPluginUtils":47,"./accumulateInto":134,"./forEachAccumulated":149,"./invariant":164,"_process":28}],46:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -18725,7 +18783,7 @@ var EventPluginRegistry = { module.exports = EventPluginRegistry; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],46:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],47:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -18946,7 +19004,7 @@ var EventPluginUtils = { module.exports = EventPluginUtils; }).call(this,require('_process')) -},{"./EventConstants":42,"./invariant":163,"_process":27}],47:[function(require,module,exports){ +},{"./EventConstants":43,"./invariant":164,"_process":28}],48:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -19088,7 +19146,7 @@ var EventPropagators = { module.exports = EventPropagators; }).call(this,require('_process')) -},{"./EventConstants":42,"./EventPluginHub":44,"./accumulateInto":133,"./forEachAccumulated":148,"_process":27}],48:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPluginHub":45,"./accumulateInto":134,"./forEachAccumulated":149,"_process":28}],49:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -19132,7 +19190,7 @@ var ExecutionEnvironment = { module.exports = ExecutionEnvironment; -},{}],49:[function(require,module,exports){ +},{}],50:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -19223,7 +19281,7 @@ PooledClass.addPoolingTo(FallbackCompositionState); module.exports = FallbackCompositionState; -},{"./Object.assign":54,"./PooledClass":55,"./getTextContentAccessor":158}],50:[function(require,module,exports){ +},{"./Object.assign":55,"./PooledClass":56,"./getTextContentAccessor":159}],51:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -19434,7 +19492,7 @@ var HTMLDOMPropertyConfig = { module.exports = HTMLDOMPropertyConfig; -},{"./DOMProperty":37,"./ExecutionEnvironment":48}],51:[function(require,module,exports){ +},{"./DOMProperty":38,"./ExecutionEnvironment":49}],52:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -19590,7 +19648,7 @@ var LinkedValueUtils = { module.exports = LinkedValueUtils; }).call(this,require('_process')) -},{"./ReactPropTypes":106,"./invariant":163,"_process":27}],52:[function(require,module,exports){ +},{"./ReactPropTypes":107,"./invariant":164,"_process":28}],53:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -19647,7 +19705,7 @@ var LocalEventTrapMixin = { module.exports = LocalEventTrapMixin; }).call(this,require('_process')) -},{"./ReactBrowserEventEmitter":58,"./accumulateInto":133,"./forEachAccumulated":148,"./invariant":163,"_process":27}],53:[function(require,module,exports){ +},{"./ReactBrowserEventEmitter":59,"./accumulateInto":134,"./forEachAccumulated":149,"./invariant":164,"_process":28}],54:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -19705,7 +19763,7 @@ var MobileSafariClickEventPlugin = { module.exports = MobileSafariClickEventPlugin; -},{"./EventConstants":42,"./emptyFunction":142}],54:[function(require,module,exports){ +},{"./EventConstants":43,"./emptyFunction":143}],55:[function(require,module,exports){ /** * Copyright 2014-2015, Facebook, Inc. * All rights reserved. @@ -19754,7 +19812,7 @@ function assign(target, sources) { module.exports = assign; -},{}],55:[function(require,module,exports){ +},{}],56:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -19870,7 +19928,7 @@ var PooledClass = { module.exports = PooledClass; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],56:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],57:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -20022,7 +20080,7 @@ React.version = '0.13.3'; module.exports = React; }).call(this,require('_process')) -},{"./EventPluginUtils":46,"./ExecutionEnvironment":48,"./Object.assign":54,"./ReactChildren":60,"./ReactClass":61,"./ReactComponent":62,"./ReactContext":66,"./ReactCurrentOwner":67,"./ReactDOM":68,"./ReactDOMTextComponent":79,"./ReactDefaultInjection":82,"./ReactElement":85,"./ReactElementValidator":86,"./ReactInstanceHandles":94,"./ReactMount":98,"./ReactPerf":103,"./ReactPropTypes":106,"./ReactReconciler":109,"./ReactServerRendering":112,"./findDOMNode":145,"./onlyChild":172,"_process":27}],57:[function(require,module,exports){ +},{"./EventPluginUtils":47,"./ExecutionEnvironment":49,"./Object.assign":55,"./ReactChildren":61,"./ReactClass":62,"./ReactComponent":63,"./ReactContext":67,"./ReactCurrentOwner":68,"./ReactDOM":69,"./ReactDOMTextComponent":80,"./ReactDefaultInjection":83,"./ReactElement":86,"./ReactElementValidator":87,"./ReactInstanceHandles":95,"./ReactMount":99,"./ReactPerf":104,"./ReactPropTypes":107,"./ReactReconciler":110,"./ReactServerRendering":113,"./findDOMNode":146,"./onlyChild":173,"_process":28}],58:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -20053,7 +20111,7 @@ var ReactBrowserComponentMixin = { module.exports = ReactBrowserComponentMixin; -},{"./findDOMNode":145}],58:[function(require,module,exports){ +},{"./findDOMNode":146}],59:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -20406,7 +20464,7 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, { module.exports = ReactBrowserEventEmitter; -},{"./EventConstants":42,"./EventPluginHub":44,"./EventPluginRegistry":45,"./Object.assign":54,"./ReactEventEmitterMixin":89,"./ViewportMetrics":132,"./isEventSupported":164}],59:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPluginHub":45,"./EventPluginRegistry":46,"./Object.assign":55,"./ReactEventEmitterMixin":90,"./ViewportMetrics":133,"./isEventSupported":165}],60:[function(require,module,exports){ /** * Copyright 2014-2015, Facebook, Inc. * All rights reserved. @@ -20533,7 +20591,7 @@ var ReactChildReconciler = { module.exports = ReactChildReconciler; -},{"./ReactReconciler":109,"./flattenChildren":146,"./instantiateReactComponent":162,"./shouldUpdateReactComponent":179}],60:[function(require,module,exports){ +},{"./ReactReconciler":110,"./flattenChildren":147,"./instantiateReactComponent":163,"./shouldUpdateReactComponent":180}],61:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -20686,7 +20744,7 @@ var ReactChildren = { module.exports = ReactChildren; }).call(this,require('_process')) -},{"./PooledClass":55,"./ReactFragment":91,"./traverseAllChildren":181,"./warning":182,"_process":27}],61:[function(require,module,exports){ +},{"./PooledClass":56,"./ReactFragment":92,"./traverseAllChildren":182,"./warning":183,"_process":28}],62:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -21632,7 +21690,7 @@ var ReactClass = { module.exports = ReactClass; }).call(this,require('_process')) -},{"./Object.assign":54,"./ReactComponent":62,"./ReactCurrentOwner":67,"./ReactElement":85,"./ReactErrorUtils":88,"./ReactInstanceMap":95,"./ReactLifeCycle":96,"./ReactPropTypeLocationNames":104,"./ReactPropTypeLocations":105,"./ReactUpdateQueue":114,"./invariant":163,"./keyMirror":168,"./keyOf":169,"./warning":182,"_process":27}],62:[function(require,module,exports){ +},{"./Object.assign":55,"./ReactComponent":63,"./ReactCurrentOwner":68,"./ReactElement":86,"./ReactErrorUtils":89,"./ReactInstanceMap":96,"./ReactLifeCycle":97,"./ReactPropTypeLocationNames":105,"./ReactPropTypeLocations":106,"./ReactUpdateQueue":115,"./invariant":164,"./keyMirror":169,"./keyOf":170,"./warning":183,"_process":28}],63:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -21786,7 +21844,7 @@ if ("production" !== process.env.NODE_ENV) { module.exports = ReactComponent; }).call(this,require('_process')) -},{"./ReactUpdateQueue":114,"./invariant":163,"./warning":182,"_process":27}],63:[function(require,module,exports){ +},{"./ReactUpdateQueue":115,"./invariant":164,"./warning":183,"_process":28}],64:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -21833,7 +21891,7 @@ var ReactComponentBrowserEnvironment = { module.exports = ReactComponentBrowserEnvironment; -},{"./ReactDOMIDOperations":72,"./ReactMount":98}],64:[function(require,module,exports){ +},{"./ReactDOMIDOperations":73,"./ReactMount":99}],65:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -21894,7 +21952,7 @@ var ReactComponentEnvironment = { module.exports = ReactComponentEnvironment; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],65:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],66:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -22807,7 +22865,7 @@ var ReactCompositeComponent = { module.exports = ReactCompositeComponent; }).call(this,require('_process')) -},{"./Object.assign":54,"./ReactComponentEnvironment":64,"./ReactContext":66,"./ReactCurrentOwner":67,"./ReactElement":85,"./ReactElementValidator":86,"./ReactInstanceMap":95,"./ReactLifeCycle":96,"./ReactNativeComponent":101,"./ReactPerf":103,"./ReactPropTypeLocationNames":104,"./ReactPropTypeLocations":105,"./ReactReconciler":109,"./ReactUpdates":115,"./emptyObject":143,"./invariant":163,"./shouldUpdateReactComponent":179,"./warning":182,"_process":27}],66:[function(require,module,exports){ +},{"./Object.assign":55,"./ReactComponentEnvironment":65,"./ReactContext":67,"./ReactCurrentOwner":68,"./ReactElement":86,"./ReactElementValidator":87,"./ReactInstanceMap":96,"./ReactLifeCycle":97,"./ReactNativeComponent":102,"./ReactPerf":104,"./ReactPropTypeLocationNames":105,"./ReactPropTypeLocations":106,"./ReactReconciler":110,"./ReactUpdates":116,"./emptyObject":144,"./invariant":164,"./shouldUpdateReactComponent":180,"./warning":183,"_process":28}],67:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -22885,7 +22943,7 @@ var ReactContext = { module.exports = ReactContext; }).call(this,require('_process')) -},{"./Object.assign":54,"./emptyObject":143,"./warning":182,"_process":27}],67:[function(require,module,exports){ +},{"./Object.assign":55,"./emptyObject":144,"./warning":183,"_process":28}],68:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -22919,7 +22977,7 @@ var ReactCurrentOwner = { module.exports = ReactCurrentOwner; -},{}],68:[function(require,module,exports){ +},{}],69:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -23098,7 +23156,7 @@ var ReactDOM = mapObject({ module.exports = ReactDOM; }).call(this,require('_process')) -},{"./ReactElement":85,"./ReactElementValidator":86,"./mapObject":170,"_process":27}],69:[function(require,module,exports){ +},{"./ReactElement":86,"./ReactElementValidator":87,"./mapObject":171,"_process":28}],70:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -23162,7 +23220,7 @@ var ReactDOMButton = ReactClass.createClass({ module.exports = ReactDOMButton; -},{"./AutoFocusMixin":29,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85,"./keyMirror":168}],70:[function(require,module,exports){ +},{"./AutoFocusMixin":30,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86,"./keyMirror":169}],71:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -23672,7 +23730,7 @@ ReactDOMComponent.injection = { module.exports = ReactDOMComponent; }).call(this,require('_process')) -},{"./CSSPropertyOperations":32,"./DOMProperty":37,"./DOMPropertyOperations":38,"./Object.assign":54,"./ReactBrowserEventEmitter":58,"./ReactComponentBrowserEnvironment":63,"./ReactMount":98,"./ReactMultiChild":99,"./ReactPerf":103,"./escapeTextContentForBrowser":144,"./invariant":163,"./isEventSupported":164,"./keyOf":169,"./warning":182,"_process":27}],71:[function(require,module,exports){ +},{"./CSSPropertyOperations":33,"./DOMProperty":38,"./DOMPropertyOperations":39,"./Object.assign":55,"./ReactBrowserEventEmitter":59,"./ReactComponentBrowserEnvironment":64,"./ReactMount":99,"./ReactMultiChild":100,"./ReactPerf":104,"./escapeTextContentForBrowser":145,"./invariant":164,"./isEventSupported":165,"./keyOf":170,"./warning":183,"_process":28}],72:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -23721,7 +23779,7 @@ var ReactDOMForm = ReactClass.createClass({ module.exports = ReactDOMForm; -},{"./EventConstants":42,"./LocalEventTrapMixin":52,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85}],72:[function(require,module,exports){ +},{"./EventConstants":43,"./LocalEventTrapMixin":53,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86}],73:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -23889,7 +23947,7 @@ ReactPerf.measureMethods(ReactDOMIDOperations, 'ReactDOMIDOperations', { module.exports = ReactDOMIDOperations; }).call(this,require('_process')) -},{"./CSSPropertyOperations":32,"./DOMChildrenOperations":36,"./DOMPropertyOperations":38,"./ReactMount":98,"./ReactPerf":103,"./invariant":163,"./setInnerHTML":176,"_process":27}],73:[function(require,module,exports){ +},{"./CSSPropertyOperations":33,"./DOMChildrenOperations":37,"./DOMPropertyOperations":39,"./ReactMount":99,"./ReactPerf":104,"./invariant":164,"./setInnerHTML":177,"_process":28}],74:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -23934,7 +23992,7 @@ var ReactDOMIframe = ReactClass.createClass({ module.exports = ReactDOMIframe; -},{"./EventConstants":42,"./LocalEventTrapMixin":52,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85}],74:[function(require,module,exports){ +},{"./EventConstants":43,"./LocalEventTrapMixin":53,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86}],75:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -23980,7 +24038,7 @@ var ReactDOMImg = ReactClass.createClass({ module.exports = ReactDOMImg; -},{"./EventConstants":42,"./LocalEventTrapMixin":52,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85}],75:[function(require,module,exports){ +},{"./EventConstants":43,"./LocalEventTrapMixin":53,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86}],76:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -24157,7 +24215,7 @@ var ReactDOMInput = ReactClass.createClass({ module.exports = ReactDOMInput; }).call(this,require('_process')) -},{"./AutoFocusMixin":29,"./DOMPropertyOperations":38,"./LinkedValueUtils":51,"./Object.assign":54,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85,"./ReactMount":98,"./ReactUpdates":115,"./invariant":163,"_process":27}],76:[function(require,module,exports){ +},{"./AutoFocusMixin":30,"./DOMPropertyOperations":39,"./LinkedValueUtils":52,"./Object.assign":55,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86,"./ReactMount":99,"./ReactUpdates":116,"./invariant":164,"_process":28}],77:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -24209,7 +24267,7 @@ var ReactDOMOption = ReactClass.createClass({ module.exports = ReactDOMOption; }).call(this,require('_process')) -},{"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85,"./warning":182,"_process":27}],77:[function(require,module,exports){ +},{"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86,"./warning":183,"_process":28}],78:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -24387,7 +24445,7 @@ var ReactDOMSelect = ReactClass.createClass({ module.exports = ReactDOMSelect; -},{"./AutoFocusMixin":29,"./LinkedValueUtils":51,"./Object.assign":54,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85,"./ReactUpdates":115}],78:[function(require,module,exports){ +},{"./AutoFocusMixin":30,"./LinkedValueUtils":52,"./Object.assign":55,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86,"./ReactUpdates":116}],79:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -24600,7 +24658,7 @@ var ReactDOMSelection = { module.exports = ReactDOMSelection; -},{"./ExecutionEnvironment":48,"./getNodeForCharacterOffset":156,"./getTextContentAccessor":158}],79:[function(require,module,exports){ +},{"./ExecutionEnvironment":49,"./getNodeForCharacterOffset":157,"./getTextContentAccessor":159}],80:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -24717,7 +24775,7 @@ assign(ReactDOMTextComponent.prototype, { module.exports = ReactDOMTextComponent; -},{"./DOMPropertyOperations":38,"./Object.assign":54,"./ReactComponentBrowserEnvironment":63,"./ReactDOMComponent":70,"./escapeTextContentForBrowser":144}],80:[function(require,module,exports){ +},{"./DOMPropertyOperations":39,"./Object.assign":55,"./ReactComponentBrowserEnvironment":64,"./ReactDOMComponent":71,"./escapeTextContentForBrowser":145}],81:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -24857,7 +24915,7 @@ var ReactDOMTextarea = ReactClass.createClass({ module.exports = ReactDOMTextarea; }).call(this,require('_process')) -},{"./AutoFocusMixin":29,"./DOMPropertyOperations":38,"./LinkedValueUtils":51,"./Object.assign":54,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactElement":85,"./ReactUpdates":115,"./invariant":163,"./warning":182,"_process":27}],81:[function(require,module,exports){ +},{"./AutoFocusMixin":30,"./DOMPropertyOperations":39,"./LinkedValueUtils":52,"./Object.assign":55,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactElement":86,"./ReactUpdates":116,"./invariant":164,"./warning":183,"_process":28}],82:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -24930,7 +24988,7 @@ var ReactDefaultBatchingStrategy = { module.exports = ReactDefaultBatchingStrategy; -},{"./Object.assign":54,"./ReactUpdates":115,"./Transaction":131,"./emptyFunction":142}],82:[function(require,module,exports){ +},{"./Object.assign":55,"./ReactUpdates":116,"./Transaction":132,"./emptyFunction":143}],83:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -25089,7 +25147,7 @@ module.exports = { }; }).call(this,require('_process')) -},{"./BeforeInputEventPlugin":30,"./ChangeEventPlugin":34,"./ClientReactRootIndex":35,"./DefaultEventPluginOrder":40,"./EnterLeaveEventPlugin":41,"./ExecutionEnvironment":48,"./HTMLDOMPropertyConfig":50,"./MobileSafariClickEventPlugin":53,"./ReactBrowserComponentMixin":57,"./ReactClass":61,"./ReactComponentBrowserEnvironment":63,"./ReactDOMButton":69,"./ReactDOMComponent":70,"./ReactDOMForm":71,"./ReactDOMIDOperations":72,"./ReactDOMIframe":73,"./ReactDOMImg":74,"./ReactDOMInput":75,"./ReactDOMOption":76,"./ReactDOMSelect":77,"./ReactDOMTextComponent":79,"./ReactDOMTextarea":80,"./ReactDefaultBatchingStrategy":81,"./ReactDefaultPerf":83,"./ReactElement":85,"./ReactEventListener":90,"./ReactInjection":92,"./ReactInstanceHandles":94,"./ReactMount":98,"./ReactReconcileTransaction":108,"./SVGDOMPropertyConfig":116,"./SelectEventPlugin":117,"./ServerReactRootIndex":118,"./SimpleEventPlugin":119,"./createFullPageComponent":139,"_process":27}],83:[function(require,module,exports){ +},{"./BeforeInputEventPlugin":31,"./ChangeEventPlugin":35,"./ClientReactRootIndex":36,"./DefaultEventPluginOrder":41,"./EnterLeaveEventPlugin":42,"./ExecutionEnvironment":49,"./HTMLDOMPropertyConfig":51,"./MobileSafariClickEventPlugin":54,"./ReactBrowserComponentMixin":58,"./ReactClass":62,"./ReactComponentBrowserEnvironment":64,"./ReactDOMButton":70,"./ReactDOMComponent":71,"./ReactDOMForm":72,"./ReactDOMIDOperations":73,"./ReactDOMIframe":74,"./ReactDOMImg":75,"./ReactDOMInput":76,"./ReactDOMOption":77,"./ReactDOMSelect":78,"./ReactDOMTextComponent":80,"./ReactDOMTextarea":81,"./ReactDefaultBatchingStrategy":82,"./ReactDefaultPerf":84,"./ReactElement":86,"./ReactEventListener":91,"./ReactInjection":93,"./ReactInstanceHandles":95,"./ReactMount":99,"./ReactReconcileTransaction":109,"./SVGDOMPropertyConfig":117,"./SelectEventPlugin":118,"./ServerReactRootIndex":119,"./SimpleEventPlugin":120,"./createFullPageComponent":140,"_process":28}],84:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -25355,7 +25413,7 @@ var ReactDefaultPerf = { module.exports = ReactDefaultPerf; -},{"./DOMProperty":37,"./ReactDefaultPerfAnalysis":84,"./ReactMount":98,"./ReactPerf":103,"./performanceNow":174}],84:[function(require,module,exports){ +},{"./DOMProperty":38,"./ReactDefaultPerfAnalysis":85,"./ReactMount":99,"./ReactPerf":104,"./performanceNow":175}],85:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -25561,7 +25619,7 @@ var ReactDefaultPerfAnalysis = { module.exports = ReactDefaultPerfAnalysis; -},{"./Object.assign":54}],85:[function(require,module,exports){ +},{"./Object.assign":55}],86:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -25869,7 +25927,7 @@ ReactElement.isValidElement = function(object) { module.exports = ReactElement; }).call(this,require('_process')) -},{"./Object.assign":54,"./ReactContext":66,"./ReactCurrentOwner":67,"./warning":182,"_process":27}],86:[function(require,module,exports){ +},{"./Object.assign":55,"./ReactContext":67,"./ReactCurrentOwner":68,"./warning":183,"_process":28}],87:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -26334,7 +26392,7 @@ var ReactElementValidator = { module.exports = ReactElementValidator; }).call(this,require('_process')) -},{"./ReactCurrentOwner":67,"./ReactElement":85,"./ReactFragment":91,"./ReactNativeComponent":101,"./ReactPropTypeLocationNames":104,"./ReactPropTypeLocations":105,"./getIteratorFn":154,"./invariant":163,"./warning":182,"_process":27}],87:[function(require,module,exports){ +},{"./ReactCurrentOwner":68,"./ReactElement":86,"./ReactFragment":92,"./ReactNativeComponent":102,"./ReactPropTypeLocationNames":105,"./ReactPropTypeLocations":106,"./getIteratorFn":155,"./invariant":164,"./warning":183,"_process":28}],88:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -26429,7 +26487,7 @@ var ReactEmptyComponent = { module.exports = ReactEmptyComponent; }).call(this,require('_process')) -},{"./ReactElement":85,"./ReactInstanceMap":95,"./invariant":163,"_process":27}],88:[function(require,module,exports){ +},{"./ReactElement":86,"./ReactInstanceMap":96,"./invariant":164,"_process":28}],89:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -26461,7 +26519,7 @@ var ReactErrorUtils = { module.exports = ReactErrorUtils; -},{}],89:[function(require,module,exports){ +},{}],90:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -26511,7 +26569,7 @@ var ReactEventEmitterMixin = { module.exports = ReactEventEmitterMixin; -},{"./EventPluginHub":44}],90:[function(require,module,exports){ +},{"./EventPluginHub":45}],91:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -26694,7 +26752,7 @@ var ReactEventListener = { module.exports = ReactEventListener; -},{"./EventListener":43,"./ExecutionEnvironment":48,"./Object.assign":54,"./PooledClass":55,"./ReactInstanceHandles":94,"./ReactMount":98,"./ReactUpdates":115,"./getEventTarget":153,"./getUnboundedScrollPosition":159}],91:[function(require,module,exports){ +},{"./EventListener":44,"./ExecutionEnvironment":49,"./Object.assign":55,"./PooledClass":56,"./ReactInstanceHandles":95,"./ReactMount":99,"./ReactUpdates":116,"./getEventTarget":154,"./getUnboundedScrollPosition":160}],92:[function(require,module,exports){ (function (process){ /** * Copyright 2015, Facebook, Inc. @@ -26879,7 +26937,7 @@ var ReactFragment = { module.exports = ReactFragment; }).call(this,require('_process')) -},{"./ReactElement":85,"./warning":182,"_process":27}],92:[function(require,module,exports){ +},{"./ReactElement":86,"./warning":183,"_process":28}],93:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -26921,7 +26979,7 @@ var ReactInjection = { module.exports = ReactInjection; -},{"./DOMProperty":37,"./EventPluginHub":44,"./ReactBrowserEventEmitter":58,"./ReactClass":61,"./ReactComponentEnvironment":64,"./ReactDOMComponent":70,"./ReactEmptyComponent":87,"./ReactNativeComponent":101,"./ReactPerf":103,"./ReactRootIndex":111,"./ReactUpdates":115}],93:[function(require,module,exports){ +},{"./DOMProperty":38,"./EventPluginHub":45,"./ReactBrowserEventEmitter":59,"./ReactClass":62,"./ReactComponentEnvironment":65,"./ReactDOMComponent":71,"./ReactEmptyComponent":88,"./ReactNativeComponent":102,"./ReactPerf":104,"./ReactRootIndex":112,"./ReactUpdates":116}],94:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -27056,7 +27114,7 @@ var ReactInputSelection = { module.exports = ReactInputSelection; -},{"./ReactDOMSelection":78,"./containsNode":137,"./focusNode":147,"./getActiveElement":149}],94:[function(require,module,exports){ +},{"./ReactDOMSelection":79,"./containsNode":138,"./focusNode":148,"./getActiveElement":150}],95:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -27392,7 +27450,7 @@ var ReactInstanceHandles = { module.exports = ReactInstanceHandles; }).call(this,require('_process')) -},{"./ReactRootIndex":111,"./invariant":163,"_process":27}],95:[function(require,module,exports){ +},{"./ReactRootIndex":112,"./invariant":164,"_process":28}],96:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -27441,7 +27499,7 @@ var ReactInstanceMap = { module.exports = ReactInstanceMap; -},{}],96:[function(require,module,exports){ +},{}],97:[function(require,module,exports){ /** * Copyright 2015, Facebook, Inc. * All rights reserved. @@ -27478,7 +27536,7 @@ var ReactLifeCycle = { module.exports = ReactLifeCycle; -},{}],97:[function(require,module,exports){ +},{}],98:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -27526,7 +27584,7 @@ var ReactMarkupChecksum = { module.exports = ReactMarkupChecksum; -},{"./adler32":134}],98:[function(require,module,exports){ +},{"./adler32":135}],99:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -28417,7 +28475,7 @@ ReactPerf.measureMethods(ReactMount, 'ReactMount', { module.exports = ReactMount; }).call(this,require('_process')) -},{"./DOMProperty":37,"./ReactBrowserEventEmitter":58,"./ReactCurrentOwner":67,"./ReactElement":85,"./ReactElementValidator":86,"./ReactEmptyComponent":87,"./ReactInstanceHandles":94,"./ReactInstanceMap":95,"./ReactMarkupChecksum":97,"./ReactPerf":103,"./ReactReconciler":109,"./ReactUpdateQueue":114,"./ReactUpdates":115,"./containsNode":137,"./emptyObject":143,"./getReactRootElementInContainer":157,"./instantiateReactComponent":162,"./invariant":163,"./setInnerHTML":176,"./shouldUpdateReactComponent":179,"./warning":182,"_process":27}],99:[function(require,module,exports){ +},{"./DOMProperty":38,"./ReactBrowserEventEmitter":59,"./ReactCurrentOwner":68,"./ReactElement":86,"./ReactElementValidator":87,"./ReactEmptyComponent":88,"./ReactInstanceHandles":95,"./ReactInstanceMap":96,"./ReactMarkupChecksum":98,"./ReactPerf":104,"./ReactReconciler":110,"./ReactUpdateQueue":115,"./ReactUpdates":116,"./containsNode":138,"./emptyObject":144,"./getReactRootElementInContainer":158,"./instantiateReactComponent":163,"./invariant":164,"./setInnerHTML":177,"./shouldUpdateReactComponent":180,"./warning":183,"_process":28}],100:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -28847,7 +28905,7 @@ var ReactMultiChild = { module.exports = ReactMultiChild; -},{"./ReactChildReconciler":59,"./ReactComponentEnvironment":64,"./ReactMultiChildUpdateTypes":100,"./ReactReconciler":109}],100:[function(require,module,exports){ +},{"./ReactChildReconciler":60,"./ReactComponentEnvironment":65,"./ReactMultiChildUpdateTypes":101,"./ReactReconciler":110}],101:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -28880,7 +28938,7 @@ var ReactMultiChildUpdateTypes = keyMirror({ module.exports = ReactMultiChildUpdateTypes; -},{"./keyMirror":168}],101:[function(require,module,exports){ +},{"./keyMirror":169}],102:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -28987,7 +29045,7 @@ var ReactNativeComponent = { module.exports = ReactNativeComponent; }).call(this,require('_process')) -},{"./Object.assign":54,"./invariant":163,"_process":27}],102:[function(require,module,exports){ +},{"./Object.assign":55,"./invariant":164,"_process":28}],103:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -29099,7 +29157,7 @@ var ReactOwner = { module.exports = ReactOwner; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],103:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],104:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -29203,7 +29261,7 @@ function _noMeasure(objName, fnName, func) { module.exports = ReactPerf; }).call(this,require('_process')) -},{"_process":27}],104:[function(require,module,exports){ +},{"_process":28}],105:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -29231,7 +29289,7 @@ if ("production" !== process.env.NODE_ENV) { module.exports = ReactPropTypeLocationNames; }).call(this,require('_process')) -},{"_process":27}],105:[function(require,module,exports){ +},{"_process":28}],106:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -29255,7 +29313,7 @@ var ReactPropTypeLocations = keyMirror({ module.exports = ReactPropTypeLocations; -},{"./keyMirror":168}],106:[function(require,module,exports){ +},{"./keyMirror":169}],107:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -29604,7 +29662,7 @@ function getPreciseType(propValue) { module.exports = ReactPropTypes; -},{"./ReactElement":85,"./ReactFragment":91,"./ReactPropTypeLocationNames":104,"./emptyFunction":142}],107:[function(require,module,exports){ +},{"./ReactElement":86,"./ReactFragment":92,"./ReactPropTypeLocationNames":105,"./emptyFunction":143}],108:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -29660,7 +29718,7 @@ PooledClass.addPoolingTo(ReactPutListenerQueue); module.exports = ReactPutListenerQueue; -},{"./Object.assign":54,"./PooledClass":55,"./ReactBrowserEventEmitter":58}],108:[function(require,module,exports){ +},{"./Object.assign":55,"./PooledClass":56,"./ReactBrowserEventEmitter":59}],109:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -29836,7 +29894,7 @@ PooledClass.addPoolingTo(ReactReconcileTransaction); module.exports = ReactReconcileTransaction; -},{"./CallbackQueue":33,"./Object.assign":54,"./PooledClass":55,"./ReactBrowserEventEmitter":58,"./ReactInputSelection":93,"./ReactPutListenerQueue":107,"./Transaction":131}],109:[function(require,module,exports){ +},{"./CallbackQueue":34,"./Object.assign":55,"./PooledClass":56,"./ReactBrowserEventEmitter":59,"./ReactInputSelection":94,"./ReactPutListenerQueue":108,"./Transaction":132}],110:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -29960,7 +30018,7 @@ var ReactReconciler = { module.exports = ReactReconciler; }).call(this,require('_process')) -},{"./ReactElementValidator":86,"./ReactRef":110,"_process":27}],110:[function(require,module,exports){ +},{"./ReactElementValidator":87,"./ReactRef":111,"_process":28}],111:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -30031,7 +30089,7 @@ ReactRef.detachRefs = function(instance, element) { module.exports = ReactRef; -},{"./ReactOwner":102}],111:[function(require,module,exports){ +},{"./ReactOwner":103}],112:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -30062,7 +30120,7 @@ var ReactRootIndex = { module.exports = ReactRootIndex; -},{}],112:[function(require,module,exports){ +},{}],113:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -30144,7 +30202,7 @@ module.exports = { }; }).call(this,require('_process')) -},{"./ReactElement":85,"./ReactInstanceHandles":94,"./ReactMarkupChecksum":97,"./ReactServerRenderingTransaction":113,"./emptyObject":143,"./instantiateReactComponent":162,"./invariant":163,"_process":27}],113:[function(require,module,exports){ +},{"./ReactElement":86,"./ReactInstanceHandles":95,"./ReactMarkupChecksum":98,"./ReactServerRenderingTransaction":114,"./emptyObject":144,"./instantiateReactComponent":163,"./invariant":164,"_process":28}],114:[function(require,module,exports){ /** * Copyright 2014-2015, Facebook, Inc. * All rights reserved. @@ -30257,7 +30315,7 @@ PooledClass.addPoolingTo(ReactServerRenderingTransaction); module.exports = ReactServerRenderingTransaction; -},{"./CallbackQueue":33,"./Object.assign":54,"./PooledClass":55,"./ReactPutListenerQueue":107,"./Transaction":131,"./emptyFunction":142}],114:[function(require,module,exports){ +},{"./CallbackQueue":34,"./Object.assign":55,"./PooledClass":56,"./ReactPutListenerQueue":108,"./Transaction":132,"./emptyFunction":143}],115:[function(require,module,exports){ (function (process){ /** * Copyright 2015, Facebook, Inc. @@ -30556,7 +30614,7 @@ var ReactUpdateQueue = { module.exports = ReactUpdateQueue; }).call(this,require('_process')) -},{"./Object.assign":54,"./ReactCurrentOwner":67,"./ReactElement":85,"./ReactInstanceMap":95,"./ReactLifeCycle":96,"./ReactUpdates":115,"./invariant":163,"./warning":182,"_process":27}],115:[function(require,module,exports){ +},{"./Object.assign":55,"./ReactCurrentOwner":68,"./ReactElement":86,"./ReactInstanceMap":96,"./ReactLifeCycle":97,"./ReactUpdates":116,"./invariant":164,"./warning":183,"_process":28}],116:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -30838,7 +30896,7 @@ var ReactUpdates = { module.exports = ReactUpdates; }).call(this,require('_process')) -},{"./CallbackQueue":33,"./Object.assign":54,"./PooledClass":55,"./ReactCurrentOwner":67,"./ReactPerf":103,"./ReactReconciler":109,"./Transaction":131,"./invariant":163,"./warning":182,"_process":27}],116:[function(require,module,exports){ +},{"./CallbackQueue":34,"./Object.assign":55,"./PooledClass":56,"./ReactCurrentOwner":68,"./ReactPerf":104,"./ReactReconciler":110,"./Transaction":132,"./invariant":164,"./warning":183,"_process":28}],117:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -30932,7 +30990,7 @@ var SVGDOMPropertyConfig = { module.exports = SVGDOMPropertyConfig; -},{"./DOMProperty":37}],117:[function(require,module,exports){ +},{"./DOMProperty":38}],118:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31127,7 +31185,7 @@ var SelectEventPlugin = { module.exports = SelectEventPlugin; -},{"./EventConstants":42,"./EventPropagators":47,"./ReactInputSelection":93,"./SyntheticEvent":123,"./getActiveElement":149,"./isTextInputElement":166,"./keyOf":169,"./shallowEqual":178}],118:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPropagators":48,"./ReactInputSelection":94,"./SyntheticEvent":124,"./getActiveElement":150,"./isTextInputElement":167,"./keyOf":170,"./shallowEqual":179}],119:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31158,7 +31216,7 @@ var ServerReactRootIndex = { module.exports = ServerReactRootIndex; -},{}],119:[function(require,module,exports){ +},{}],120:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -31586,7 +31644,7 @@ var SimpleEventPlugin = { module.exports = SimpleEventPlugin; }).call(this,require('_process')) -},{"./EventConstants":42,"./EventPluginUtils":46,"./EventPropagators":47,"./SyntheticClipboardEvent":120,"./SyntheticDragEvent":122,"./SyntheticEvent":123,"./SyntheticFocusEvent":124,"./SyntheticKeyboardEvent":126,"./SyntheticMouseEvent":127,"./SyntheticTouchEvent":128,"./SyntheticUIEvent":129,"./SyntheticWheelEvent":130,"./getEventCharCode":150,"./invariant":163,"./keyOf":169,"./warning":182,"_process":27}],120:[function(require,module,exports){ +},{"./EventConstants":43,"./EventPluginUtils":47,"./EventPropagators":48,"./SyntheticClipboardEvent":121,"./SyntheticDragEvent":123,"./SyntheticEvent":124,"./SyntheticFocusEvent":125,"./SyntheticKeyboardEvent":127,"./SyntheticMouseEvent":128,"./SyntheticTouchEvent":129,"./SyntheticUIEvent":130,"./SyntheticWheelEvent":131,"./getEventCharCode":151,"./invariant":164,"./keyOf":170,"./warning":183,"_process":28}],121:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31631,7 +31689,7 @@ SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface); module.exports = SyntheticClipboardEvent; -},{"./SyntheticEvent":123}],121:[function(require,module,exports){ +},{"./SyntheticEvent":124}],122:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31676,7 +31734,7 @@ SyntheticEvent.augmentClass( module.exports = SyntheticCompositionEvent; -},{"./SyntheticEvent":123}],122:[function(require,module,exports){ +},{"./SyntheticEvent":124}],123:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31715,7 +31773,7 @@ SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface); module.exports = SyntheticDragEvent; -},{"./SyntheticMouseEvent":127}],123:[function(require,module,exports){ +},{"./SyntheticMouseEvent":128}],124:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31881,7 +31939,7 @@ PooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler); module.exports = SyntheticEvent; -},{"./Object.assign":54,"./PooledClass":55,"./emptyFunction":142,"./getEventTarget":153}],124:[function(require,module,exports){ +},{"./Object.assign":55,"./PooledClass":56,"./emptyFunction":143,"./getEventTarget":154}],125:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31920,7 +31978,7 @@ SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface); module.exports = SyntheticFocusEvent; -},{"./SyntheticUIEvent":129}],125:[function(require,module,exports){ +},{"./SyntheticUIEvent":130}],126:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -31966,7 +32024,7 @@ SyntheticEvent.augmentClass( module.exports = SyntheticInputEvent; -},{"./SyntheticEvent":123}],126:[function(require,module,exports){ +},{"./SyntheticEvent":124}],127:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32053,7 +32111,7 @@ SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface); module.exports = SyntheticKeyboardEvent; -},{"./SyntheticUIEvent":129,"./getEventCharCode":150,"./getEventKey":151,"./getEventModifierState":152}],127:[function(require,module,exports){ +},{"./SyntheticUIEvent":130,"./getEventCharCode":151,"./getEventKey":152,"./getEventModifierState":153}],128:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32134,7 +32192,7 @@ SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface); module.exports = SyntheticMouseEvent; -},{"./SyntheticUIEvent":129,"./ViewportMetrics":132,"./getEventModifierState":152}],128:[function(require,module,exports){ +},{"./SyntheticUIEvent":130,"./ViewportMetrics":133,"./getEventModifierState":153}],129:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32182,7 +32240,7 @@ SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface); module.exports = SyntheticTouchEvent; -},{"./SyntheticUIEvent":129,"./getEventModifierState":152}],129:[function(require,module,exports){ +},{"./SyntheticUIEvent":130,"./getEventModifierState":153}],130:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32244,7 +32302,7 @@ SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface); module.exports = SyntheticUIEvent; -},{"./SyntheticEvent":123,"./getEventTarget":153}],130:[function(require,module,exports){ +},{"./SyntheticEvent":124,"./getEventTarget":154}],131:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32305,7 +32363,7 @@ SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface); module.exports = SyntheticWheelEvent; -},{"./SyntheticMouseEvent":127}],131:[function(require,module,exports){ +},{"./SyntheticMouseEvent":128}],132:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -32546,7 +32604,7 @@ var Transaction = { module.exports = Transaction; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],132:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],133:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32575,7 +32633,7 @@ var ViewportMetrics = { module.exports = ViewportMetrics; -},{}],133:[function(require,module,exports){ +},{}],134:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -32641,7 +32699,7 @@ function accumulateInto(current, next) { module.exports = accumulateInto; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],134:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],135:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32675,7 +32733,7 @@ function adler32(data) { module.exports = adler32; -},{}],135:[function(require,module,exports){ +},{}],136:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32707,7 +32765,7 @@ function camelize(string) { module.exports = camelize; -},{}],136:[function(require,module,exports){ +},{}],137:[function(require,module,exports){ /** * Copyright 2014-2015, Facebook, Inc. * All rights reserved. @@ -32749,7 +32807,7 @@ function camelizeStyleName(string) { module.exports = camelizeStyleName; -},{"./camelize":135}],137:[function(require,module,exports){ +},{"./camelize":136}],138:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32793,7 +32851,7 @@ function containsNode(outerNode, innerNode) { module.exports = containsNode; -},{"./isTextNode":167}],138:[function(require,module,exports){ +},{"./isTextNode":168}],139:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -32879,7 +32937,7 @@ function createArrayFromMixed(obj) { module.exports = createArrayFromMixed; -},{"./toArray":180}],139:[function(require,module,exports){ +},{"./toArray":181}],140:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -32941,7 +32999,7 @@ function createFullPageComponent(tag) { module.exports = createFullPageComponent; }).call(this,require('_process')) -},{"./ReactClass":61,"./ReactElement":85,"./invariant":163,"_process":27}],140:[function(require,module,exports){ +},{"./ReactClass":62,"./ReactElement":86,"./invariant":164,"_process":28}],141:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -33031,7 +33089,7 @@ function createNodesFromMarkup(markup, handleScript) { module.exports = createNodesFromMarkup; }).call(this,require('_process')) -},{"./ExecutionEnvironment":48,"./createArrayFromMixed":138,"./getMarkupWrap":155,"./invariant":163,"_process":27}],141:[function(require,module,exports){ +},{"./ExecutionEnvironment":49,"./createArrayFromMixed":139,"./getMarkupWrap":156,"./invariant":164,"_process":28}],142:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33089,7 +33147,7 @@ function dangerousStyleValue(name, value) { module.exports = dangerousStyleValue; -},{"./CSSProperty":31}],142:[function(require,module,exports){ +},{"./CSSProperty":32}],143:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33123,7 +33181,7 @@ emptyFunction.thatReturnsArgument = function(arg) { return arg; }; module.exports = emptyFunction; -},{}],143:[function(require,module,exports){ +},{}],144:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -33147,7 +33205,7 @@ if ("production" !== process.env.NODE_ENV) { module.exports = emptyObject; }).call(this,require('_process')) -},{"_process":27}],144:[function(require,module,exports){ +},{"_process":28}],145:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33187,7 +33245,7 @@ function escapeTextContentForBrowser(text) { module.exports = escapeTextContentForBrowser; -},{}],145:[function(require,module,exports){ +},{}],146:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -33260,7 +33318,7 @@ function findDOMNode(componentOrElement) { module.exports = findDOMNode; }).call(this,require('_process')) -},{"./ReactCurrentOwner":67,"./ReactInstanceMap":95,"./ReactMount":98,"./invariant":163,"./isNode":165,"./warning":182,"_process":27}],146:[function(require,module,exports){ +},{"./ReactCurrentOwner":68,"./ReactInstanceMap":96,"./ReactMount":99,"./invariant":164,"./isNode":166,"./warning":183,"_process":28}],147:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -33318,7 +33376,7 @@ function flattenChildren(children) { module.exports = flattenChildren; }).call(this,require('_process')) -},{"./traverseAllChildren":181,"./warning":182,"_process":27}],147:[function(require,module,exports){ +},{"./traverseAllChildren":182,"./warning":183,"_process":28}],148:[function(require,module,exports){ /** * Copyright 2014-2015, Facebook, Inc. * All rights reserved. @@ -33347,7 +33405,7 @@ function focusNode(node) { module.exports = focusNode; -},{}],148:[function(require,module,exports){ +},{}],149:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33378,7 +33436,7 @@ var forEachAccumulated = function(arr, cb, scope) { module.exports = forEachAccumulated; -},{}],149:[function(require,module,exports){ +},{}],150:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33407,7 +33465,7 @@ function getActiveElement() /*?DOMElement*/ { module.exports = getActiveElement; -},{}],150:[function(require,module,exports){ +},{}],151:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33459,7 +33517,7 @@ function getEventCharCode(nativeEvent) { module.exports = getEventCharCode; -},{}],151:[function(require,module,exports){ +},{}],152:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33564,7 +33622,7 @@ function getEventKey(nativeEvent) { module.exports = getEventKey; -},{"./getEventCharCode":150}],152:[function(require,module,exports){ +},{"./getEventCharCode":151}],153:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33611,7 +33669,7 @@ function getEventModifierState(nativeEvent) { module.exports = getEventModifierState; -},{}],153:[function(require,module,exports){ +},{}],154:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33642,7 +33700,7 @@ function getEventTarget(nativeEvent) { module.exports = getEventTarget; -},{}],154:[function(require,module,exports){ +},{}],155:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33686,7 +33744,7 @@ function getIteratorFn(maybeIterable) { module.exports = getIteratorFn; -},{}],155:[function(require,module,exports){ +},{}],156:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -33805,7 +33863,7 @@ function getMarkupWrap(nodeName) { module.exports = getMarkupWrap; }).call(this,require('_process')) -},{"./ExecutionEnvironment":48,"./invariant":163,"_process":27}],156:[function(require,module,exports){ +},{"./ExecutionEnvironment":49,"./invariant":164,"_process":28}],157:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33880,7 +33938,7 @@ function getNodeForCharacterOffset(root, offset) { module.exports = getNodeForCharacterOffset; -},{}],157:[function(require,module,exports){ +},{}],158:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33915,7 +33973,7 @@ function getReactRootElementInContainer(container) { module.exports = getReactRootElementInContainer; -},{}],158:[function(require,module,exports){ +},{}],159:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33952,7 +34010,7 @@ function getTextContentAccessor() { module.exports = getTextContentAccessor; -},{"./ExecutionEnvironment":48}],159:[function(require,module,exports){ +},{"./ExecutionEnvironment":49}],160:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -33992,7 +34050,7 @@ function getUnboundedScrollPosition(scrollable) { module.exports = getUnboundedScrollPosition; -},{}],160:[function(require,module,exports){ +},{}],161:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34025,7 +34083,7 @@ function hyphenate(string) { module.exports = hyphenate; -},{}],161:[function(require,module,exports){ +},{}],162:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34066,7 +34124,7 @@ function hyphenateStyleName(string) { module.exports = hyphenateStyleName; -},{"./hyphenate":160}],162:[function(require,module,exports){ +},{"./hyphenate":161}],163:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -34204,7 +34262,7 @@ function instantiateReactComponent(node, parentCompositeType) { module.exports = instantiateReactComponent; }).call(this,require('_process')) -},{"./Object.assign":54,"./ReactCompositeComponent":65,"./ReactEmptyComponent":87,"./ReactNativeComponent":101,"./invariant":163,"./warning":182,"_process":27}],163:[function(require,module,exports){ +},{"./Object.assign":55,"./ReactCompositeComponent":66,"./ReactEmptyComponent":88,"./ReactNativeComponent":102,"./invariant":164,"./warning":183,"_process":28}],164:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -34261,7 +34319,7 @@ var invariant = function(condition, format, a, b, c, d, e, f) { module.exports = invariant; }).call(this,require('_process')) -},{"_process":27}],164:[function(require,module,exports){ +},{"_process":28}],165:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34326,7 +34384,7 @@ function isEventSupported(eventNameSuffix, capture) { module.exports = isEventSupported; -},{"./ExecutionEnvironment":48}],165:[function(require,module,exports){ +},{"./ExecutionEnvironment":49}],166:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34353,7 +34411,7 @@ function isNode(object) { module.exports = isNode; -},{}],166:[function(require,module,exports){ +},{}],167:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34396,7 +34454,7 @@ function isTextInputElement(elem) { module.exports = isTextInputElement; -},{}],167:[function(require,module,exports){ +},{}],168:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34421,7 +34479,7 @@ function isTextNode(object) { module.exports = isTextNode; -},{"./isNode":165}],168:[function(require,module,exports){ +},{"./isNode":166}],169:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -34476,7 +34534,7 @@ var keyMirror = function(obj) { module.exports = keyMirror; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],169:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],170:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34512,7 +34570,7 @@ var keyOf = function(oneKeyObj) { module.exports = keyOf; -},{}],170:[function(require,module,exports){ +},{}],171:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34565,7 +34623,7 @@ function mapObject(object, callback, context) { module.exports = mapObject; -},{}],171:[function(require,module,exports){ +},{}],172:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34598,7 +34656,7 @@ function memoizeStringOnly(callback) { module.exports = memoizeStringOnly; -},{}],172:[function(require,module,exports){ +},{}],173:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -34638,7 +34696,7 @@ function onlyChild(children) { module.exports = onlyChild; }).call(this,require('_process')) -},{"./ReactElement":85,"./invariant":163,"_process":27}],173:[function(require,module,exports){ +},{"./ReactElement":86,"./invariant":164,"_process":28}],174:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34666,7 +34724,7 @@ if (ExecutionEnvironment.canUseDOM) { module.exports = performance || {}; -},{"./ExecutionEnvironment":48}],174:[function(require,module,exports){ +},{"./ExecutionEnvironment":49}],175:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34694,7 +34752,7 @@ var performanceNow = performance.now.bind(performance); module.exports = performanceNow; -},{"./performance":173}],175:[function(require,module,exports){ +},{"./performance":174}],176:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34722,7 +34780,7 @@ function quoteAttributeValueForBrowser(value) { module.exports = quoteAttributeValueForBrowser; -},{"./escapeTextContentForBrowser":144}],176:[function(require,module,exports){ +},{"./escapeTextContentForBrowser":145}],177:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34811,7 +34869,7 @@ if (ExecutionEnvironment.canUseDOM) { module.exports = setInnerHTML; -},{"./ExecutionEnvironment":48}],177:[function(require,module,exports){ +},{"./ExecutionEnvironment":49}],178:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34853,7 +34911,7 @@ if (ExecutionEnvironment.canUseDOM) { module.exports = setTextContent; -},{"./ExecutionEnvironment":48,"./escapeTextContentForBrowser":144,"./setInnerHTML":176}],178:[function(require,module,exports){ +},{"./ExecutionEnvironment":49,"./escapeTextContentForBrowser":145,"./setInnerHTML":177}],179:[function(require,module,exports){ /** * Copyright 2013-2015, Facebook, Inc. * All rights reserved. @@ -34897,7 +34955,7 @@ function shallowEqual(objA, objB) { module.exports = shallowEqual; -},{}],179:[function(require,module,exports){ +},{}],180:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -35001,7 +35059,7 @@ function shouldUpdateReactComponent(prevElement, nextElement) { module.exports = shouldUpdateReactComponent; }).call(this,require('_process')) -},{"./warning":182,"_process":27}],180:[function(require,module,exports){ +},{"./warning":183,"_process":28}],181:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -35073,7 +35131,7 @@ function toArray(obj) { module.exports = toArray; }).call(this,require('_process')) -},{"./invariant":163,"_process":27}],181:[function(require,module,exports){ +},{"./invariant":164,"_process":28}],182:[function(require,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -35326,7 +35384,7 @@ function traverseAllChildren(children, callback, traverseContext) { module.exports = traverseAllChildren; }).call(this,require('_process')) -},{"./ReactElement":85,"./ReactFragment":91,"./ReactInstanceHandles":94,"./getIteratorFn":154,"./invariant":163,"./warning":182,"_process":27}],182:[function(require,module,exports){ +},{"./ReactElement":86,"./ReactFragment":92,"./ReactInstanceHandles":95,"./getIteratorFn":155,"./invariant":164,"./warning":183,"_process":28}],183:[function(require,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -35389,7 +35447,7 @@ if ("production" !== process.env.NODE_ENV) { module.exports = warning; }).call(this,require('_process')) -},{"./emptyFunction":142,"_process":27}],183:[function(require,module,exports){ +},{"./emptyFunction":143,"_process":28}],184:[function(require,module,exports){ module.exports = require('./lib/React'); -},{"./lib/React":56}]},{},[1]); +},{"./lib/React":57}]},{},[1]); diff --git a/public/js/events.js b/public/js/events.js index 5b88e95..5031b85 100644 --- a/public/js/events.js +++ b/public/js/events.js @@ -135,7 +135,9 @@ var config = { tooltips: { allGood: '', notLogging: 'Not logging', - notSignedIn: 'Not signed In' + notSignedIn: 'Not signed In', + blacklisted: 'This URL is blacklisted', + whitelisted: 'This URL is not on your whitelist' }, // Default theme theme: 'light', @@ -180,6 +182,7 @@ var getDomainFromUrl = require('./../helpers/getDomainFromUrl'); var currentTimestamp = require('./../helpers/currentTimestamp'); var changeExtensionState = require('../helpers/changeExtensionState'); var in_array = require('./../helpers/in_array'); +var contains = require('./../helpers/contains'); var WakaTime = (function () { function WakaTime() { @@ -266,7 +269,10 @@ var WakaTime = (function () { if (data !== false) { chrome.storage.sync.get({ - loggingEnabled: config.loggingEnabled + loggingEnabled: config.loggingEnabled, + loggingStyle: config.loggingStyle, + blacklist: '', + whitelist: '' }, function (items) { if (items.loggingEnabled === true) { @@ -277,11 +283,30 @@ var WakaTime = (function () { if (newState === 'active') { // Get current tab URL. chrome.tabs.query({ active: true }, function (tabs) { + + var currentActiveTab = tabs[0]; + var debug = false; // If the current active tab has devtools open - if (in_array(tabs[0].id, _this.tabsWithDevtoolsOpen)) debug = true; + if (in_array(currentActiveTab.id, _this.tabsWithDevtoolsOpen)) debug = true; - _this.sendHeartbeat(tabs[0].url, debug); + if (items.loggingStyle == 'blacklist') { + if (!contains(currentActiveTab.url, items.blacklist)) { + _this.sendHeartbeat(currentActiveTab.url, debug); + } else { + changeExtensionState('blacklisted'); + console.log(currentActiveTab.url + ' is on a blacklist.'); + } + } + + if (items.loggingStyle == 'whitelist') { + if (contains(currentActiveTab.url, items.whitelist)) { + _this.sendHeartbeat(currentActiveTab.url, debug); + } else { + changeExtensionState('whitelisted'); + console.log(currentActiveTab.url + ' is not on a whitelist.'); + } + } }); } }); @@ -423,7 +448,7 @@ var WakaTime = (function () { exports['default'] = WakaTime; module.exports = exports['default']; -},{"../helpers/changeExtensionState":5,"./../config":2,"./../helpers/currentTimestamp":7,"./../helpers/getDomainFromUrl":8,"./../helpers/in_array":9,"jquery":10,"moment":11}],4:[function(require,module,exports){ +},{"../helpers/changeExtensionState":5,"./../config":2,"./../helpers/contains":7,"./../helpers/currentTimestamp":8,"./../helpers/getDomainFromUrl":9,"./../helpers/in_array":10,"jquery":11,"moment":12}],4:[function(require,module,exports){ /* global chrome */ 'use strict'; @@ -508,12 +533,20 @@ function changeExtensionState(state) { changeExtensionIcon(config.colors.notSignedIn); changeExtensionTooltip(config.tooltips.notSignedIn); break; + case 'blacklisted': + changeExtensionIcon(config.colors.notLogging); + changeExtensionTooltip(config.tooltips.blacklisted); + break; + case 'whitelisted': + changeExtensionIcon(config.colors.notLogging); + changeExtensionTooltip(config.tooltips.whitelisted); + break; } } module.exports = changeExtensionState; -},{"../config":2,"./changeExtensionIcon":4,"./changeExtensionTooltip":6,"./in_array":9}],6:[function(require,module,exports){ +},{"../config":2,"./changeExtensionIcon":4,"./changeExtensionTooltip":6,"./in_array":10}],6:[function(require,module,exports){ /* global chrome */ 'use strict'; @@ -539,6 +572,31 @@ function changeExtensionTooltip(text) { module.exports = changeExtensionTooltip; },{"../config":2}],7:[function(require,module,exports){ +/** + * Creates an array from list using \n as delimiter + * and checks if the line is located in the list. + * + * @param line + * @param list + * @returns {boolean} + */ +'use strict'; + +function contains(line, list) { + var lines = list.split('\n'); + + for (var i = 0; i < lines.length; i++) { + if (line.indexOf(lines[i]) > -1) { + return true; + } + } + + return false; +} + +module.exports = contains; + +},{}],8:[function(require,module,exports){ /** * Returns UNIX timestamp * @@ -552,7 +610,7 @@ function currentTimestamp() { module.exports = currentTimestamp; -},{}],8:[function(require,module,exports){ +},{}],9:[function(require,module,exports){ /** * Returns domain from given URL. * @@ -569,7 +627,7 @@ function getDomainFromUrl(url) { module.exports = getDomainFromUrl; -},{}],9:[function(require,module,exports){ +},{}],10:[function(require,module,exports){ /** * Returns boolean if needle is found in haystack or not. * @@ -591,7 +649,7 @@ function in_array(needle, haystack) { module.exports = in_array; -},{}],10:[function(require,module,exports){ +},{}],11:[function(require,module,exports){ /*! * jQuery JavaScript Library v2.1.4 * http://jquery.com/ @@ -9803,7 +9861,7 @@ return jQuery; })); -},{}],11:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ //! moment.js //! version : 2.10.3 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors diff --git a/public/js/options.js b/public/js/options.js index c1a51f6..8850509 100644 --- a/public/js/options.js +++ b/public/js/options.js @@ -395,7 +395,9 @@ var config = { tooltips: { allGood: '', notLogging: 'Not logging', - notSignedIn: 'Not signed In' + notSignedIn: 'Not signed In', + blacklisted: 'This URL is blacklisted', + whitelisted: 'This URL is not on your whitelist' }, // Default theme theme: 'light', diff --git a/tests/helpers/contains.spec.js b/tests/helpers/contains.spec.js new file mode 100644 index 0000000..085aee1 --- /dev/null +++ b/tests/helpers/contains.spec.js @@ -0,0 +1,10 @@ +var chai = require('chai'); +var expect = chai.expect; + +import contains from '../../assets/js/helpers/contains'; + +describe('contains', function() { + it('should be a function', function() { + expect(contains).to.be.a('function'); + }); +}); \ No newline at end of file