UNPKG

bevspot-react-nvd3

Version:

React nvd3 reusable graph components.

1,616 lines (1,324 loc) 619 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("d3")); else if(typeof define === 'function' && define.amd) define(["react", "d3"], factory); else if(typeof exports === 'object') exports["NVD3Chart"] = factory(require("react"), require("d3")); else root["NVD3Chart"] = factory(root["React"], root["d3"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_58__, __WEBPACK_EXTERNAL_MODULE_59__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = __webpack_require__(1); var _extends3 = _interopRequireDefault(_extends2); var _keys = __webpack_require__(17); var _keys2 = _interopRequireDefault(_keys); var _typeof2 = __webpack_require__(21); var _typeof3 = _interopRequireDefault(_typeof2); var _getPrototypeOf = __webpack_require__(43); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = __webpack_require__(46); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(47); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = __webpack_require__(50); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = __webpack_require__(51); var _inherits3 = _interopRequireDefault(_inherits2); var _react = __webpack_require__(58); var _react2 = _interopRequireDefault(_react); var _d = __webpack_require__(59); var _d2 = _interopRequireDefault(_d); var _bevspotNvd = __webpack_require__(60); var _bevspotNvd2 = _interopRequireDefault(_bevspotNvd); var _utils = __webpack_require__(61); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var SETTINGS = ['x', 'y', 'type', 'datum', 'configure', 'tooltip', 'legend']; var AXIS_NAMES = ['xAxis', 'yAxis', 'y1Axis', 'y2Axis', 'y3Axis', 'y4Axis', 'x2Axis', 'yAxis1']; var SIZE = ['width', 'height']; var MARGIN = 'margin'; var LEGEND = 'legend'; var TOOLTIP = 'tooltip'; var NVD3Chart = function (_React$Component) { (0, _inherits3.default)(NVD3Chart, _React$Component); function NVD3Chart() { (0, _classCallCheck3.default)(this, NVD3Chart); return (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(NVD3Chart).apply(this, arguments)); } (0, _createClass3.default)(NVD3Chart, [{ key: 'componentDidMount', /** * Instantiate a new chart setting * a callback if exists */ value: function componentDidMount() { _bevspotNvd2.default.addGraph(this.renderChart.bind(this), this.props.renderEnd); } /** * Update the chart after state is changed. */ }, { key: 'componentDidUpdate', value: function componentDidUpdate() { this.renderChart(); } /** * Remove listeners */ }, { key: 'componentWillUnmount', value: function componentWillUnmount() { this.resizeHandler.clear(); } /** * Creates a chart model and render it */ }, { key: 'renderChart', value: function renderChart() { // Margins are an special case. It needs to be // passed to the margin function. this.chart = this.chart || _bevspotNvd2.default.models[this.props.type](); this.chart.x(this.getValueFunction(this.props.x, 'x')).y(this.getValueFunction(this.props.y, 'y')).margin(this.options(MARGIN, _utils.pick).margin || this.propsByPrefix('margin') || {}).options(this.options(SETTINGS.concat(AXIS_NAMES, SIZE, MARGIN), _utils.without)); // We need to set the axis, legend and tooltip components separatly this.configureComponents(this.chart, this.options(AXIS_NAMES.concat(TOOLTIP, LEGEND))); // hook for configuring the chart !this.props.configure || this.props.configure(this.chart); // Render chart using d3 _d2.default.select(this.refs.svg).datum(this.props.datum).call(this.chart); // Update the chart if the window size change. // Save resizeHandle to remove the resize listener later. if (!this.resizeHandler) this.resizeHandler = _bevspotNvd2.default.utils.windowResize(this.chart.update); return this.chart; } /** * Configure components recursively * @param {nvd3 chart} chart A nvd3 chart instance * @param {object} options A key value object */ }, { key: 'configureComponents', value: function configureComponents(chart, options) { for (var optionName in options) { var optionValue = options[optionName]; if (chart) { if ((typeof optionValue === 'undefined' ? 'undefined' : (0, _typeof3.default)(optionValue)) === 'object' && !(optionValue instanceof Array)) { this.configureComponents(chart[optionName], optionValue); } else if (typeof chart[optionName] === 'function') { chart[optionName](optionValue); } } } } /** * Filter options base on predicates * @param {Array} keys An array of keys to preserve or remove * @param {Function} predicate The function used to filter keys */ }, { key: 'options', value: function options(keys, predicate) { if (this.props.chartOptions) console.warn('chartOptions is deprecated use options instead'); // DEPRECATED: this.props.chartOptions var opt = this.props.options || this.props.chartOptions || this.props; predicate = predicate || _utils.pick; return predicate(opt, keys); } /** * Allow to use either a value or a function to * @param {[type]} v Either a getter or a function name * @param {String} _default A default string used as getter * @return {Function} Returns a function to use as getter */ }, { key: 'getValueFunction', value: function getValueFunction(v, _default) { if (typeof v === 'function') return v; return function (d) { return typeof d[v] !== 'undefined' ? d[v] : d[_default]; }; } /** * Get properties using a prefix * @param {String} prefix * @return {[type]} Return an object with wanted keys * DEPRECATED: This was created only for margins and * since we changed the api we don't need this anymore. */ }, { key: 'propsByPrefix', value: function propsByPrefix(prefix) { var _this2 = this; console.warn('Set margin with prefixes is deprecated use an object instead'); prefix = prefix + '-'; return (0, _keys2.default)(this.props).reduce(function (memo, prop) { if (prop.startsWith(prefix)) memo[prop.replace(prefix, '')] = _this2.props[prop]; return memo; }, {}); } /** * Render function * svg element needs to have height and width. */ }, { key: 'render', value: function render() { return _react2.default.createElement( 'div', { ref: 'root', className: 'nv-chart' }, _react2.default.createElement('svg', (0, _extends3.default)({ ref: 'svg' }, (0, _utils.pick)(this.props, SIZE))) ); } }]); return NVD3Chart; }(_react2.default.Component); // Babel 6 issue: http://stackoverflow.com/questions/33505992/babel-6-changes-how-it-exports-default exports.default = NVD3Chart; module.exports = NVD3Chart; /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { "use strict"; var _Object$assign = __webpack_require__(2)["default"]; exports["default"] = _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; }; exports.__esModule = true; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(3), __esModule: true }; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(4); module.exports = __webpack_require__(7).Object.assign; /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { // 19.1.3.1 Object.assign(target, source) var $export = __webpack_require__(5); $export($export.S + $export.F, 'Object', {assign: __webpack_require__(10)}); /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(6) , core = __webpack_require__(7) , ctx = __webpack_require__(8) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && key in target; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(param){ return this instanceof C ? new C(param) : C(param); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out; } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap module.exports = $export; /***/ }, /* 6 */ /***/ function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }, /* 7 */ /***/ function(module, exports) { var core = module.exports = {version: '1.2.6'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }, /* 8 */ /***/ function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(9); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; /***/ }, /* 9 */ /***/ function(module, exports) { module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.1 Object.assign(target, source, ...) var $ = __webpack_require__(11) , toObject = __webpack_require__(12) , IObject = __webpack_require__(14); // should work with symbols and should have deterministic property order (V8 bug) module.exports = __webpack_require__(16)(function(){ var a = Object.assign , A = {} , B = {} , S = Symbol() , K = 'abcdefghijklmnopqrst'; A[S] = 7; K.split('').forEach(function(k){ B[k] = k; }); return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K; }) ? function assign(target, source){ // eslint-disable-line no-unused-vars var T = toObject(target) , $$ = arguments , $$len = $$.length , index = 1 , getKeys = $.getKeys , getSymbols = $.getSymbols , isEnum = $.isEnum; while($$len > index){ var S = IObject($$[index++]) , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) , length = keys.length , j = 0 , key; while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; } return T; } : Object.assign; /***/ }, /* 11 */ /***/ function(module, exports) { var $Object = Object; module.exports = { create: $Object.create, getProto: $Object.getPrototypeOf, isEnum: {}.propertyIsEnumerable, getDesc: $Object.getOwnPropertyDescriptor, setDesc: $Object.defineProperty, setDescs: $Object.defineProperties, getKeys: $Object.keys, getNames: $Object.getOwnPropertyNames, getSymbols: $Object.getOwnPropertySymbols, each: [].forEach }; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(13); module.exports = function(it){ return Object(defined(it)); }; /***/ }, /* 13 */ /***/ function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; /***/ }, /* 14 */ /***/ function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(15); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }, /* 15 */ /***/ function(module, exports) { var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; /***/ }, /* 16 */ /***/ function(module, exports) { module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(18), __esModule: true }; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(19); module.exports = __webpack_require__(7).Object.keys; /***/ }, /* 19 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 Object.keys(O) var toObject = __webpack_require__(12); __webpack_require__(20)('keys', function($keys){ return function keys(it){ return $keys(toObject(it)); }; }); /***/ }, /* 20 */ /***/ function(module, exports, __webpack_require__) { // most Object methods by ES6 should accept primitives var $export = __webpack_require__(5) , core = __webpack_require__(7) , fails = __webpack_require__(16); module.exports = function(KEY, exec){ var fn = (core.Object || {})[KEY] || Object[KEY] , exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); }; /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { "use strict"; var _Symbol = __webpack_require__(22)["default"]; exports["default"] = function (obj) { return obj && obj.constructor === _Symbol ? "symbol" : typeof obj; }; exports.__esModule = true; /***/ }, /* 22 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(23), __esModule: true }; /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(24); __webpack_require__(42); module.exports = __webpack_require__(7).Symbol; /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; // ECMAScript 6 symbols shim var $ = __webpack_require__(11) , global = __webpack_require__(6) , has = __webpack_require__(25) , DESCRIPTORS = __webpack_require__(26) , $export = __webpack_require__(5) , redefine = __webpack_require__(27) , $fails = __webpack_require__(16) , shared = __webpack_require__(30) , setToStringTag = __webpack_require__(31) , uid = __webpack_require__(33) , wks = __webpack_require__(32) , keyOf = __webpack_require__(34) , $names = __webpack_require__(36) , enumKeys = __webpack_require__(37) , isArray = __webpack_require__(38) , anObject = __webpack_require__(39) , toIObject = __webpack_require__(35) , createDesc = __webpack_require__(29) , getDesc = $.getDesc , setDesc = $.setDesc , _create = $.create , getNames = $names.get , $Symbol = global.Symbol , $JSON = global.JSON , _stringify = $JSON && $JSON.stringify , setter = false , HIDDEN = wks('_hidden') , isEnum = $.isEnum , SymbolRegistry = shared('symbol-registry') , AllSymbols = shared('symbols') , useNative = typeof $Symbol == 'function' , ObjectProto = Object.prototype; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDesc = DESCRIPTORS && $fails(function(){ return _create(setDesc({}, 'a', { get: function(){ return setDesc(this, 'a', {value: 7}).a; } })).a != 7; }) ? function(it, key, D){ var protoDesc = getDesc(ObjectProto, key); if(protoDesc)delete ObjectProto[key]; setDesc(it, key, D); if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc); } : setDesc; var wrap = function(tag){ var sym = AllSymbols[tag] = _create($Symbol.prototype); sym._k = tag; DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, { configurable: true, set: function(value){ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false; setSymbolDesc(this, tag, createDesc(1, value)); } }); return sym; }; var isSymbol = function(it){ return typeof it == 'symbol'; }; var $defineProperty = function defineProperty(it, key, D){ if(D && has(AllSymbols, key)){ if(!D.enumerable){ if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {})); it[HIDDEN][key] = true; } else { if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; D = _create(D, {enumerable: createDesc(0, false)}); } return setSymbolDesc(it, key, D); } return setDesc(it, key, D); }; var $defineProperties = function defineProperties(it, P){ anObject(it); var keys = enumKeys(P = toIObject(P)) , i = 0 , l = keys.length , key; while(l > i)$defineProperty(it, key = keys[i++], P[key]); return it; }; var $create = function create(it, P){ return P === undefined ? _create(it) : $defineProperties(_create(it), P); }; var $propertyIsEnumerable = function propertyIsEnumerable(key){ var E = isEnum.call(this, key); return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ var D = getDesc(it = toIObject(it), key); if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; return D; }; var $getOwnPropertyNames = function getOwnPropertyNames(it){ var names = getNames(toIObject(it)) , result = [] , i = 0 , key; while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key); return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ var names = getNames(toIObject(it)) , result = [] , i = 0 , key; while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]); return result; }; var $stringify = function stringify(it){ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined var args = [it] , i = 1 , $$ = arguments , replacer, $replacer; while($$.length > i)args.push($$[i++]); replacer = args[1]; if(typeof replacer == 'function')$replacer = replacer; if($replacer || !isArray(replacer))replacer = function(key, value){ if($replacer)value = $replacer.call(this, key, value); if(!isSymbol(value))return value; }; args[1] = replacer; return _stringify.apply($JSON, args); }; var buggyJSON = $fails(function(){ var S = $Symbol(); // MS Edge converts symbol values to JSON as {} // WebKit converts symbol values to JSON as null // V8 throws on boxed symbols return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; }); // 19.4.1.1 Symbol([description]) if(!useNative){ $Symbol = function Symbol(){ if(isSymbol(this))throw TypeError('Symbol is not a constructor'); return wrap(uid(arguments.length > 0 ? arguments[0] : undefined)); }; redefine($Symbol.prototype, 'toString', function toString(){ return this._k; }); isSymbol = function(it){ return it instanceof $Symbol; }; $.create = $create; $.isEnum = $propertyIsEnumerable; $.getDesc = $getOwnPropertyDescriptor; $.setDesc = $defineProperty; $.setDescs = $defineProperties; $.getNames = $names.get = $getOwnPropertyNames; $.getSymbols = $getOwnPropertySymbols; if(DESCRIPTORS && !__webpack_require__(41)){ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); } } var symbolStatics = { // 19.4.2.1 Symbol.for(key) 'for': function(key){ return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); }, // 19.4.2.5 Symbol.keyFor(sym) keyFor: function keyFor(key){ return keyOf(SymbolRegistry, key); }, useSetter: function(){ setter = true; }, useSimple: function(){ setter = false; } }; // 19.4.2.2 Symbol.hasInstance // 19.4.2.3 Symbol.isConcatSpreadable // 19.4.2.4 Symbol.iterator // 19.4.2.6 Symbol.match // 19.4.2.8 Symbol.replace // 19.4.2.9 Symbol.search // 19.4.2.10 Symbol.species // 19.4.2.11 Symbol.split // 19.4.2.12 Symbol.toPrimitive // 19.4.2.13 Symbol.toStringTag // 19.4.2.14 Symbol.unscopables $.each.call(( 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' + 'species,split,toPrimitive,toStringTag,unscopables' ).split(','), function(it){ var sym = wks(it); symbolStatics[it] = useNative ? sym : wrap(sym); }); setter = true; $export($export.G + $export.W, {Symbol: $Symbol}); $export($export.S, 'Symbol', symbolStatics); $export($export.S + $export.F * !useNative, 'Object', { // 19.1.2.2 Object.create(O [, Properties]) create: $create, // 19.1.2.4 Object.defineProperty(O, P, Attributes) defineProperty: $defineProperty, // 19.1.2.3 Object.defineProperties(O, Properties) defineProperties: $defineProperties, // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) getOwnPropertyDescriptor: $getOwnPropertyDescriptor, // 19.1.2.7 Object.getOwnPropertyNames(O) getOwnPropertyNames: $getOwnPropertyNames, // 19.1.2.8 Object.getOwnPropertySymbols(O) getOwnPropertySymbols: $getOwnPropertySymbols }); // 24.3.2 JSON.stringify(value [, replacer [, space]]) $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {stringify: $stringify}); // 19.4.3.5 Symbol.prototype[@@toStringTag] setToStringTag($Symbol, 'Symbol'); // 20.2.1.9 Math[@@toStringTag] setToStringTag(Math, 'Math', true); // 24.3.3 JSON[@@toStringTag] setToStringTag(global.JSON, 'JSON', true); /***/ }, /* 25 */ /***/ function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }, /* 26 */ /***/ function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(16)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(28); /***/ }, /* 28 */ /***/ function(module, exports, __webpack_require__) { var $ = __webpack_require__(11) , createDesc = __webpack_require__(29); module.exports = __webpack_require__(26) ? function(object, key, value){ return $.setDesc(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }, /* 29 */ /***/ function(module, exports) { module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; /***/ }, /* 30 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(6) , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; /***/ }, /* 31 */ /***/ function(module, exports, __webpack_require__) { var def = __webpack_require__(11).setDesc , has = __webpack_require__(25) , TAG = __webpack_require__(32)('toStringTag'); module.exports = function(it, tag, stat){ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); }; /***/ }, /* 32 */ /***/ function(module, exports, __webpack_require__) { var store = __webpack_require__(30)('wks') , uid = __webpack_require__(33) , Symbol = __webpack_require__(6).Symbol; module.exports = function(name){ return store[name] || (store[name] = Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name)); }; /***/ }, /* 33 */ /***/ function(module, exports) { var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }, /* 34 */ /***/ function(module, exports, __webpack_require__) { var $ = __webpack_require__(11) , toIObject = __webpack_require__(35); module.exports = function(object, el){ var O = toIObject(object) , keys = $.getKeys(O) , length = keys.length , index = 0 , key; while(length > index)if(O[key = keys[index++]] === el)return key; }; /***/ }, /* 35 */ /***/ function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(14) , defined = __webpack_require__(13); module.exports = function(it){ return IObject(defined(it)); }; /***/ }, /* 36 */ /***/ function(module, exports, __webpack_require__) { // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var toIObject = __webpack_require__(35) , getNames = __webpack_require__(11).getNames , toString = {}.toString; var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function(it){ try { return getNames(it); } catch(e){ return windowNames.slice(); } }; module.exports.get = function getOwnPropertyNames(it){ if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it); return getNames(toIObject(it)); }; /***/ }, /* 37 */ /***/ function(module, exports, __webpack_require__) { // all enumerable object keys, includes symbols var $ = __webpack_require__(11); module.exports = function(it){ var keys = $.getKeys(it) , getSymbols = $.getSymbols; if(getSymbols){ var symbols = getSymbols(it) , isEnum = $.isEnum , i = 0 , key; while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key); } return keys; }; /***/ }, /* 38 */ /***/ function(module, exports, __webpack_require__) { // 7.2.2 IsArray(argument) var cof = __webpack_require__(15); module.exports = Array.isArray || function(arg){ return cof(arg) == 'Array'; }; /***/ }, /* 39 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(40); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }, /* 40 */ /***/ function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }, /* 41 */ /***/ function(module, exports) { module.exports = true; /***/ }, /* 42 */ /***/ function(module, exports) { /***/ }, /* 43 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(44), __esModule: true }; /***/ }, /* 44 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(45); module.exports = __webpack_require__(7).Object.getPrototypeOf; /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.9 Object.getPrototypeOf(O) var toObject = __webpack_require__(12); __webpack_require__(20)('getPrototypeOf', function($getPrototypeOf){ return function getPrototypeOf(it){ return $getPrototypeOf(toObject(it)); }; }); /***/ }, /* 46 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; exports.default = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; /***/ }, /* 47 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _defineProperty = __webpack_require__(48); var _defineProperty2 = _interopRequireDefault(_defineProperty); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = (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; (0, _defineProperty2.default)(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); /***/ }, /* 48 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(49), __esModule: true }; /***/ }, /* 49 */ /***/ function(module, exports, __webpack_require__) { var $ = __webpack_require__(11); module.exports = function defineProperty(it, key, desc){ return $.setDesc(it, key, desc); }; /***/ }, /* 50 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _typeof2 = __webpack_require__(21); var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self; }; /***/ }, /* 51 */ /***/ function(module, exports, __webpack_require__) { "use strict"; var _Object$create = __webpack_require__(52)["default"]; var _Object$setPrototypeOf = __webpack_require__(54)["default"]; exports["default"] = function (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; }; exports.__esModule = true; /***/ }, /* 52 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(53), __esModule: true }; /***/ }, /* 53 */ /***/ function(module, exports, __webpack_require__) { var $ = __webpack_require__(11); module.exports = function create(P, D){ return $.create(P, D); }; /***/ }, /* 54 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(55), __esModule: true }; /***/ }, /* 55 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(56); module.exports = __webpack_require__(7).Object.setPrototypeOf; /***/ }, /* 56 */ /***/ function(module, exports, __webpack_require__) { // 19.1.3.19 Object.setPrototypeOf(O, proto) var $export = __webpack_require__(5); $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(57).set}); /***/ }, /* 57 */ /***/ function(module, exports, __webpack_require__) { // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ var getDesc = __webpack_require__(11).getDesc , isObject = __webpack_require__(40) , anObject = __webpack_require__(39); var check = function(O, proto){ anObject(O); if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); }; module.exports = { set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line function(test, buggy, set){ try { set = __webpack_require__(8)(Function.call, getDesc(Object.prototype, '__proto__').set, 2); set(test, []); buggy = !(test instanceof Array); } catch(e){ buggy = true; } return function setPrototypeOf(O, proto){ check(O, proto); if(buggy)O.__proto__ = proto; else set(O, proto); return O; }; }({}, false) : undefined), check: check }; /***/ }, /* 58 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_58__; /***/ }, /* 59 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_59__; /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { /* nvd3 version 1.8.1-dev (https://github.com/novus/nvd3) 2016-02-25 */ (function(){ // set up main nv object var nv = {}; // the major global objects under the nv namespace nv.dev = false; //set false when in production nv.tooltip = nv.tooltip || {}; // For the tooltip system nv.utils = nv.utils || {}; // Utility subsystem nv.models = nv.models || {}; //stores all the possible models/components nv.charts = {}; //stores all the ready to use charts nv.logs = {}; //stores some statistics and potential error messages nv.dom = {}; //DOM manipulation functions nv.dispatch = d3.dispatch('render_start', 'render_end'); // Function bind polyfill // Needed ONLY for phantomJS as it's missing until version 2.0 which is unreleased as of this comment // https://github.com/ariya/phantomjs/issues/10522 // http://kangax.github.io/compat-table/es5/#Function.prototype.bind // phantomJS is used for running the test suite if (!Function.prototype.bind) { Function.prototype.bind = function (oThis) { if (typeof this !== "function") { // closest thing possible to the ECMAScript 5 internal IsCallable function throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); } var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function () {}, fBound = function () { return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); }; fNOP.prototype = this.prototype; fBound.prototype = new fNOP(); return fBound; }; } // Development render timers - disabled if dev = false if (nv.dev) { nv.dispatch.on('render_start', function(e) { nv.logs.startTime = +new Date(); }); nv.dispatch.on('render_end', function(e) { nv.logs.endTime = +new Date(); nv.logs.totalTime = nv.logs.endTime - nv.logs.startTime; nv.log('total', nv.logs.totalTime); // used for development, to keep track of graph generation times }); } // Logs all arguments, and returns the last so you can test things in place // Note: in IE8 console.log is an object not a function, and if modernizr is used // then calling Function.prototype.bind with with anything other than a function // causes a TypeError to be thrown. nv.log = function() { if (nv.dev && window.console && console.log && console.log.apply) console.log.apply(console, arguments); else if (nv.dev && window.console && typeof console.log == "function" && Function.prototype.bind) { var log = Function.prototype.bind.call(console.log, console); log.apply(console, arguments); } return arguments[arguments.length - 1]; }; // print console warning, should be used by deprecated functions nv.deprecated = function(name, info) { if (console && console.warn) { console.warn('nvd3 warning: `' + name + '` has been deprecated. ', info || ''); } }; // The nv.render function is used to queue up chart rendering // in non-blocking async functions. // When all queued charts are done rendering, nv.dispatch.render_end is invoked. nv.render = function render(step) { // number of graphs to generate in each timeout loop step = step || 1; nv.render.active = true; nv.dispatch.render_start(); var renderLoop = function() { var chart, graph; for (var i = 0; i < step && (graph = nv.render.queue[i]); i++) { chart = graph.generate(); if (typeof graph.callback == typeof(Function)) graph.callback(chart); } nv.render.queue.splice(0, i); if (nv.render.queue.length) { setTimeout(renderLoop); } else { nv.dispatch.render_end(); nv.render.active = false; } }; setTimeout(renderLoop); }; nv.render.active = false; nv.render.queue = []; /* Adds a chart to the async rendering queue. This method can take arguments in two forms: nv.addGraph({ generate: <Function> callback: <Function> }) or nv.addGraph(<generate Function>, <callback Function>) The generate function should contain code that creates the NVD3 model, sets options on it, adds data to an SVG element, and invokes the chart model. The generate function should return the chart model. See examples/lineChart.html for a usage example. The callback function is optional, and it is called when the generate function completes. */ nv.addGraph = function(obj) { if (typeof arguments[0] === typeof(Function)) { obj = {generate: arguments[0], callback: arguments[1]}; } nv.render.queue.push(obj); if (!nv.render.active) { nv.render(); } }; // Node/CommonJS exports if (true) { module.exports = nv; } if (typeof(window) !== 'undefined') { window.nv = nv; } /* Facade for queueing DOM write operations * with Fastdom (https://github.com/wilsonpage/fastdom) * if available. * This could easily be extended to support alternate * implementations in the future. */ nv.dom.write = function(callback) { if (window.fastdom !== undefined) { return fastdom.write(callback); } return callback(); }; /* Facade for queueing DOM read operations * with Fastdom (https://github.com/wilsonpage/fastdom) * if available. * This could easily be extended to support alternate * implementations in the future. */ nv.dom.read = function(callback) { if (window.fastdom !== undefined) { return fastdom.read(callback); } return callback(); };/* Utility class to handle creation of an interactive layer. This places a rectangle on top of the chart. When you mouse move over it, it sends a dispatch containing the X-coordinate. It can also render a vertical line where the mouse is located. dispatch.elementMousemove is the important event to latch onto. It is fired whenever the mouse moves over the rectangle. The dispatch is given one object which contains the mouseX/Y location. It also has 'pointXValue', which is the conversion of mouseX to the x-axis scale. */ nv.interactiveGuideline = function() { "use strict"; var margin = { left: 0, top: 0 } //Pass the chart's top and left magins. Used to calculate the mouseX/Y. , width = null , height = null , xScale = d3.scale.linear() , dispatch = d3.dispatch('elementMousemove', 'elementMouseout', 'elementClick', 'elementDblclick', 'elementMouseDown', 'elementMouseUp') , showGuideLine = true , svgContainer = null // Must pass the chart's svg, we'll use its mousemove event. , tooltip = nv.models.tooltip() , isMSIE = "ActiveXObject" in window // Checkt if IE by looking for activeX. ; tooltip .duration(0) .hideDelay(0) .hidden(false); function layer(selection) { selection.each(function(data) { var container = d3.select(this); var availableWidth = (width || 960), availableHeight = (height || 400); var wrap = container.selectAll("g.nv-wrap.nv-interactiveLineLayer") .data([data]); var wrapEnter = wrap.enter() .append("g").attr("class", " nv-wrap nv-interactiveLineLayer"); wrapEnter.append("g").attr("class","nv-interactiveGuideLine"); if (!svgContainer) { return; } function mouseHandler() { var d3mouse = d3.mouse(this); var mouseX = d3mouse[0]; var mouseY = d3mouse[1]; var subtractMargin = true; var mouseOutAnyReason = false; if (isMSIE) { /* D3.js (or maybe SVG.getScreenCTM) has a nasty bug in Internet Explorer 10. d3.mouse() returns incorrect X,Y mouse coordinates when mouse moving over a rect in IE 10. However, d3.event.offsetX/Y also returns the mouse coordinates relative to the triggering <rect>. So we use offsetX/Y on IE. */ mouseX = d3.event.offsetX; mouseY = d3.event.offsetY; /* On IE, if you attach a mouse event listener to the <svg> container, it will actually trigger it for all the child elements (like <path>, <circle>, etc). When this happens on IE, the offsetX/Y is set to where ever the child element is located. As a result, we do NOT need to subtract margins to figure out the mouse X/Y position under this scenario. Removing the line below *will* cause the interactive layer to not work right on IE. */ if(d3.event.target.tagName !== "svg") { subtractMargin = false; } if (d3.event.target.className.baseVal.match("nv-legend")) { mouseOutAnyReason = true; } } if(subtractMargin) { mouseX -= margin.left; mouseY -= margin.top; } /* If mouseX/Y is outside of the chart's bounds, trigger a mouseOut event. */ if (mouseX < 0 || mouseY < 0 || mouseX > availableWidth || mouseY > availableHeight || (d3.event.relatedTarget && d3.event.relatedTarget.ownerSVGElement === undefined) || mouseOutAnyReason ) { if (isMSIE) { if (d3.event.relatedTarget && d3.event.relatedTarget.ownerSVGElement === undefined && (d3.event.relatedTarget.className === undefined || d3.event.relatedTarget.className.match(tooltip.nvPointerEventsClass))) { return; } } dispatch.elementMouseout({ mouseX: mouseX, mouseY: mouseY }); layer.renderGuideLine(null); //hide the guideline tooltip.hidden(true); return; } else { tooltip.hidden(false); } var scaleIsOrdinal = typeof xScale.rangeBands === 'function'; var pointXValue = undefined; // Ordinal scale has no invert method if (scaleIsOrdinal) { var elementIndex = d3.bisect(xScale.range(), mouseX) - 1; // Check if mouseX is in the range band if (xScale.range()[elementIndex] + xScale.rangeBand() >= mouseX) { pointXValue = xScale.domain()[d3.bisect(xScale.range(), mouseX) - 1]; } else { dispatch.elementMouseout({ mouseX: mouseX, mouseY: mouseY }); layer.renderGuideLine(null); //hide the guideline tooltip.hidden(true); return; } } else { pointXValue = xScale.invert(mouseX); } dispatch.elementMousemove({ mouseX: mouseX, mouseY: mouseY, pointXValue: pointXValue }); //If user double clicks the layer, fire a elementDblclick if (d3.event.type === "dblclick") { dispatch.elementDblclick({ mouseX: mouseX, mouseY: mouseY, pointXValue: pointXValue }); } // if user single clicks the layer, fire elementClick if (d3.event.type === 'click') { dispatch.elementClick({ mouseX: mouseX, mouseY: mouseY, pointXValue: pointXValue }); } // if user presses mouse down the layer, fire elementMouseDown if (d3.event.type === 'mousedown') { dispatch.elementMouseDown({ mouseX: mouseX, mouseY: mouseY, pointXValue: pointXValue }); } // if user presses mouse down the layer, fire elementMouseUp if (d3.event.type === 'mouseup') { dispatch.elementMouseUp({ mouseX: mouseX, mouseY: mouseY, pointXValue: pointXValue