├── .gitignore
├── LICENSE
├── README.md
├── dist
├── react-chartjs.js
└── react-chartjs.min.js
├── index.js
├── lib
├── bar.js
├── core.js
├── doughnut.js
├── line.js
├── pie.js
├── polar-area.js
└── radar.js
├── package-lock.json
├── package.json
├── release-notes.md
└── webpack.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 |
5 | # Runtime data
6 | pids
7 | *.pid
8 | *.seed
9 |
10 | # Directory for instrumented libs generated by jscoverage/JSCover
11 | lib-cov
12 |
13 | # Coverage directory used by tools like istanbul
14 | coverage
15 |
16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
17 | .grunt
18 |
19 | # Compiled binary addons (http://nodejs.org/api/addons.html)
20 | build/Release
21 |
22 | # Dependency directory
23 | # Commenting this out is preferred by some people, see
24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
25 | node_modules
26 |
27 | # Users Environment Variables
28 | .lock-wscript
29 |
30 | .DS_Store
31 | showcase
32 | .generator-release
33 |
34 | .idea/*
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Joe Hudson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | react-chartjs
2 | ============
3 |
4 | rich interactive react charting components using [chart.js](http://www.chartjs.org/) including
5 |
6 | * Line chart
7 | * Bar chart
8 | * Radar chart
9 | * Polar area chart
10 | * Pie chart
11 | * Doughnut chart
12 |
13 | [view chart examples](http://reactjs.github.io/react-chartjs/index.html)
14 |
15 | Installation
16 | ------------
17 | This is a CommonJS component only (to be used with something like Webpack or Browserify)
18 | ```
19 | npm install --save react-chartjs
20 | ```
21 | You must also include [chart.js](https://www.npmjs.com/package/chart.js) and [React](https://www.npmjs.com/package/react) as dependencies.
22 | ```
23 | npm install --save chart.js@^1.1.1 react react-dom
24 | ```
25 |
26 | Example Usage
27 | -------------
28 | ```javascript
29 | var LineChart = require("react-chartjs").Line;
30 |
31 | var MyComponent = React.createClass({
32 | render: function() {
33 | return
34 | }
35 | });
36 | ```
37 |
38 | * ```data``` represents the chart data (see [chart.js](https://github.com/chartjs/Chart.js/tree/v1.1.1/docs) for details)
39 | * ```options``` represents the chart options (see [chart.js](https://github.com/chartjs/Chart.js/tree/v1.1.1/docs) for details)
40 | * all other parameters will be passed through to the ```canvas``` element
41 | * if data passed into the component changes, points will animate between values using chart.js' ```.update()```. If you want the chart destroyed and redrawn on every change, pass in ```redraw``` as a prop. For example ``````
42 |
43 | Chart References
44 | ----------------
45 | The ```canvas``` element can be retrieved using ```getCanvas``` and the ```chartjs object``` can be retrieved using ```getChart```.
46 |
--------------------------------------------------------------------------------
/dist/react-chartjs.js:
--------------------------------------------------------------------------------
1 | (function webpackUniversalModuleDefinition(root, factory) {
2 | if(typeof exports === 'object' && typeof module === 'object')
3 | module.exports = factory(require("react"), require("react-dom"), require("Chartjs"));
4 | else if(typeof define === 'function' && define.amd)
5 | define(["react", "react-dom", "Chartjs"], factory);
6 | else if(typeof exports === 'object')
7 | exports["react-chartjs"] = factory(require("react"), require("react-dom"), require("Chartjs"));
8 | else
9 | root["react-chartjs"] = factory(root["React"], root["ReactDOM"], root["Chart"]);
10 | })(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_13__) {
11 | return /******/ (function(modules) { // webpackBootstrap
12 | /******/ // The module cache
13 | /******/ var installedModules = {};
14 |
15 | /******/ // The require function
16 | /******/ function __webpack_require__(moduleId) {
17 |
18 | /******/ // Check if module is in cache
19 | /******/ if(installedModules[moduleId])
20 | /******/ return installedModules[moduleId].exports;
21 |
22 | /******/ // Create a new module (and put it into the cache)
23 | /******/ var module = installedModules[moduleId] = {
24 | /******/ exports: {},
25 | /******/ id: moduleId,
26 | /******/ loaded: false
27 | /******/ };
28 |
29 | /******/ // Execute the module function
30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31 |
32 | /******/ // Flag the module as loaded
33 | /******/ module.loaded = true;
34 |
35 | /******/ // Return the exports of the module
36 | /******/ return module.exports;
37 | /******/ }
38 |
39 |
40 | /******/ // expose the modules object (__webpack_modules__)
41 | /******/ __webpack_require__.m = modules;
42 |
43 | /******/ // expose the module cache
44 | /******/ __webpack_require__.c = installedModules;
45 |
46 | /******/ // __webpack_public_path__
47 | /******/ __webpack_require__.p = "";
48 |
49 | /******/ // Load entry module and return exports
50 | /******/ return __webpack_require__(0);
51 | /******/ })
52 | /************************************************************************/
53 | /******/ ([
54 | /* 0 */
55 | /***/ (function(module, exports, __webpack_require__) {
56 |
57 | module.exports = {
58 | Bar: __webpack_require__(1),
59 | Doughnut: __webpack_require__(14),
60 | Line: __webpack_require__(15),
61 | Pie: __webpack_require__(16),
62 | PolarArea: __webpack_require__(17),
63 | Radar: __webpack_require__(18),
64 | createClass: __webpack_require__(2).createClass
65 | };
66 |
67 |
68 | /***/ }),
69 | /* 1 */
70 | /***/ (function(module, exports, __webpack_require__) {
71 |
72 | var vars = __webpack_require__(2);
73 |
74 | module.exports = vars.createClass('Bar', ['getBarsAtEvent']);
75 |
76 |
77 | /***/ }),
78 | /* 2 */
79 | /***/ (function(module, exports, __webpack_require__) {
80 |
81 | var React = __webpack_require__(3);
82 | var createReactClass = __webpack_require__(4);
83 | var ReactDOM = __webpack_require__(12);
84 |
85 | module.exports = {
86 | createClass: function(chartType, methodNames, dataKey) {
87 | var excludedProps = ['data', 'options', 'redraw'];
88 | var classData = {
89 | displayName: chartType + 'Chart',
90 | getInitialState: function() { return {}; },
91 | render: function() {
92 | var _props = {
93 | ref: 'canvass'
94 | };
95 | for (var name in this.props) {
96 | if (this.props.hasOwnProperty(name)) {
97 | if (excludedProps.indexOf(name) === -1) {
98 | _props[name] = this.props[name];
99 | }
100 | }
101 | }
102 | return React.createElement('canvas', _props);
103 | }
104 | };
105 |
106 | var extras = ['clear', 'stop', 'resize', 'toBase64Image', 'generateLegend', 'update', 'addData', 'removeData'];
107 | function extra(type) {
108 | classData[type] = function() {
109 | return this.state.chart[type].apply(this.state.chart, arguments);
110 | };
111 | }
112 |
113 | classData.componentDidMount = function() {
114 | this.initializeChart(this.props);
115 | };
116 |
117 | classData.componentWillUnmount = function() {
118 | var chart = this.state.chart;
119 | chart.destroy();
120 | };
121 |
122 | classData.componentWillReceiveProps = function(nextProps) {
123 | var chart = this.state.chart;
124 | if (nextProps.redraw) {
125 | chart.destroy();
126 | this.initializeChart(nextProps);
127 | } else {
128 | dataKey = dataKey || dataKeys[chart.name];
129 | updatePoints(nextProps, chart, dataKey);
130 | if (chart.scale) {
131 | chart.scale.xLabels = nextProps.data.labels;
132 |
133 | if (chart.scale.calculateXLabelRotation){
134 | chart.scale.calculateXLabelRotation();
135 | }
136 | }
137 | chart.update();
138 | }
139 | };
140 |
141 | classData.initializeChart = function(nextProps) {
142 | var Chart = __webpack_require__(13);
143 | var el = ReactDOM.findDOMNode(this);
144 | var ctx = el.getContext("2d");
145 | var chart = new Chart(ctx)[chartType](nextProps.data, nextProps.options || {});
146 | this.state.chart = chart;
147 | };
148 |
149 | // return the chartjs instance
150 | classData.getChart = function() {
151 | return this.state.chart;
152 | };
153 |
154 | // return the canvass element that contains the chart
155 | classData.getCanvass = function() {
156 | return this.refs.canvass;
157 | };
158 |
159 | classData.getCanvas = classData.getCanvass;
160 |
161 | var i;
162 | for (i=0; i nextProps.data.labels.length) {
209 | chart.removeData();
210 | }
211 | nextProps.data.datasets.forEach(function(set, setIndex) {
212 | set.data.forEach(function(val, pointIndex) {
213 | if (typeof(chart.datasets[setIndex][dataKey][pointIndex]) == "undefined") {
214 | addData(nextProps, chart, setIndex, pointIndex);
215 | } else {
216 | chart.datasets[setIndex][dataKey][pointIndex].value = val;
217 | }
218 | });
219 | });
220 | }
221 | };
222 |
223 | var addData = function(nextProps, chart, setIndex, pointIndex) {
224 | var values = [];
225 | nextProps.data.datasets.forEach(function(set) {
226 | values.push(set.data[pointIndex]);
227 | });
228 | chart.addData(values, nextProps.data.labels[setIndex]);
229 | };
230 |
231 |
232 | /***/ }),
233 | /* 3 */
234 | /***/ (function(module, exports) {
235 |
236 | module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
237 |
238 | /***/ }),
239 | /* 4 */
240 | /***/ (function(module, exports, __webpack_require__) {
241 |
242 | /**
243 | * Copyright (c) 2013-present, Facebook, Inc.
244 | *
245 | * This source code is licensed under the MIT license found in the
246 | * LICENSE file in the root directory of this source tree.
247 | *
248 | */
249 |
250 | 'use strict';
251 |
252 | var React = __webpack_require__(3);
253 | var factory = __webpack_require__(5);
254 |
255 | if (typeof React === 'undefined') {
256 | throw Error(
257 | 'create-react-class could not find the React object. If you are using script tags, ' +
258 | 'make sure that React is being loaded before create-react-class.'
259 | );
260 | }
261 |
262 | // Hack to grab NoopUpdateQueue from isomorphic React
263 | var ReactNoopUpdateQueue = new React.Component().updater;
264 |
265 | module.exports = factory(
266 | React.Component,
267 | React.isValidElement,
268 | ReactNoopUpdateQueue
269 | );
270 |
271 |
272 | /***/ }),
273 | /* 5 */
274 | /***/ (function(module, exports, __webpack_require__) {
275 |
276 | /* WEBPACK VAR INJECTION */(function(process) {/**
277 | * Copyright (c) 2013-present, Facebook, Inc.
278 | *
279 | * This source code is licensed under the MIT license found in the
280 | * LICENSE file in the root directory of this source tree.
281 | *
282 | */
283 |
284 | 'use strict';
285 |
286 | var _assign = __webpack_require__(7);
287 |
288 | var emptyObject = __webpack_require__(8);
289 | var _invariant = __webpack_require__(9);
290 |
291 | if (process.env.NODE_ENV !== 'production') {
292 | var warning = __webpack_require__(10);
293 | }
294 |
295 | var MIXINS_KEY = 'mixins';
296 |
297 | // Helper function to allow the creation of anonymous functions which do not
298 | // have .name set to the name of the variable being assigned to.
299 | function identity(fn) {
300 | return fn;
301 | }
302 |
303 | var ReactPropTypeLocationNames;
304 | if (process.env.NODE_ENV !== 'production') {
305 | ReactPropTypeLocationNames = {
306 | prop: 'prop',
307 | context: 'context',
308 | childContext: 'child context'
309 | };
310 | } else {
311 | ReactPropTypeLocationNames = {};
312 | }
313 |
314 | function factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {
315 | /**
316 | * Policies that describe methods in `ReactClassInterface`.
317 | */
318 |
319 | var injectedMixins = [];
320 |
321 | /**
322 | * Composite components are higher-level components that compose other composite
323 | * or host components.
324 | *
325 | * To create a new type of `ReactClass`, pass a specification of
326 | * your new class to `React.createClass`. The only requirement of your class
327 | * specification is that you implement a `render` method.
328 | *
329 | * var MyComponent = React.createClass({
330 | * render: function() {
331 | * return Hello World
;
332 | * }
333 | * });
334 | *
335 | * The class specification supports a specific protocol of methods that have
336 | * special meaning (e.g. `render`). See `ReactClassInterface` for
337 | * more the comprehensive protocol. Any other properties and methods in the
338 | * class specification will be available on the prototype.
339 | *
340 | * @interface ReactClassInterface
341 | * @internal
342 | */
343 | var ReactClassInterface = {
344 | /**
345 | * An array of Mixin objects to include when defining your component.
346 | *
347 | * @type {array}
348 | * @optional
349 | */
350 | mixins: 'DEFINE_MANY',
351 |
352 | /**
353 | * An object containing properties and methods that should be defined on
354 | * the component's constructor instead of its prototype (static methods).
355 | *
356 | * @type {object}
357 | * @optional
358 | */
359 | statics: 'DEFINE_MANY',
360 |
361 | /**
362 | * Definition of prop types for this component.
363 | *
364 | * @type {object}
365 | * @optional
366 | */
367 | propTypes: 'DEFINE_MANY',
368 |
369 | /**
370 | * Definition of context types for this component.
371 | *
372 | * @type {object}
373 | * @optional
374 | */
375 | contextTypes: 'DEFINE_MANY',
376 |
377 | /**
378 | * Definition of context types this component sets for its children.
379 | *
380 | * @type {object}
381 | * @optional
382 | */
383 | childContextTypes: 'DEFINE_MANY',
384 |
385 | // ==== Definition methods ====
386 |
387 | /**
388 | * Invoked when the component is mounted. Values in the mapping will be set on
389 | * `this.props` if that prop is not specified (i.e. using an `in` check).
390 | *
391 | * This method is invoked before `getInitialState` and therefore cannot rely
392 | * on `this.state` or use `this.setState`.
393 | *
394 | * @return {object}
395 | * @optional
396 | */
397 | getDefaultProps: 'DEFINE_MANY_MERGED',
398 |
399 | /**
400 | * Invoked once before the component is mounted. The return value will be used
401 | * as the initial value of `this.state`.
402 | *
403 | * getInitialState: function() {
404 | * return {
405 | * isOn: false,
406 | * fooBaz: new BazFoo()
407 | * }
408 | * }
409 | *
410 | * @return {object}
411 | * @optional
412 | */
413 | getInitialState: 'DEFINE_MANY_MERGED',
414 |
415 | /**
416 | * @return {object}
417 | * @optional
418 | */
419 | getChildContext: 'DEFINE_MANY_MERGED',
420 |
421 | /**
422 | * Uses props from `this.props` and state from `this.state` to render the
423 | * structure of the component.
424 | *
425 | * No guarantees are made about when or how often this method is invoked, so
426 | * it must not have side effects.
427 | *
428 | * render: function() {
429 | * var name = this.props.name;
430 | * return Hello, {name}!
;
431 | * }
432 | *
433 | * @return {ReactComponent}
434 | * @required
435 | */
436 | render: 'DEFINE_ONCE',
437 |
438 | // ==== Delegate methods ====
439 |
440 | /**
441 | * Invoked when the component is initially created and about to be mounted.
442 | * This may have side effects, but any external subscriptions or data created
443 | * by this method must be cleaned up in `componentWillUnmount`.
444 | *
445 | * @optional
446 | */
447 | componentWillMount: 'DEFINE_MANY',
448 |
449 | /**
450 | * Invoked when the component has been mounted and has a DOM representation.
451 | * However, there is no guarantee that the DOM node is in the document.
452 | *
453 | * Use this as an opportunity to operate on the DOM when the component has
454 | * been mounted (initialized and rendered) for the first time.
455 | *
456 | * @param {DOMElement} rootNode DOM element representing the component.
457 | * @optional
458 | */
459 | componentDidMount: 'DEFINE_MANY',
460 |
461 | /**
462 | * Invoked before the component receives new props.
463 | *
464 | * Use this as an opportunity to react to a prop transition by updating the
465 | * state using `this.setState`. Current props are accessed via `this.props`.
466 | *
467 | * componentWillReceiveProps: function(nextProps, nextContext) {
468 | * this.setState({
469 | * likesIncreasing: nextProps.likeCount > this.props.likeCount
470 | * });
471 | * }
472 | *
473 | * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
474 | * transition may cause a state change, but the opposite is not true. If you
475 | * need it, you are probably looking for `componentWillUpdate`.
476 | *
477 | * @param {object} nextProps
478 | * @optional
479 | */
480 | componentWillReceiveProps: 'DEFINE_MANY',
481 |
482 | /**
483 | * Invoked while deciding if the component should be updated as a result of
484 | * receiving new props, state and/or context.
485 | *
486 | * Use this as an opportunity to `return false` when you're certain that the
487 | * transition to the new props/state/context will not require a component
488 | * update.
489 | *
490 | * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
491 | * return !equal(nextProps, this.props) ||
492 | * !equal(nextState, this.state) ||
493 | * !equal(nextContext, this.context);
494 | * }
495 | *
496 | * @param {object} nextProps
497 | * @param {?object} nextState
498 | * @param {?object} nextContext
499 | * @return {boolean} True if the component should update.
500 | * @optional
501 | */
502 | shouldComponentUpdate: 'DEFINE_ONCE',
503 |
504 | /**
505 | * Invoked when the component is about to update due to a transition from
506 | * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
507 | * and `nextContext`.
508 | *
509 | * Use this as an opportunity to perform preparation before an update occurs.
510 | *
511 | * NOTE: You **cannot** use `this.setState()` in this method.
512 | *
513 | * @param {object} nextProps
514 | * @param {?object} nextState
515 | * @param {?object} nextContext
516 | * @param {ReactReconcileTransaction} transaction
517 | * @optional
518 | */
519 | componentWillUpdate: 'DEFINE_MANY',
520 |
521 | /**
522 | * Invoked when the component's DOM representation has been updated.
523 | *
524 | * Use this as an opportunity to operate on the DOM when the component has
525 | * been updated.
526 | *
527 | * @param {object} prevProps
528 | * @param {?object} prevState
529 | * @param {?object} prevContext
530 | * @param {DOMElement} rootNode DOM element representing the component.
531 | * @optional
532 | */
533 | componentDidUpdate: 'DEFINE_MANY',
534 |
535 | /**
536 | * Invoked when the component is about to be removed from its parent and have
537 | * its DOM representation destroyed.
538 | *
539 | * Use this as an opportunity to deallocate any external resources.
540 | *
541 | * NOTE: There is no `componentDidUnmount` since your component will have been
542 | * destroyed by that point.
543 | *
544 | * @optional
545 | */
546 | componentWillUnmount: 'DEFINE_MANY',
547 |
548 | // ==== Advanced methods ====
549 |
550 | /**
551 | * Updates the component's currently mounted DOM representation.
552 | *
553 | * By default, this implements React's rendering and reconciliation algorithm.
554 | * Sophisticated clients may wish to override this.
555 | *
556 | * @param {ReactReconcileTransaction} transaction
557 | * @internal
558 | * @overridable
559 | */
560 | updateComponent: 'OVERRIDE_BASE'
561 | };
562 |
563 | /**
564 | * Mapping from class specification keys to special processing functions.
565 | *
566 | * Although these are declared like instance properties in the specification
567 | * when defining classes using `React.createClass`, they are actually static
568 | * and are accessible on the constructor instead of the prototype. Despite
569 | * being static, they must be defined outside of the "statics" key under
570 | * which all other static methods are defined.
571 | */
572 | var RESERVED_SPEC_KEYS = {
573 | displayName: function(Constructor, displayName) {
574 | Constructor.displayName = displayName;
575 | },
576 | mixins: function(Constructor, mixins) {
577 | if (mixins) {
578 | for (var i = 0; i < mixins.length; i++) {
579 | mixSpecIntoComponent(Constructor, mixins[i]);
580 | }
581 | }
582 | },
583 | childContextTypes: function(Constructor, childContextTypes) {
584 | if (process.env.NODE_ENV !== 'production') {
585 | validateTypeDef(Constructor, childContextTypes, 'childContext');
586 | }
587 | Constructor.childContextTypes = _assign(
588 | {},
589 | Constructor.childContextTypes,
590 | childContextTypes
591 | );
592 | },
593 | contextTypes: function(Constructor, contextTypes) {
594 | if (process.env.NODE_ENV !== 'production') {
595 | validateTypeDef(Constructor, contextTypes, 'context');
596 | }
597 | Constructor.contextTypes = _assign(
598 | {},
599 | Constructor.contextTypes,
600 | contextTypes
601 | );
602 | },
603 | /**
604 | * Special case getDefaultProps which should move into statics but requires
605 | * automatic merging.
606 | */
607 | getDefaultProps: function(Constructor, getDefaultProps) {
608 | if (Constructor.getDefaultProps) {
609 | Constructor.getDefaultProps = createMergedResultFunction(
610 | Constructor.getDefaultProps,
611 | getDefaultProps
612 | );
613 | } else {
614 | Constructor.getDefaultProps = getDefaultProps;
615 | }
616 | },
617 | propTypes: function(Constructor, propTypes) {
618 | if (process.env.NODE_ENV !== 'production') {
619 | validateTypeDef(Constructor, propTypes, 'prop');
620 | }
621 | Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
622 | },
623 | statics: function(Constructor, statics) {
624 | mixStaticSpecIntoComponent(Constructor, statics);
625 | },
626 | autobind: function() {}
627 | };
628 |
629 | function validateTypeDef(Constructor, typeDef, location) {
630 | for (var propName in typeDef) {
631 | if (typeDef.hasOwnProperty(propName)) {
632 | // use a warning instead of an _invariant so components
633 | // don't show up in prod but only in __DEV__
634 | if (process.env.NODE_ENV !== 'production') {
635 | warning(
636 | typeof typeDef[propName] === 'function',
637 | '%s: %s type `%s` is invalid; it must be a function, usually from ' +
638 | 'React.PropTypes.',
639 | Constructor.displayName || 'ReactClass',
640 | ReactPropTypeLocationNames[location],
641 | propName
642 | );
643 | }
644 | }
645 | }
646 | }
647 |
648 | function validateMethodOverride(isAlreadyDefined, name) {
649 | var specPolicy = ReactClassInterface.hasOwnProperty(name)
650 | ? ReactClassInterface[name]
651 | : null;
652 |
653 | // Disallow overriding of base class methods unless explicitly allowed.
654 | if (ReactClassMixin.hasOwnProperty(name)) {
655 | _invariant(
656 | specPolicy === 'OVERRIDE_BASE',
657 | 'ReactClassInterface: You are attempting to override ' +
658 | '`%s` from your class specification. Ensure that your method names ' +
659 | 'do not overlap with React methods.',
660 | name
661 | );
662 | }
663 |
664 | // Disallow defining methods more than once unless explicitly allowed.
665 | if (isAlreadyDefined) {
666 | _invariant(
667 | specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',
668 | 'ReactClassInterface: You are attempting to define ' +
669 | '`%s` on your component more than once. This conflict may be due ' +
670 | 'to a mixin.',
671 | name
672 | );
673 | }
674 | }
675 |
676 | /**
677 | * Mixin helper which handles policy validation and reserved
678 | * specification keys when building React classes.
679 | */
680 | function mixSpecIntoComponent(Constructor, spec) {
681 | if (!spec) {
682 | if (process.env.NODE_ENV !== 'production') {
683 | var typeofSpec = typeof spec;
684 | var isMixinValid = typeofSpec === 'object' && spec !== null;
685 |
686 | if (process.env.NODE_ENV !== 'production') {
687 | warning(
688 | isMixinValid,
689 | "%s: You're attempting to include a mixin that is either null " +
690 | 'or not an object. Check the mixins included by the component, ' +
691 | 'as well as any mixins they include themselves. ' +
692 | 'Expected object but got %s.',
693 | Constructor.displayName || 'ReactClass',
694 | spec === null ? null : typeofSpec
695 | );
696 | }
697 | }
698 |
699 | return;
700 | }
701 |
702 | _invariant(
703 | typeof spec !== 'function',
704 | "ReactClass: You're attempting to " +
705 | 'use a component class or function as a mixin. Instead, just use a ' +
706 | 'regular object.'
707 | );
708 | _invariant(
709 | !isValidElement(spec),
710 | "ReactClass: You're attempting to " +
711 | 'use a component as a mixin. Instead, just use a regular object.'
712 | );
713 |
714 | var proto = Constructor.prototype;
715 | var autoBindPairs = proto.__reactAutoBindPairs;
716 |
717 | // By handling mixins before any other properties, we ensure the same
718 | // chaining order is applied to methods with DEFINE_MANY policy, whether
719 | // mixins are listed before or after these methods in the spec.
720 | if (spec.hasOwnProperty(MIXINS_KEY)) {
721 | RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
722 | }
723 |
724 | for (var name in spec) {
725 | if (!spec.hasOwnProperty(name)) {
726 | continue;
727 | }
728 |
729 | if (name === MIXINS_KEY) {
730 | // We have already handled mixins in a special case above.
731 | continue;
732 | }
733 |
734 | var property = spec[name];
735 | var isAlreadyDefined = proto.hasOwnProperty(name);
736 | validateMethodOverride(isAlreadyDefined, name);
737 |
738 | if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
739 | RESERVED_SPEC_KEYS[name](Constructor, property);
740 | } else {
741 | // Setup methods on prototype:
742 | // The following member methods should not be automatically bound:
743 | // 1. Expected ReactClass methods (in the "interface").
744 | // 2. Overridden methods (that were mixed in).
745 | var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
746 | var isFunction = typeof property === 'function';
747 | var shouldAutoBind =
748 | isFunction &&
749 | !isReactClassMethod &&
750 | !isAlreadyDefined &&
751 | spec.autobind !== false;
752 |
753 | if (shouldAutoBind) {
754 | autoBindPairs.push(name, property);
755 | proto[name] = property;
756 | } else {
757 | if (isAlreadyDefined) {
758 | var specPolicy = ReactClassInterface[name];
759 |
760 | // These cases should already be caught by validateMethodOverride.
761 | _invariant(
762 | isReactClassMethod &&
763 | (specPolicy === 'DEFINE_MANY_MERGED' ||
764 | specPolicy === 'DEFINE_MANY'),
765 | 'ReactClass: Unexpected spec policy %s for key %s ' +
766 | 'when mixing in component specs.',
767 | specPolicy,
768 | name
769 | );
770 |
771 | // For methods which are defined more than once, call the existing
772 | // methods before calling the new property, merging if appropriate.
773 | if (specPolicy === 'DEFINE_MANY_MERGED') {
774 | proto[name] = createMergedResultFunction(proto[name], property);
775 | } else if (specPolicy === 'DEFINE_MANY') {
776 | proto[name] = createChainedFunction(proto[name], property);
777 | }
778 | } else {
779 | proto[name] = property;
780 | if (process.env.NODE_ENV !== 'production') {
781 | // Add verbose displayName to the function, which helps when looking
782 | // at profiling tools.
783 | if (typeof property === 'function' && spec.displayName) {
784 | proto[name].displayName = spec.displayName + '_' + name;
785 | }
786 | }
787 | }
788 | }
789 | }
790 | }
791 | }
792 |
793 | function mixStaticSpecIntoComponent(Constructor, statics) {
794 | if (!statics) {
795 | return;
796 | }
797 | for (var name in statics) {
798 | var property = statics[name];
799 | if (!statics.hasOwnProperty(name)) {
800 | continue;
801 | }
802 |
803 | var isReserved = name in RESERVED_SPEC_KEYS;
804 | _invariant(
805 | !isReserved,
806 | 'ReactClass: You are attempting to define a reserved ' +
807 | 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' +
808 | 'as an instance property instead; it will still be accessible on the ' +
809 | 'constructor.',
810 | name
811 | );
812 |
813 | var isInherited = name in Constructor;
814 | _invariant(
815 | !isInherited,
816 | 'ReactClass: You are attempting to define ' +
817 | '`%s` on your component more than once. This conflict may be ' +
818 | 'due to a mixin.',
819 | name
820 | );
821 | Constructor[name] = property;
822 | }
823 | }
824 |
825 | /**
826 | * Merge two objects, but throw if both contain the same key.
827 | *
828 | * @param {object} one The first object, which is mutated.
829 | * @param {object} two The second object
830 | * @return {object} one after it has been mutated to contain everything in two.
831 | */
832 | function mergeIntoWithNoDuplicateKeys(one, two) {
833 | _invariant(
834 | one && two && typeof one === 'object' && typeof two === 'object',
835 | 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'
836 | );
837 |
838 | for (var key in two) {
839 | if (two.hasOwnProperty(key)) {
840 | _invariant(
841 | one[key] === undefined,
842 | 'mergeIntoWithNoDuplicateKeys(): ' +
843 | 'Tried to merge two objects with the same key: `%s`. This conflict ' +
844 | 'may be due to a mixin; in particular, this may be caused by two ' +
845 | 'getInitialState() or getDefaultProps() methods returning objects ' +
846 | 'with clashing keys.',
847 | key
848 | );
849 | one[key] = two[key];
850 | }
851 | }
852 | return one;
853 | }
854 |
855 | /**
856 | * Creates a function that invokes two functions and merges their return values.
857 | *
858 | * @param {function} one Function to invoke first.
859 | * @param {function} two Function to invoke second.
860 | * @return {function} Function that invokes the two argument functions.
861 | * @private
862 | */
863 | function createMergedResultFunction(one, two) {
864 | return function mergedResult() {
865 | var a = one.apply(this, arguments);
866 | var b = two.apply(this, arguments);
867 | if (a == null) {
868 | return b;
869 | } else if (b == null) {
870 | return a;
871 | }
872 | var c = {};
873 | mergeIntoWithNoDuplicateKeys(c, a);
874 | mergeIntoWithNoDuplicateKeys(c, b);
875 | return c;
876 | };
877 | }
878 |
879 | /**
880 | * Creates a function that invokes two functions and ignores their return vales.
881 | *
882 | * @param {function} one Function to invoke first.
883 | * @param {function} two Function to invoke second.
884 | * @return {function} Function that invokes the two argument functions.
885 | * @private
886 | */
887 | function createChainedFunction(one, two) {
888 | return function chainedFunction() {
889 | one.apply(this, arguments);
890 | two.apply(this, arguments);
891 | };
892 | }
893 |
894 | /**
895 | * Binds a method to the component.
896 | *
897 | * @param {object} component Component whose method is going to be bound.
898 | * @param {function} method Method to be bound.
899 | * @return {function} The bound method.
900 | */
901 | function bindAutoBindMethod(component, method) {
902 | var boundMethod = method.bind(component);
903 | if (process.env.NODE_ENV !== 'production') {
904 | boundMethod.__reactBoundContext = component;
905 | boundMethod.__reactBoundMethod = method;
906 | boundMethod.__reactBoundArguments = null;
907 | var componentName = component.constructor.displayName;
908 | var _bind = boundMethod.bind;
909 | boundMethod.bind = function(newThis) {
910 | for (
911 | var _len = arguments.length,
912 | args = Array(_len > 1 ? _len - 1 : 0),
913 | _key = 1;
914 | _key < _len;
915 | _key++
916 | ) {
917 | args[_key - 1] = arguments[_key];
918 | }
919 |
920 | // User is trying to bind() an autobound method; we effectively will
921 | // ignore the value of "this" that the user is trying to use, so
922 | // let's warn.
923 | if (newThis !== component && newThis !== null) {
924 | if (process.env.NODE_ENV !== 'production') {
925 | warning(
926 | false,
927 | 'bind(): React component methods may only be bound to the ' +
928 | 'component instance. See %s',
929 | componentName
930 | );
931 | }
932 | } else if (!args.length) {
933 | if (process.env.NODE_ENV !== 'production') {
934 | warning(
935 | false,
936 | 'bind(): You are binding a component method to the component. ' +
937 | 'React does this for you automatically in a high-performance ' +
938 | 'way, so you can safely remove this call. See %s',
939 | componentName
940 | );
941 | }
942 | return boundMethod;
943 | }
944 | var reboundMethod = _bind.apply(boundMethod, arguments);
945 | reboundMethod.__reactBoundContext = component;
946 | reboundMethod.__reactBoundMethod = method;
947 | reboundMethod.__reactBoundArguments = args;
948 | return reboundMethod;
949 | };
950 | }
951 | return boundMethod;
952 | }
953 |
954 | /**
955 | * Binds all auto-bound methods in a component.
956 | *
957 | * @param {object} component Component whose method is going to be bound.
958 | */
959 | function bindAutoBindMethods(component) {
960 | var pairs = component.__reactAutoBindPairs;
961 | for (var i = 0; i < pairs.length; i += 2) {
962 | var autoBindKey = pairs[i];
963 | var method = pairs[i + 1];
964 | component[autoBindKey] = bindAutoBindMethod(component, method);
965 | }
966 | }
967 |
968 | var IsMountedPreMixin = {
969 | componentDidMount: function() {
970 | this.__isMounted = true;
971 | }
972 | };
973 |
974 | var IsMountedPostMixin = {
975 | componentWillUnmount: function() {
976 | this.__isMounted = false;
977 | }
978 | };
979 |
980 | /**
981 | * Add more to the ReactClass base class. These are all legacy features and
982 | * therefore not already part of the modern ReactComponent.
983 | */
984 | var ReactClassMixin = {
985 | /**
986 | * TODO: This will be deprecated because state should always keep a consistent
987 | * type signature and the only use case for this, is to avoid that.
988 | */
989 | replaceState: function(newState, callback) {
990 | this.updater.enqueueReplaceState(this, newState, callback);
991 | },
992 |
993 | /**
994 | * Checks whether or not this composite component is mounted.
995 | * @return {boolean} True if mounted, false otherwise.
996 | * @protected
997 | * @final
998 | */
999 | isMounted: function() {
1000 | if (process.env.NODE_ENV !== 'production') {
1001 | warning(
1002 | this.__didWarnIsMounted,
1003 | '%s: isMounted is deprecated. Instead, make sure to clean up ' +
1004 | 'subscriptions and pending requests in componentWillUnmount to ' +
1005 | 'prevent memory leaks.',
1006 | (this.constructor && this.constructor.displayName) ||
1007 | this.name ||
1008 | 'Component'
1009 | );
1010 | this.__didWarnIsMounted = true;
1011 | }
1012 | return !!this.__isMounted;
1013 | }
1014 | };
1015 |
1016 | var ReactClassComponent = function() {};
1017 | _assign(
1018 | ReactClassComponent.prototype,
1019 | ReactComponent.prototype,
1020 | ReactClassMixin
1021 | );
1022 |
1023 | /**
1024 | * Creates a composite component class given a class specification.
1025 | * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
1026 | *
1027 | * @param {object} spec Class specification (which must define `render`).
1028 | * @return {function} Component constructor function.
1029 | * @public
1030 | */
1031 | function createClass(spec) {
1032 | // To keep our warnings more understandable, we'll use a little hack here to
1033 | // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
1034 | // unnecessarily identify a class without displayName as 'Constructor'.
1035 | var Constructor = identity(function(props, context, updater) {
1036 | // This constructor gets overridden by mocks. The argument is used
1037 | // by mocks to assert on what gets mounted.
1038 |
1039 | if (process.env.NODE_ENV !== 'production') {
1040 | warning(
1041 | this instanceof Constructor,
1042 | 'Something is calling a React component directly. Use a factory or ' +
1043 | 'JSX instead. See: https://fb.me/react-legacyfactory'
1044 | );
1045 | }
1046 |
1047 | // Wire up auto-binding
1048 | if (this.__reactAutoBindPairs.length) {
1049 | bindAutoBindMethods(this);
1050 | }
1051 |
1052 | this.props = props;
1053 | this.context = context;
1054 | this.refs = emptyObject;
1055 | this.updater = updater || ReactNoopUpdateQueue;
1056 |
1057 | this.state = null;
1058 |
1059 | // ReactClasses doesn't have constructors. Instead, they use the
1060 | // getInitialState and componentWillMount methods for initialization.
1061 |
1062 | var initialState = this.getInitialState ? this.getInitialState() : null;
1063 | if (process.env.NODE_ENV !== 'production') {
1064 | // We allow auto-mocks to proceed as if they're returning null.
1065 | if (
1066 | initialState === undefined &&
1067 | this.getInitialState._isMockFunction
1068 | ) {
1069 | // This is probably bad practice. Consider warning here and
1070 | // deprecating this convenience.
1071 | initialState = null;
1072 | }
1073 | }
1074 | _invariant(
1075 | typeof initialState === 'object' && !Array.isArray(initialState),
1076 | '%s.getInitialState(): must return an object or null',
1077 | Constructor.displayName || 'ReactCompositeComponent'
1078 | );
1079 |
1080 | this.state = initialState;
1081 | });
1082 | Constructor.prototype = new ReactClassComponent();
1083 | Constructor.prototype.constructor = Constructor;
1084 | Constructor.prototype.__reactAutoBindPairs = [];
1085 |
1086 | injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
1087 |
1088 | mixSpecIntoComponent(Constructor, IsMountedPreMixin);
1089 | mixSpecIntoComponent(Constructor, spec);
1090 | mixSpecIntoComponent(Constructor, IsMountedPostMixin);
1091 |
1092 | // Initialize the defaultProps property after all mixins have been merged.
1093 | if (Constructor.getDefaultProps) {
1094 | Constructor.defaultProps = Constructor.getDefaultProps();
1095 | }
1096 |
1097 | if (process.env.NODE_ENV !== 'production') {
1098 | // This is a tag to indicate that the use of these method names is ok,
1099 | // since it's used with createClass. If it's not, then it's likely a
1100 | // mistake so we'll warn you to use the static property, property
1101 | // initializer or constructor respectively.
1102 | if (Constructor.getDefaultProps) {
1103 | Constructor.getDefaultProps.isReactClassApproved = {};
1104 | }
1105 | if (Constructor.prototype.getInitialState) {
1106 | Constructor.prototype.getInitialState.isReactClassApproved = {};
1107 | }
1108 | }
1109 |
1110 | _invariant(
1111 | Constructor.prototype.render,
1112 | 'createClass(...): Class specification must implement a `render` method.'
1113 | );
1114 |
1115 | if (process.env.NODE_ENV !== 'production') {
1116 | warning(
1117 | !Constructor.prototype.componentShouldUpdate,
1118 | '%s has a method called ' +
1119 | 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +
1120 | 'The name is phrased as a question because the function is ' +
1121 | 'expected to return a value.',
1122 | spec.displayName || 'A component'
1123 | );
1124 | warning(
1125 | !Constructor.prototype.componentWillRecieveProps,
1126 | '%s has a method called ' +
1127 | 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',
1128 | spec.displayName || 'A component'
1129 | );
1130 | }
1131 |
1132 | // Reduce time spent doing lookups by setting these on the prototype.
1133 | for (var methodName in ReactClassInterface) {
1134 | if (!Constructor.prototype[methodName]) {
1135 | Constructor.prototype[methodName] = null;
1136 | }
1137 | }
1138 |
1139 | return Constructor;
1140 | }
1141 |
1142 | return createClass;
1143 | }
1144 |
1145 | module.exports = factory;
1146 |
1147 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)))
1148 |
1149 | /***/ }),
1150 | /* 6 */
1151 | /***/ (function(module, exports) {
1152 |
1153 | // shim for using process in browser
1154 | var process = module.exports = {};
1155 |
1156 | // cached from whatever global is present so that test runners that stub it
1157 | // don't break things. But we need to wrap it in a try catch in case it is
1158 | // wrapped in strict mode code which doesn't define any globals. It's inside a
1159 | // function because try/catches deoptimize in certain engines.
1160 |
1161 | var cachedSetTimeout;
1162 | var cachedClearTimeout;
1163 |
1164 | function defaultSetTimout() {
1165 | throw new Error('setTimeout has not been defined');
1166 | }
1167 | function defaultClearTimeout () {
1168 | throw new Error('clearTimeout has not been defined');
1169 | }
1170 | (function () {
1171 | try {
1172 | if (typeof setTimeout === 'function') {
1173 | cachedSetTimeout = setTimeout;
1174 | } else {
1175 | cachedSetTimeout = defaultSetTimout;
1176 | }
1177 | } catch (e) {
1178 | cachedSetTimeout = defaultSetTimout;
1179 | }
1180 | try {
1181 | if (typeof clearTimeout === 'function') {
1182 | cachedClearTimeout = clearTimeout;
1183 | } else {
1184 | cachedClearTimeout = defaultClearTimeout;
1185 | }
1186 | } catch (e) {
1187 | cachedClearTimeout = defaultClearTimeout;
1188 | }
1189 | } ())
1190 | function runTimeout(fun) {
1191 | if (cachedSetTimeout === setTimeout) {
1192 | //normal enviroments in sane situations
1193 | return setTimeout(fun, 0);
1194 | }
1195 | // if setTimeout wasn't available but was latter defined
1196 | if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
1197 | cachedSetTimeout = setTimeout;
1198 | return setTimeout(fun, 0);
1199 | }
1200 | try {
1201 | // when when somebody has screwed with setTimeout but no I.E. maddness
1202 | return cachedSetTimeout(fun, 0);
1203 | } catch(e){
1204 | try {
1205 | // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
1206 | return cachedSetTimeout.call(null, fun, 0);
1207 | } catch(e){
1208 | // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
1209 | return cachedSetTimeout.call(this, fun, 0);
1210 | }
1211 | }
1212 |
1213 |
1214 | }
1215 | function runClearTimeout(marker) {
1216 | if (cachedClearTimeout === clearTimeout) {
1217 | //normal enviroments in sane situations
1218 | return clearTimeout(marker);
1219 | }
1220 | // if clearTimeout wasn't available but was latter defined
1221 | if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
1222 | cachedClearTimeout = clearTimeout;
1223 | return clearTimeout(marker);
1224 | }
1225 | try {
1226 | // when when somebody has screwed with setTimeout but no I.E. maddness
1227 | return cachedClearTimeout(marker);
1228 | } catch (e){
1229 | try {
1230 | // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
1231 | return cachedClearTimeout.call(null, marker);
1232 | } catch (e){
1233 | // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
1234 | // Some versions of I.E. have different rules for clearTimeout vs setTimeout
1235 | return cachedClearTimeout.call(this, marker);
1236 | }
1237 | }
1238 |
1239 |
1240 |
1241 | }
1242 | var queue = [];
1243 | var draining = false;
1244 | var currentQueue;
1245 | var queueIndex = -1;
1246 |
1247 | function cleanUpNextTick() {
1248 | if (!draining || !currentQueue) {
1249 | return;
1250 | }
1251 | draining = false;
1252 | if (currentQueue.length) {
1253 | queue = currentQueue.concat(queue);
1254 | } else {
1255 | queueIndex = -1;
1256 | }
1257 | if (queue.length) {
1258 | drainQueue();
1259 | }
1260 | }
1261 |
1262 | function drainQueue() {
1263 | if (draining) {
1264 | return;
1265 | }
1266 | var timeout = runTimeout(cleanUpNextTick);
1267 | draining = true;
1268 |
1269 | var len = queue.length;
1270 | while(len) {
1271 | currentQueue = queue;
1272 | queue = [];
1273 | while (++queueIndex < len) {
1274 | if (currentQueue) {
1275 | currentQueue[queueIndex].run();
1276 | }
1277 | }
1278 | queueIndex = -1;
1279 | len = queue.length;
1280 | }
1281 | currentQueue = null;
1282 | draining = false;
1283 | runClearTimeout(timeout);
1284 | }
1285 |
1286 | process.nextTick = function (fun) {
1287 | var args = new Array(arguments.length - 1);
1288 | if (arguments.length > 1) {
1289 | for (var i = 1; i < arguments.length; i++) {
1290 | args[i - 1] = arguments[i];
1291 | }
1292 | }
1293 | queue.push(new Item(fun, args));
1294 | if (queue.length === 1 && !draining) {
1295 | runTimeout(drainQueue);
1296 | }
1297 | };
1298 |
1299 | // v8 likes predictible objects
1300 | function Item(fun, array) {
1301 | this.fun = fun;
1302 | this.array = array;
1303 | }
1304 | Item.prototype.run = function () {
1305 | this.fun.apply(null, this.array);
1306 | };
1307 | process.title = 'browser';
1308 | process.browser = true;
1309 | process.env = {};
1310 | process.argv = [];
1311 | process.version = ''; // empty string to avoid regexp issues
1312 | process.versions = {};
1313 |
1314 | function noop() {}
1315 |
1316 | process.on = noop;
1317 | process.addListener = noop;
1318 | process.once = noop;
1319 | process.off = noop;
1320 | process.removeListener = noop;
1321 | process.removeAllListeners = noop;
1322 | process.emit = noop;
1323 | process.prependListener = noop;
1324 | process.prependOnceListener = noop;
1325 |
1326 | process.listeners = function (name) { return [] }
1327 |
1328 | process.binding = function (name) {
1329 | throw new Error('process.binding is not supported');
1330 | };
1331 |
1332 | process.cwd = function () { return '/' };
1333 | process.chdir = function (dir) {
1334 | throw new Error('process.chdir is not supported');
1335 | };
1336 | process.umask = function() { return 0; };
1337 |
1338 |
1339 | /***/ }),
1340 | /* 7 */
1341 | /***/ (function(module, exports) {
1342 |
1343 | /*
1344 | object-assign
1345 | (c) Sindre Sorhus
1346 | @license MIT
1347 | */
1348 |
1349 | 'use strict';
1350 | /* eslint-disable no-unused-vars */
1351 | var getOwnPropertySymbols = Object.getOwnPropertySymbols;
1352 | var hasOwnProperty = Object.prototype.hasOwnProperty;
1353 | var propIsEnumerable = Object.prototype.propertyIsEnumerable;
1354 |
1355 | function toObject(val) {
1356 | if (val === null || val === undefined) {
1357 | throw new TypeError('Object.assign cannot be called with null or undefined');
1358 | }
1359 |
1360 | return Object(val);
1361 | }
1362 |
1363 | function shouldUseNative() {
1364 | try {
1365 | if (!Object.assign) {
1366 | return false;
1367 | }
1368 |
1369 | // Detect buggy property enumeration order in older V8 versions.
1370 |
1371 | // https://bugs.chromium.org/p/v8/issues/detail?id=4118
1372 | var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
1373 | test1[5] = 'de';
1374 | if (Object.getOwnPropertyNames(test1)[0] === '5') {
1375 | return false;
1376 | }
1377 |
1378 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056
1379 | var test2 = {};
1380 | for (var i = 0; i < 10; i++) {
1381 | test2['_' + String.fromCharCode(i)] = i;
1382 | }
1383 | var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
1384 | return test2[n];
1385 | });
1386 | if (order2.join('') !== '0123456789') {
1387 | return false;
1388 | }
1389 |
1390 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056
1391 | var test3 = {};
1392 | 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
1393 | test3[letter] = letter;
1394 | });
1395 | if (Object.keys(Object.assign({}, test3)).join('') !==
1396 | 'abcdefghijklmnopqrst') {
1397 | return false;
1398 | }
1399 |
1400 | return true;
1401 | } catch (err) {
1402 | // We don't expect any of the above to throw, but better to be safe.
1403 | return false;
1404 | }
1405 | }
1406 |
1407 | module.exports = shouldUseNative() ? Object.assign : function (target, source) {
1408 | var from;
1409 | var to = toObject(target);
1410 | var symbols;
1411 |
1412 | for (var s = 1; s < arguments.length; s++) {
1413 | from = Object(arguments[s]);
1414 |
1415 | for (var key in from) {
1416 | if (hasOwnProperty.call(from, key)) {
1417 | to[key] = from[key];
1418 | }
1419 | }
1420 |
1421 | if (getOwnPropertySymbols) {
1422 | symbols = getOwnPropertySymbols(from);
1423 | for (var i = 0; i < symbols.length; i++) {
1424 | if (propIsEnumerable.call(from, symbols[i])) {
1425 | to[symbols[i]] = from[symbols[i]];
1426 | }
1427 | }
1428 | }
1429 | }
1430 |
1431 | return to;
1432 | };
1433 |
1434 |
1435 | /***/ }),
1436 | /* 8 */
1437 | /***/ (function(module, exports, __webpack_require__) {
1438 |
1439 | /* WEBPACK VAR INJECTION */(function(process) {/**
1440 | * Copyright (c) 2013-present, Facebook, Inc.
1441 | *
1442 | * This source code is licensed under the MIT license found in the
1443 | * LICENSE file in the root directory of this source tree.
1444 | *
1445 | */
1446 |
1447 | 'use strict';
1448 |
1449 | var emptyObject = {};
1450 |
1451 | if (process.env.NODE_ENV !== 'production') {
1452 | Object.freeze(emptyObject);
1453 | }
1454 |
1455 | module.exports = emptyObject;
1456 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)))
1457 |
1458 | /***/ }),
1459 | /* 9 */
1460 | /***/ (function(module, exports, __webpack_require__) {
1461 |
1462 | /* WEBPACK VAR INJECTION */(function(process) {/**
1463 | * Copyright (c) 2013-present, Facebook, Inc.
1464 | *
1465 | * This source code is licensed under the MIT license found in the
1466 | * LICENSE file in the root directory of this source tree.
1467 | *
1468 | */
1469 |
1470 | 'use strict';
1471 |
1472 | /**
1473 | * Use invariant() to assert state which your program assumes to be true.
1474 | *
1475 | * Provide sprintf-style format (only %s is supported) and arguments
1476 | * to provide information about what broke and what you were
1477 | * expecting.
1478 | *
1479 | * The invariant message will be stripped in production, but the invariant
1480 | * will remain to ensure logic does not differ in production.
1481 | */
1482 |
1483 | var validateFormat = function validateFormat(format) {};
1484 |
1485 | if (process.env.NODE_ENV !== 'production') {
1486 | validateFormat = function validateFormat(format) {
1487 | if (format === undefined) {
1488 | throw new Error('invariant requires an error message argument');
1489 | }
1490 | };
1491 | }
1492 |
1493 | function invariant(condition, format, a, b, c, d, e, f) {
1494 | validateFormat(format);
1495 |
1496 | if (!condition) {
1497 | var error;
1498 | if (format === undefined) {
1499 | error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
1500 | } else {
1501 | var args = [a, b, c, d, e, f];
1502 | var argIndex = 0;
1503 | error = new Error(format.replace(/%s/g, function () {
1504 | return args[argIndex++];
1505 | }));
1506 | error.name = 'Invariant Violation';
1507 | }
1508 |
1509 | error.framesToPop = 1; // we don't care about invariant's own frame
1510 | throw error;
1511 | }
1512 | }
1513 |
1514 | module.exports = invariant;
1515 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)))
1516 |
1517 | /***/ }),
1518 | /* 10 */
1519 | /***/ (function(module, exports, __webpack_require__) {
1520 |
1521 | /* WEBPACK VAR INJECTION */(function(process) {/**
1522 | * Copyright (c) 2014-present, Facebook, Inc.
1523 | *
1524 | * This source code is licensed under the MIT license found in the
1525 | * LICENSE file in the root directory of this source tree.
1526 | *
1527 | */
1528 |
1529 | 'use strict';
1530 |
1531 | var emptyFunction = __webpack_require__(11);
1532 |
1533 | /**
1534 | * Similar to invariant but only logs a warning if the condition is not met.
1535 | * This can be used to log issues in development environments in critical
1536 | * paths. Removing the logging code for production environments will keep the
1537 | * same logic and follow the same code paths.
1538 | */
1539 |
1540 | var warning = emptyFunction;
1541 |
1542 | if (process.env.NODE_ENV !== 'production') {
1543 | var printWarning = function printWarning(format) {
1544 | for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1545 | args[_key - 1] = arguments[_key];
1546 | }
1547 |
1548 | var argIndex = 0;
1549 | var message = 'Warning: ' + format.replace(/%s/g, function () {
1550 | return args[argIndex++];
1551 | });
1552 | if (typeof console !== 'undefined') {
1553 | console.error(message);
1554 | }
1555 | try {
1556 | // --- Welcome to debugging React ---
1557 | // This error was thrown as a convenience so that you can use this stack
1558 | // to find the callsite that caused this warning to fire.
1559 | throw new Error(message);
1560 | } catch (x) {}
1561 | };
1562 |
1563 | warning = function warning(condition, format) {
1564 | if (format === undefined) {
1565 | throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
1566 | }
1567 |
1568 | if (format.indexOf('Failed Composite propType: ') === 0) {
1569 | return; // Ignore CompositeComponent proptype check.
1570 | }
1571 |
1572 | if (!condition) {
1573 | for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
1574 | args[_key2 - 2] = arguments[_key2];
1575 | }
1576 |
1577 | printWarning.apply(undefined, [format].concat(args));
1578 | }
1579 | };
1580 | }
1581 |
1582 | module.exports = warning;
1583 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)))
1584 |
1585 | /***/ }),
1586 | /* 11 */
1587 | /***/ (function(module, exports) {
1588 |
1589 | "use strict";
1590 |
1591 | /**
1592 | * Copyright (c) 2013-present, Facebook, Inc.
1593 | *
1594 | * This source code is licensed under the MIT license found in the
1595 | * LICENSE file in the root directory of this source tree.
1596 | *
1597 | *
1598 | */
1599 |
1600 | function makeEmptyFunction(arg) {
1601 | return function () {
1602 | return arg;
1603 | };
1604 | }
1605 |
1606 | /**
1607 | * This function accepts and discards inputs; it has no side effects. This is
1608 | * primarily useful idiomatically for overridable function endpoints which
1609 | * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
1610 | */
1611 | var emptyFunction = function emptyFunction() {};
1612 |
1613 | emptyFunction.thatReturns = makeEmptyFunction;
1614 | emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
1615 | emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
1616 | emptyFunction.thatReturnsNull = makeEmptyFunction(null);
1617 | emptyFunction.thatReturnsThis = function () {
1618 | return this;
1619 | };
1620 | emptyFunction.thatReturnsArgument = function (arg) {
1621 | return arg;
1622 | };
1623 |
1624 | module.exports = emptyFunction;
1625 |
1626 | /***/ }),
1627 | /* 12 */
1628 | /***/ (function(module, exports) {
1629 |
1630 | module.exports = __WEBPACK_EXTERNAL_MODULE_12__;
1631 |
1632 | /***/ }),
1633 | /* 13 */
1634 | /***/ (function(module, exports) {
1635 |
1636 | module.exports = __WEBPACK_EXTERNAL_MODULE_13__;
1637 |
1638 | /***/ }),
1639 | /* 14 */
1640 | /***/ (function(module, exports, __webpack_require__) {
1641 |
1642 | var vars = __webpack_require__(2);
1643 |
1644 | module.exports = vars.createClass('Doughnut', ['getSegmentsAtEvent']);
1645 |
1646 |
1647 | /***/ }),
1648 | /* 15 */
1649 | /***/ (function(module, exports, __webpack_require__) {
1650 |
1651 | var vars = __webpack_require__(2);
1652 |
1653 | module.exports = vars.createClass('Line', ['getPointsAtEvent']);
1654 |
1655 |
1656 | /***/ }),
1657 | /* 16 */
1658 | /***/ (function(module, exports, __webpack_require__) {
1659 |
1660 | var vars = __webpack_require__(2);
1661 |
1662 | module.exports = vars.createClass('Pie', ['getSegmentsAtEvent']);
1663 |
1664 |
1665 | /***/ }),
1666 | /* 17 */
1667 | /***/ (function(module, exports, __webpack_require__) {
1668 |
1669 | var vars = __webpack_require__(2);
1670 |
1671 | module.exports = vars.createClass('PolarArea', ['getSegmentsAtEvent']);
1672 |
1673 |
1674 | /***/ }),
1675 | /* 18 */
1676 | /***/ (function(module, exports, __webpack_require__) {
1677 |
1678 | var vars = __webpack_require__(2);
1679 |
1680 | module.exports = vars.createClass('Radar', ['getPointsAtEvent']);
1681 |
1682 |
1683 | /***/ })
1684 | /******/ ])
1685 | });
1686 | ;
--------------------------------------------------------------------------------
/dist/react-chartjs.min.js:
--------------------------------------------------------------------------------
1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react"),require("react-dom"),require("Chartjs")):"function"==typeof define&&define.amd?define(["react","react-dom","Chartjs"],e):"object"==typeof exports?exports["react-chartjs"]=e(require("react"),require("react-dom"),require("Chartjs")):t["react-chartjs"]=e(t.React,t.ReactDOM,t.Chart)}(this,function(t,e,n){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return t[o].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){t.exports={Bar:n(1),Doughnut:n(14),Line:n(15),Pie:n(16),PolarArea:n(17),Radar:n(18),createClass:n(2).createClass}},function(t,e,n){var o=n(2);t.exports=o.createClass("Bar",["getBarsAtEvent"])},function(t,e,n){var o=n(3),r=n(4),a=n(12);t.exports={createClass:function(t,e,c){function u(t){l[t]=function(){return this.state.chart[t].apply(this.state.chart,arguments)}}var p=["data","options","redraw"],l={displayName:t+"Chart",getInitialState:function(){return{}},render:function(){var t={ref:"canvass"};for(var e in this.props)this.props.hasOwnProperty(e)&&p.indexOf(e)===-1&&(t[e]=this.props[e]);return o.createElement("canvas",t)}},f=["clear","stop","resize","toBase64Image","generateLegend","update","addData","removeData"];l.componentDidMount=function(){this.initializeChart(this.props)},l.componentWillUnmount=function(){var t=this.state.chart;t.destroy()},l.componentWillReceiveProps=function(t){var e=this.state.chart;t.redraw?(e.destroy(),this.initializeChart(t)):(c=c||i[e.name],s(t,e,c),e.scale&&(e.scale.xLabels=t.data.labels,e.scale.calculateXLabelRotation&&e.scale.calculateXLabelRotation()),e.update())},l.initializeChart=function(e){var o=n(13),r=a.findDOMNode(this),i=r.getContext("2d"),s=new o(i)[t](e.data,e.options||{});this.state.chart=s},l.getChart=function(){return this.state.chart},l.getCanvass=function(){return this.refs.canvass},l.getCanvas=l.getCanvass;var d;for(d=0;dt.data.labels.length;)e.removeData();t.data.datasets.forEach(function(o,r){o.data.forEach(function(o,a){"undefined"==typeof e.datasets[r][n][a]?c(t,e,r,a):e.datasets[r][n][a].value=o})})}},c=function(t,e,n,o){var r=[];t.data.datasets.forEach(function(t){r.push(t.data[o])}),e.addData(r,t.data.labels[n])}},function(e,n){e.exports=t},function(t,e,n){"use strict";var o=n(3),r=n(5);if("undefined"==typeof o)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var a=(new o.Component).updater;t.exports=r(o.Component,o.isValidElement,a)},function(t,e,n){(function(e){"use strict";function o(t){return t}function r(t,n,r){function l(t,n,o){for(var r in n)n.hasOwnProperty(r)&&"production"!==e.env.NODE_ENV&&c("function"==typeof n[r],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",t.displayName||"ReactClass",u[o],r)}function f(t,e){var n=D.hasOwnProperty(e)?D[e]:null;w.hasOwnProperty(e)&&s("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",e),t&&s("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e)}function d(t,o){if(o){s("function"!=typeof o,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),s(!n(o),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=t.prototype,a=r.__reactAutoBindPairs;o.hasOwnProperty(p)&&b.mixins(t,o.mixins);for(var i in o)if(o.hasOwnProperty(i)&&i!==p){var u=o[i],l=r.hasOwnProperty(i);if(f(l,i),b.hasOwnProperty(i))b[i](t,u);else{var d=D.hasOwnProperty(i),h="function"==typeof u,m=h&&!d&&!l&&o.autobind!==!1;if(m)a.push(i,u),r[i]=u;else if(l){var E=D[i];s(d&&("DEFINE_MANY_MERGED"===E||"DEFINE_MANY"===E),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",E,i),"DEFINE_MANY_MERGED"===E?r[i]=y(r[i],u):"DEFINE_MANY"===E&&(r[i]=v(r[i],u))}else r[i]=u,"production"!==e.env.NODE_ENV&&"function"==typeof u&&o.displayName&&(r[i].displayName=o.displayName+"_"+i)}}}else if("production"!==e.env.NODE_ENV){var g=typeof o,N="object"===g&&null!==o;"production"!==e.env.NODE_ENV&&c(N,"%s: You're attempting to include a mixin that is either null or not an object. Check the mixins included by the component, as well as any mixins they include themselves. Expected object but got %s.",t.displayName||"ReactClass",null===o?null:g)}}function h(t,e){if(e)for(var n in e){var o=e[n];if(e.hasOwnProperty(n)){var r=n in b;s(!r,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var a=n in t;s(!a,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),t[n]=o}}}function m(t,e){s(t&&e&&"object"==typeof t&&"object"==typeof e,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in e)e.hasOwnProperty(n)&&(s(void 0===t[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),t[n]=e[n]);return t}function y(t,e){return function(){var n=t.apply(this,arguments),o=e.apply(this,arguments);if(null==n)return o;if(null==o)return n;var r={};return m(r,n),m(r,o),r}}function v(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function E(t,n){var o=n.bind(t);if("production"!==e.env.NODE_ENV){o.__reactBoundContext=t,o.__reactBoundMethod=n,o.__reactBoundArguments=null;var r=t.constructor.displayName,a=o.bind;o.bind=function(i){for(var s=arguments.length,u=Array(s>1?s-1:0),p=1;p1)for(var n=1;n1?e-1:0),o=1;o2?n-2:0),r=2;r nextProps.data.labels.length) {
129 | chart.removeData();
130 | }
131 | nextProps.data.datasets.forEach(function(set, setIndex) {
132 | set.data.forEach(function(val, pointIndex) {
133 | if (typeof(chart.datasets[setIndex][dataKey][pointIndex]) == "undefined") {
134 | addData(nextProps, chart, setIndex, pointIndex);
135 | } else {
136 | chart.datasets[setIndex][dataKey][pointIndex].value = val;
137 | }
138 | });
139 | });
140 | }
141 | };
142 |
143 | var addData = function(nextProps, chart, setIndex, pointIndex) {
144 | var values = [];
145 | nextProps.data.datasets.forEach(function(set) {
146 | values.push(set.data[pointIndex]);
147 | });
148 | chart.addData(values, nextProps.data.labels[setIndex]);
149 | };
150 |
--------------------------------------------------------------------------------
/lib/doughnut.js:
--------------------------------------------------------------------------------
1 | var vars = require('./core');
2 |
3 | module.exports = vars.createClass('Doughnut', ['getSegmentsAtEvent']);
4 |
--------------------------------------------------------------------------------
/lib/line.js:
--------------------------------------------------------------------------------
1 | var vars = require('./core');
2 |
3 | module.exports = vars.createClass('Line', ['getPointsAtEvent']);
4 |
--------------------------------------------------------------------------------
/lib/pie.js:
--------------------------------------------------------------------------------
1 | var vars = require('./core');
2 |
3 | module.exports = vars.createClass('Pie', ['getSegmentsAtEvent']);
4 |
--------------------------------------------------------------------------------
/lib/polar-area.js:
--------------------------------------------------------------------------------
1 | var vars = require('./core');
2 |
3 | module.exports = vars.createClass('PolarArea', ['getSegmentsAtEvent']);
4 |
--------------------------------------------------------------------------------
/lib/radar.js:
--------------------------------------------------------------------------------
1 | var vars = require('./core');
2 |
3 | module.exports = vars.createClass('Radar', ['getPointsAtEvent']);
4 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-chartjs",
3 | "version": "1.2.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "acorn": {
8 | "version": "3.3.0",
9 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
10 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
11 | "dev": true
12 | },
13 | "align-text": {
14 | "version": "0.1.4",
15 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
16 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
17 | "dev": true,
18 | "requires": {
19 | "kind-of": "3.2.2",
20 | "longest": "1.0.1",
21 | "repeat-string": "1.6.1"
22 | }
23 | },
24 | "amdefine": {
25 | "version": "1.0.1",
26 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
27 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
28 | "dev": true
29 | },
30 | "anymatch": {
31 | "version": "1.3.2",
32 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
33 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
34 | "dev": true,
35 | "requires": {
36 | "micromatch": "2.3.11",
37 | "normalize-path": "2.1.1"
38 | }
39 | },
40 | "arr-diff": {
41 | "version": "2.0.0",
42 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
43 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
44 | "dev": true,
45 | "requires": {
46 | "arr-flatten": "1.1.0"
47 | }
48 | },
49 | "arr-flatten": {
50 | "version": "1.1.0",
51 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
52 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
53 | "dev": true
54 | },
55 | "array-unique": {
56 | "version": "0.2.1",
57 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
58 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
59 | "dev": true
60 | },
61 | "asap": {
62 | "version": "2.0.6",
63 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
64 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
65 | },
66 | "assert": {
67 | "version": "1.4.1",
68 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
69 | "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
70 | "dev": true,
71 | "requires": {
72 | "util": "0.10.3"
73 | }
74 | },
75 | "async": {
76 | "version": "1.5.2",
77 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
78 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
79 | "dev": true
80 | },
81 | "async-each": {
82 | "version": "1.0.1",
83 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
84 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
85 | "dev": true
86 | },
87 | "balanced-match": {
88 | "version": "1.0.0",
89 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
90 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
91 | "dev": true
92 | },
93 | "base64-js": {
94 | "version": "1.2.1",
95 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
96 | "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
97 | "dev": true
98 | },
99 | "big.js": {
100 | "version": "3.2.0",
101 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
102 | "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
103 | "dev": true
104 | },
105 | "binary-extensions": {
106 | "version": "1.11.0",
107 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
108 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
109 | "dev": true
110 | },
111 | "brace-expansion": {
112 | "version": "1.1.8",
113 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
114 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
115 | "dev": true,
116 | "requires": {
117 | "balanced-match": "1.0.0",
118 | "concat-map": "0.0.1"
119 | }
120 | },
121 | "braces": {
122 | "version": "1.8.5",
123 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
124 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
125 | "dev": true,
126 | "requires": {
127 | "expand-range": "1.8.2",
128 | "preserve": "0.2.0",
129 | "repeat-element": "1.1.2"
130 | }
131 | },
132 | "browserify-aes": {
133 | "version": "0.4.0",
134 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz",
135 | "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
136 | "dev": true,
137 | "requires": {
138 | "inherits": "2.0.3"
139 | }
140 | },
141 | "browserify-zlib": {
142 | "version": "0.1.4",
143 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
144 | "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
145 | "dev": true,
146 | "requires": {
147 | "pako": "0.2.9"
148 | }
149 | },
150 | "buffer": {
151 | "version": "4.9.1",
152 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
153 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
154 | "dev": true,
155 | "requires": {
156 | "base64-js": "1.2.1",
157 | "ieee754": "1.1.8",
158 | "isarray": "1.0.0"
159 | }
160 | },
161 | "builtin-status-codes": {
162 | "version": "3.0.0",
163 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
164 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
165 | "dev": true
166 | },
167 | "camelcase": {
168 | "version": "1.2.1",
169 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
170 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
171 | "dev": true
172 | },
173 | "center-align": {
174 | "version": "0.1.3",
175 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
176 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
177 | "dev": true,
178 | "requires": {
179 | "align-text": "0.1.4",
180 | "lazy-cache": "1.0.4"
181 | }
182 | },
183 | "chokidar": {
184 | "version": "1.7.0",
185 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
186 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
187 | "dev": true,
188 | "requires": {
189 | "anymatch": "1.3.2",
190 | "async-each": "1.0.1",
191 | "glob-parent": "2.0.0",
192 | "inherits": "2.0.3",
193 | "is-binary-path": "1.0.1",
194 | "is-glob": "2.0.1",
195 | "path-is-absolute": "1.0.1",
196 | "readdirp": "2.1.0"
197 | }
198 | },
199 | "cliui": {
200 | "version": "2.1.0",
201 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
202 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
203 | "dev": true,
204 | "requires": {
205 | "center-align": "0.1.3",
206 | "right-align": "0.1.3",
207 | "wordwrap": "0.0.2"
208 | }
209 | },
210 | "clone": {
211 | "version": "1.0.3",
212 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
213 | "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
214 | "dev": true
215 | },
216 | "concat-map": {
217 | "version": "0.0.1",
218 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
219 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
220 | "dev": true
221 | },
222 | "console-browserify": {
223 | "version": "1.1.0",
224 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
225 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
226 | "dev": true,
227 | "requires": {
228 | "date-now": "0.1.4"
229 | }
230 | },
231 | "constants-browserify": {
232 | "version": "1.0.0",
233 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
234 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
235 | "dev": true
236 | },
237 | "core-js": {
238 | "version": "1.2.7",
239 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
240 | "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
241 | },
242 | "core-util-is": {
243 | "version": "1.0.2",
244 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
245 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
246 | "dev": true
247 | },
248 | "create-react-class": {
249 | "version": "15.6.2",
250 | "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz",
251 | "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=",
252 | "requires": {
253 | "fbjs": "0.8.16",
254 | "loose-envify": "1.3.1",
255 | "object-assign": "4.1.1"
256 | }
257 | },
258 | "crypto-browserify": {
259 | "version": "3.3.0",
260 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz",
261 | "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=",
262 | "dev": true,
263 | "requires": {
264 | "browserify-aes": "0.4.0",
265 | "pbkdf2-compat": "2.0.1",
266 | "ripemd160": "0.2.0",
267 | "sha.js": "2.2.6"
268 | }
269 | },
270 | "date-now": {
271 | "version": "0.1.4",
272 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
273 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
274 | "dev": true
275 | },
276 | "decamelize": {
277 | "version": "1.2.0",
278 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
279 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
280 | "dev": true
281 | },
282 | "domain-browser": {
283 | "version": "1.1.7",
284 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
285 | "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
286 | "dev": true
287 | },
288 | "emojis-list": {
289 | "version": "2.1.0",
290 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
291 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
292 | "dev": true
293 | },
294 | "encoding": {
295 | "version": "0.1.12",
296 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
297 | "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
298 | "requires": {
299 | "iconv-lite": "0.4.19"
300 | }
301 | },
302 | "enhanced-resolve": {
303 | "version": "0.9.1",
304 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
305 | "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
306 | "dev": true,
307 | "requires": {
308 | "graceful-fs": "4.1.11",
309 | "memory-fs": "0.2.0",
310 | "tapable": "0.1.10"
311 | },
312 | "dependencies": {
313 | "memory-fs": {
314 | "version": "0.2.0",
315 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz",
316 | "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=",
317 | "dev": true
318 | }
319 | }
320 | },
321 | "errno": {
322 | "version": "0.1.6",
323 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz",
324 | "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==",
325 | "dev": true,
326 | "requires": {
327 | "prr": "1.0.1"
328 | }
329 | },
330 | "events": {
331 | "version": "1.1.1",
332 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
333 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
334 | "dev": true
335 | },
336 | "expand-brackets": {
337 | "version": "0.1.5",
338 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
339 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
340 | "dev": true,
341 | "requires": {
342 | "is-posix-bracket": "0.1.1"
343 | }
344 | },
345 | "expand-range": {
346 | "version": "1.8.2",
347 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
348 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
349 | "dev": true,
350 | "requires": {
351 | "fill-range": "2.2.3"
352 | }
353 | },
354 | "extglob": {
355 | "version": "0.3.2",
356 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
357 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
358 | "dev": true,
359 | "requires": {
360 | "is-extglob": "1.0.0"
361 | }
362 | },
363 | "fbjs": {
364 | "version": "0.8.16",
365 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz",
366 | "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=",
367 | "requires": {
368 | "core-js": "1.2.7",
369 | "isomorphic-fetch": "2.2.1",
370 | "loose-envify": "1.3.1",
371 | "object-assign": "4.1.1",
372 | "promise": "7.3.1",
373 | "setimmediate": "1.0.5",
374 | "ua-parser-js": "0.7.17"
375 | }
376 | },
377 | "filename-regex": {
378 | "version": "2.0.1",
379 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
380 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
381 | "dev": true
382 | },
383 | "fill-range": {
384 | "version": "2.2.3",
385 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
386 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
387 | "dev": true,
388 | "requires": {
389 | "is-number": "2.1.0",
390 | "isobject": "2.1.0",
391 | "randomatic": "1.1.7",
392 | "repeat-element": "1.1.2",
393 | "repeat-string": "1.6.1"
394 | }
395 | },
396 | "for-in": {
397 | "version": "1.0.2",
398 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
399 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
400 | "dev": true
401 | },
402 | "for-own": {
403 | "version": "0.1.5",
404 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
405 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
406 | "dev": true,
407 | "requires": {
408 | "for-in": "1.0.2"
409 | }
410 | },
411 | "glob-base": {
412 | "version": "0.3.0",
413 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
414 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
415 | "dev": true,
416 | "requires": {
417 | "glob-parent": "2.0.0",
418 | "is-glob": "2.0.1"
419 | }
420 | },
421 | "glob-parent": {
422 | "version": "2.0.0",
423 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
424 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
425 | "dev": true,
426 | "requires": {
427 | "is-glob": "2.0.1"
428 | }
429 | },
430 | "graceful-fs": {
431 | "version": "4.1.11",
432 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
433 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
434 | "dev": true
435 | },
436 | "has-flag": {
437 | "version": "1.0.0",
438 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
439 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
440 | "dev": true
441 | },
442 | "https-browserify": {
443 | "version": "0.0.1",
444 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
445 | "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
446 | "dev": true
447 | },
448 | "iconv-lite": {
449 | "version": "0.4.19",
450 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
451 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
452 | },
453 | "ieee754": {
454 | "version": "1.1.8",
455 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
456 | "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
457 | "dev": true
458 | },
459 | "indexof": {
460 | "version": "0.0.1",
461 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
462 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
463 | "dev": true
464 | },
465 | "inherits": {
466 | "version": "2.0.3",
467 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
468 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
469 | "dev": true
470 | },
471 | "interpret": {
472 | "version": "0.6.6",
473 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz",
474 | "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=",
475 | "dev": true
476 | },
477 | "is-binary-path": {
478 | "version": "1.0.1",
479 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
480 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
481 | "dev": true,
482 | "requires": {
483 | "binary-extensions": "1.11.0"
484 | }
485 | },
486 | "is-buffer": {
487 | "version": "1.1.6",
488 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
489 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
490 | "dev": true
491 | },
492 | "is-dotfile": {
493 | "version": "1.0.3",
494 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
495 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
496 | "dev": true
497 | },
498 | "is-equal-shallow": {
499 | "version": "0.1.3",
500 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
501 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
502 | "dev": true,
503 | "requires": {
504 | "is-primitive": "2.0.0"
505 | }
506 | },
507 | "is-extendable": {
508 | "version": "0.1.1",
509 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
510 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
511 | "dev": true
512 | },
513 | "is-extglob": {
514 | "version": "1.0.0",
515 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
516 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
517 | "dev": true
518 | },
519 | "is-glob": {
520 | "version": "2.0.1",
521 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
522 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
523 | "dev": true,
524 | "requires": {
525 | "is-extglob": "1.0.0"
526 | }
527 | },
528 | "is-number": {
529 | "version": "2.1.0",
530 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
531 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
532 | "dev": true,
533 | "requires": {
534 | "kind-of": "3.2.2"
535 | }
536 | },
537 | "is-posix-bracket": {
538 | "version": "0.1.1",
539 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
540 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
541 | "dev": true
542 | },
543 | "is-primitive": {
544 | "version": "2.0.0",
545 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
546 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
547 | "dev": true
548 | },
549 | "is-stream": {
550 | "version": "1.1.0",
551 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
552 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
553 | },
554 | "isarray": {
555 | "version": "1.0.0",
556 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
557 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
558 | "dev": true
559 | },
560 | "isobject": {
561 | "version": "2.1.0",
562 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
563 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
564 | "dev": true,
565 | "requires": {
566 | "isarray": "1.0.0"
567 | }
568 | },
569 | "isomorphic-fetch": {
570 | "version": "2.2.1",
571 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
572 | "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
573 | "requires": {
574 | "node-fetch": "1.7.3",
575 | "whatwg-fetch": "2.0.3"
576 | }
577 | },
578 | "js-tokens": {
579 | "version": "3.0.2",
580 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
581 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
582 | },
583 | "json5": {
584 | "version": "0.5.1",
585 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
586 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
587 | "dev": true
588 | },
589 | "kind-of": {
590 | "version": "3.2.2",
591 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
592 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
593 | "dev": true,
594 | "requires": {
595 | "is-buffer": "1.1.6"
596 | }
597 | },
598 | "lazy-cache": {
599 | "version": "1.0.4",
600 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
601 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
602 | "dev": true
603 | },
604 | "loader-utils": {
605 | "version": "0.2.17",
606 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
607 | "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
608 | "dev": true,
609 | "requires": {
610 | "big.js": "3.2.0",
611 | "emojis-list": "2.1.0",
612 | "json5": "0.5.1",
613 | "object-assign": "4.1.1"
614 | }
615 | },
616 | "longest": {
617 | "version": "1.0.1",
618 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
619 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
620 | "dev": true
621 | },
622 | "loose-envify": {
623 | "version": "1.3.1",
624 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
625 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
626 | "requires": {
627 | "js-tokens": "3.0.2"
628 | }
629 | },
630 | "memory-fs": {
631 | "version": "0.3.0",
632 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz",
633 | "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
634 | "dev": true,
635 | "requires": {
636 | "errno": "0.1.6",
637 | "readable-stream": "2.3.3"
638 | }
639 | },
640 | "micromatch": {
641 | "version": "2.3.11",
642 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
643 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
644 | "dev": true,
645 | "requires": {
646 | "arr-diff": "2.0.0",
647 | "array-unique": "0.2.1",
648 | "braces": "1.8.5",
649 | "expand-brackets": "0.1.5",
650 | "extglob": "0.3.2",
651 | "filename-regex": "2.0.1",
652 | "is-extglob": "1.0.0",
653 | "is-glob": "2.0.1",
654 | "kind-of": "3.2.2",
655 | "normalize-path": "2.1.1",
656 | "object.omit": "2.0.1",
657 | "parse-glob": "3.0.4",
658 | "regex-cache": "0.4.4"
659 | }
660 | },
661 | "minimatch": {
662 | "version": "3.0.4",
663 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
664 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
665 | "dev": true,
666 | "requires": {
667 | "brace-expansion": "1.1.8"
668 | }
669 | },
670 | "minimist": {
671 | "version": "0.0.8",
672 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
673 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
674 | "dev": true
675 | },
676 | "mkdirp": {
677 | "version": "0.5.1",
678 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
679 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
680 | "dev": true,
681 | "requires": {
682 | "minimist": "0.0.8"
683 | }
684 | },
685 | "node-fetch": {
686 | "version": "1.7.3",
687 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
688 | "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
689 | "requires": {
690 | "encoding": "0.1.12",
691 | "is-stream": "1.1.0"
692 | }
693 | },
694 | "node-libs-browser": {
695 | "version": "0.7.0",
696 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz",
697 | "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
698 | "dev": true,
699 | "requires": {
700 | "assert": "1.4.1",
701 | "browserify-zlib": "0.1.4",
702 | "buffer": "4.9.1",
703 | "console-browserify": "1.1.0",
704 | "constants-browserify": "1.0.0",
705 | "crypto-browserify": "3.3.0",
706 | "domain-browser": "1.1.7",
707 | "events": "1.1.1",
708 | "https-browserify": "0.0.1",
709 | "os-browserify": "0.2.1",
710 | "path-browserify": "0.0.0",
711 | "process": "0.11.10",
712 | "punycode": "1.4.1",
713 | "querystring-es3": "0.2.1",
714 | "readable-stream": "2.3.3",
715 | "stream-browserify": "2.0.1",
716 | "stream-http": "2.7.2",
717 | "string_decoder": "0.10.31",
718 | "timers-browserify": "2.0.4",
719 | "tty-browserify": "0.0.0",
720 | "url": "0.11.0",
721 | "util": "0.10.3",
722 | "vm-browserify": "0.0.4"
723 | },
724 | "dependencies": {
725 | "string_decoder": {
726 | "version": "0.10.31",
727 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
728 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
729 | "dev": true
730 | }
731 | }
732 | },
733 | "normalize-path": {
734 | "version": "2.1.1",
735 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
736 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
737 | "dev": true,
738 | "requires": {
739 | "remove-trailing-separator": "1.1.0"
740 | }
741 | },
742 | "object-assign": {
743 | "version": "4.1.1",
744 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
745 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
746 | },
747 | "object.omit": {
748 | "version": "2.0.1",
749 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
750 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
751 | "dev": true,
752 | "requires": {
753 | "for-own": "0.1.5",
754 | "is-extendable": "0.1.1"
755 | }
756 | },
757 | "optimist": {
758 | "version": "0.6.1",
759 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
760 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
761 | "dev": true,
762 | "requires": {
763 | "minimist": "0.0.8",
764 | "wordwrap": "0.0.2"
765 | }
766 | },
767 | "os-browserify": {
768 | "version": "0.2.1",
769 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz",
770 | "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=",
771 | "dev": true
772 | },
773 | "pako": {
774 | "version": "0.2.9",
775 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
776 | "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
777 | "dev": true
778 | },
779 | "parse-glob": {
780 | "version": "3.0.4",
781 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
782 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
783 | "dev": true,
784 | "requires": {
785 | "glob-base": "0.3.0",
786 | "is-dotfile": "1.0.3",
787 | "is-extglob": "1.0.0",
788 | "is-glob": "2.0.1"
789 | }
790 | },
791 | "path-browserify": {
792 | "version": "0.0.0",
793 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
794 | "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
795 | "dev": true
796 | },
797 | "path-is-absolute": {
798 | "version": "1.0.1",
799 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
800 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
801 | "dev": true
802 | },
803 | "pbkdf2-compat": {
804 | "version": "2.0.1",
805 | "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz",
806 | "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=",
807 | "dev": true
808 | },
809 | "preserve": {
810 | "version": "0.2.0",
811 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
812 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
813 | "dev": true
814 | },
815 | "process": {
816 | "version": "0.11.10",
817 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
818 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
819 | "dev": true
820 | },
821 | "process-nextick-args": {
822 | "version": "1.0.7",
823 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
824 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
825 | "dev": true
826 | },
827 | "promise": {
828 | "version": "7.3.1",
829 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
830 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
831 | "requires": {
832 | "asap": "2.0.6"
833 | }
834 | },
835 | "prr": {
836 | "version": "1.0.1",
837 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
838 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
839 | "dev": true
840 | },
841 | "punycode": {
842 | "version": "1.4.1",
843 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
844 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
845 | "dev": true
846 | },
847 | "querystring": {
848 | "version": "0.2.0",
849 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
850 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
851 | "dev": true
852 | },
853 | "querystring-es3": {
854 | "version": "0.2.1",
855 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
856 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
857 | "dev": true
858 | },
859 | "randomatic": {
860 | "version": "1.1.7",
861 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
862 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
863 | "dev": true,
864 | "requires": {
865 | "is-number": "3.0.0",
866 | "kind-of": "4.0.0"
867 | },
868 | "dependencies": {
869 | "is-number": {
870 | "version": "3.0.0",
871 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
872 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
873 | "dev": true,
874 | "requires": {
875 | "kind-of": "3.2.2"
876 | },
877 | "dependencies": {
878 | "kind-of": {
879 | "version": "3.2.2",
880 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
881 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
882 | "dev": true,
883 | "requires": {
884 | "is-buffer": "1.1.6"
885 | }
886 | }
887 | }
888 | },
889 | "kind-of": {
890 | "version": "4.0.0",
891 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
892 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
893 | "dev": true,
894 | "requires": {
895 | "is-buffer": "1.1.6"
896 | }
897 | }
898 | }
899 | },
900 | "readable-stream": {
901 | "version": "2.3.3",
902 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
903 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
904 | "dev": true,
905 | "requires": {
906 | "core-util-is": "1.0.2",
907 | "inherits": "2.0.3",
908 | "isarray": "1.0.0",
909 | "process-nextick-args": "1.0.7",
910 | "safe-buffer": "5.1.1",
911 | "string_decoder": "1.0.3",
912 | "util-deprecate": "1.0.2"
913 | }
914 | },
915 | "readdirp": {
916 | "version": "2.1.0",
917 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
918 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
919 | "dev": true,
920 | "requires": {
921 | "graceful-fs": "4.1.11",
922 | "minimatch": "3.0.4",
923 | "readable-stream": "2.3.3",
924 | "set-immediate-shim": "1.0.1"
925 | }
926 | },
927 | "regex-cache": {
928 | "version": "0.4.4",
929 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
930 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
931 | "dev": true,
932 | "requires": {
933 | "is-equal-shallow": "0.1.3"
934 | }
935 | },
936 | "remove-trailing-separator": {
937 | "version": "1.1.0",
938 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
939 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
940 | "dev": true
941 | },
942 | "repeat-element": {
943 | "version": "1.1.2",
944 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
945 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
946 | "dev": true
947 | },
948 | "repeat-string": {
949 | "version": "1.6.1",
950 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
951 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
952 | "dev": true
953 | },
954 | "right-align": {
955 | "version": "0.1.3",
956 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
957 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
958 | "dev": true,
959 | "requires": {
960 | "align-text": "0.1.4"
961 | }
962 | },
963 | "ripemd160": {
964 | "version": "0.2.0",
965 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz",
966 | "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=",
967 | "dev": true
968 | },
969 | "safe-buffer": {
970 | "version": "5.1.1",
971 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
972 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
973 | "dev": true
974 | },
975 | "set-immediate-shim": {
976 | "version": "1.0.1",
977 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
978 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
979 | "dev": true
980 | },
981 | "setimmediate": {
982 | "version": "1.0.5",
983 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
984 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
985 | },
986 | "sha.js": {
987 | "version": "2.2.6",
988 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz",
989 | "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=",
990 | "dev": true
991 | },
992 | "source-list-map": {
993 | "version": "0.1.8",
994 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
995 | "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
996 | "dev": true
997 | },
998 | "source-map": {
999 | "version": "0.5.7",
1000 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1001 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1002 | "dev": true
1003 | },
1004 | "stream-browserify": {
1005 | "version": "2.0.1",
1006 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
1007 | "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
1008 | "dev": true,
1009 | "requires": {
1010 | "inherits": "2.0.3",
1011 | "readable-stream": "2.3.3"
1012 | }
1013 | },
1014 | "stream-http": {
1015 | "version": "2.7.2",
1016 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
1017 | "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
1018 | "dev": true,
1019 | "requires": {
1020 | "builtin-status-codes": "3.0.0",
1021 | "inherits": "2.0.3",
1022 | "readable-stream": "2.3.3",
1023 | "to-arraybuffer": "1.0.1",
1024 | "xtend": "4.0.1"
1025 | }
1026 | },
1027 | "string_decoder": {
1028 | "version": "1.0.3",
1029 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
1030 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
1031 | "dev": true,
1032 | "requires": {
1033 | "safe-buffer": "5.1.1"
1034 | }
1035 | },
1036 | "supports-color": {
1037 | "version": "3.2.3",
1038 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
1039 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
1040 | "dev": true,
1041 | "requires": {
1042 | "has-flag": "1.0.0"
1043 | }
1044 | },
1045 | "tapable": {
1046 | "version": "0.1.10",
1047 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz",
1048 | "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=",
1049 | "dev": true
1050 | },
1051 | "timers-browserify": {
1052 | "version": "2.0.4",
1053 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
1054 | "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
1055 | "dev": true,
1056 | "requires": {
1057 | "setimmediate": "1.0.5"
1058 | }
1059 | },
1060 | "to-arraybuffer": {
1061 | "version": "1.0.1",
1062 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
1063 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
1064 | "dev": true
1065 | },
1066 | "tty-browserify": {
1067 | "version": "0.0.0",
1068 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
1069 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
1070 | "dev": true
1071 | },
1072 | "ua-parser-js": {
1073 | "version": "0.7.17",
1074 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz",
1075 | "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g=="
1076 | },
1077 | "uglify-js": {
1078 | "version": "2.8.29",
1079 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
1080 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
1081 | "dev": true,
1082 | "requires": {
1083 | "source-map": "0.5.7",
1084 | "uglify-to-browserify": "1.0.2",
1085 | "yargs": "3.10.0"
1086 | }
1087 | },
1088 | "uglify-to-browserify": {
1089 | "version": "1.0.2",
1090 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
1091 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
1092 | "dev": true
1093 | },
1094 | "url": {
1095 | "version": "0.11.0",
1096 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
1097 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
1098 | "dev": true,
1099 | "requires": {
1100 | "punycode": "1.3.2",
1101 | "querystring": "0.2.0"
1102 | },
1103 | "dependencies": {
1104 | "punycode": {
1105 | "version": "1.3.2",
1106 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
1107 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
1108 | "dev": true
1109 | }
1110 | }
1111 | },
1112 | "util": {
1113 | "version": "0.10.3",
1114 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
1115 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
1116 | "dev": true,
1117 | "requires": {
1118 | "inherits": "2.0.1"
1119 | },
1120 | "dependencies": {
1121 | "inherits": {
1122 | "version": "2.0.1",
1123 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
1124 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
1125 | "dev": true
1126 | }
1127 | }
1128 | },
1129 | "util-deprecate": {
1130 | "version": "1.0.2",
1131 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1132 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
1133 | "dev": true
1134 | },
1135 | "vm-browserify": {
1136 | "version": "0.0.4",
1137 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
1138 | "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
1139 | "dev": true,
1140 | "requires": {
1141 | "indexof": "0.0.1"
1142 | }
1143 | },
1144 | "watchpack": {
1145 | "version": "0.2.9",
1146 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz",
1147 | "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
1148 | "dev": true,
1149 | "requires": {
1150 | "async": "0.9.2",
1151 | "chokidar": "1.7.0",
1152 | "graceful-fs": "4.1.11"
1153 | },
1154 | "dependencies": {
1155 | "async": {
1156 | "version": "0.9.2",
1157 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
1158 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
1159 | "dev": true
1160 | }
1161 | }
1162 | },
1163 | "webpack": {
1164 | "version": "1.15.0",
1165 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz",
1166 | "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=",
1167 | "dev": true,
1168 | "requires": {
1169 | "acorn": "3.3.0",
1170 | "async": "1.5.2",
1171 | "clone": "1.0.3",
1172 | "enhanced-resolve": "0.9.1",
1173 | "interpret": "0.6.6",
1174 | "loader-utils": "0.2.17",
1175 | "memory-fs": "0.3.0",
1176 | "mkdirp": "0.5.1",
1177 | "node-libs-browser": "0.7.0",
1178 | "optimist": "0.6.1",
1179 | "supports-color": "3.2.3",
1180 | "tapable": "0.1.10",
1181 | "uglify-js": "2.7.5",
1182 | "watchpack": "0.2.9",
1183 | "webpack-core": "0.6.9"
1184 | },
1185 | "dependencies": {
1186 | "uglify-js": {
1187 | "version": "2.7.5",
1188 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
1189 | "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
1190 | "dev": true,
1191 | "requires": {
1192 | "async": "0.2.10",
1193 | "source-map": "0.5.7",
1194 | "uglify-to-browserify": "1.0.2",
1195 | "yargs": "3.10.0"
1196 | },
1197 | "dependencies": {
1198 | "async": {
1199 | "version": "0.2.10",
1200 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
1201 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
1202 | "dev": true
1203 | }
1204 | }
1205 | }
1206 | }
1207 | },
1208 | "webpack-core": {
1209 | "version": "0.6.9",
1210 | "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
1211 | "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
1212 | "dev": true,
1213 | "requires": {
1214 | "source-list-map": "0.1.8",
1215 | "source-map": "0.4.4"
1216 | },
1217 | "dependencies": {
1218 | "source-map": {
1219 | "version": "0.4.4",
1220 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
1221 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
1222 | "dev": true,
1223 | "requires": {
1224 | "amdefine": "1.0.1"
1225 | }
1226 | }
1227 | }
1228 | },
1229 | "whatwg-fetch": {
1230 | "version": "2.0.3",
1231 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz",
1232 | "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="
1233 | },
1234 | "window-size": {
1235 | "version": "0.1.0",
1236 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
1237 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
1238 | "dev": true
1239 | },
1240 | "wordwrap": {
1241 | "version": "0.0.2",
1242 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
1243 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
1244 | "dev": true
1245 | },
1246 | "xtend": {
1247 | "version": "4.0.1",
1248 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
1249 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
1250 | "dev": true
1251 | },
1252 | "yargs": {
1253 | "version": "3.10.0",
1254 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
1255 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
1256 | "dev": true,
1257 | "requires": {
1258 | "camelcase": "1.2.1",
1259 | "cliui": "2.1.0",
1260 | "decamelize": "1.2.0",
1261 | "window-size": "0.1.0"
1262 | }
1263 | }
1264 | }
1265 | }
1266 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-chartjs",
3 | "version": "1.2.0",
4 | "description": "react charting components using the chartjs lib",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "mocha",
8 | "build": "webpack index.js dist/react-chartjs.js",
9 | "dist": "COMPRESS=1 webpack index.js dist/react-chartjs.min.js",
10 | "prepublishOnly": "npm run build && npm run dist"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/jhudson8/react-chartjs"
15 | },
16 | "keywords": [
17 | "react",
18 | "react-component",
19 | "chart",
20 | "charts",
21 | "graph",
22 | "chartjs"
23 | ],
24 | "author": "Joe Hudson",
25 | "license": "MIT",
26 | "bugs": {
27 | "url": "https://github.com/jhudson8/react-chartjs/issues"
28 | },
29 | "homepage": "https://github.com/jhudson8/react-chartjs",
30 | "peerDependencies": {
31 | "react": "*",
32 | "react-dom": "*",
33 | "chart.js": "^1.1.1"
34 | },
35 | "devDependencies": {
36 | "uglify-js": "^2.4.16",
37 | "webpack": "^1.4.14"
38 | },
39 | "dependencies": {
40 | "create-react-class": "^15.6.2"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/release-notes.md:
--------------------------------------------------------------------------------
1 | # Release Notes
2 |
3 | ## v0.6.0 - March 25th, 2015
4 | - [#12](https://github.com/jhudson8/react-chartjs/pull/12) - Allow custom chart types. ([@tcard](https://api.github.com/users/tcard))
5 | - [#11](https://github.com/jhudson8/react-chartjs/pull/11) - fix failed to update points for doughnut chart ([@neoalienson](https://api.github.com/users/neoal
6 | ienson))
7 |
8 | a ```createChart``` method is exposed
9 |
10 | description from associated PR
11 |
12 | This changeset exposes the createClass method in lib/core, and adds a third argument to it so that you can pass the dataKey value that was previously fixed in the dataKeys variable.
13 |
14 | E. g. if you want to use https://github.com/Regaddi/Chart.StackedBar.js, you would do something like var StackedBarChart = require('react-chartjs').createClass('StackedBar', ['getBarsAtEvent'], 'bars'); (provided you previously registered StackedBar with Chart.js, of course).
15 |
16 |
17 | ## v0.5.0 - February 23rd, 2015
18 | - Added a ```getChart``` method on the chart components to return the chartjs object
19 | - Added a ```getCanvass``` method on the chart components to return the canvass DOM element
20 |
21 | ## v0.4.0 - February 7th, 2015
22 | - Added Chart.js as a peer dependency (thanks @pghalliday)
23 |
24 | ## v0.3.0 - February 6th, 2015
25 | - Remove AMD and javascript include support to make commonjs behavior simple (thanks @seanadkinson)
26 |
27 | ## v0.2.1 - January 26th, 2015
28 | - AMD bug fix
29 |
30 |
31 | ## v0.2.0 - January 26th, 2015
32 | - Allow for commonJS code to not require initialization
33 |
34 |
35 | ## v0.1.3 - January 19th, 2015
36 | - Actually include the commit mentioned with the 1.2 release
37 |
38 |
39 | ## v0.1.2 - January 13th, 2015
40 | - fix chart rendering error when properties change
41 |
42 |
43 | ## v0.1.1 - December 28th, 2014
44 | - fix AMD loader - 8c6b8ea
45 |
46 |
47 | ## v0.1.0 - December 28th, 2014
48 | - add AMD loader - c04a10a
49 |
50 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack'),
2 | plugins = [];
3 |
4 | if (process.env.COMPRESS) {
5 | plugins.push(
6 | new webpack.optimize.UglifyJsPlugin({
7 | compressor: {
8 | warnings: false
9 | }
10 | })
11 | );
12 | }
13 |
14 | module.exports = {
15 |
16 | output: {
17 | library: 'react-chartjs',
18 | libraryTarget: 'umd'
19 | },
20 |
21 | externals: [
22 | {
23 | "react": {
24 | root: "React",
25 | commonjs2: "react",
26 | commonjs: "react",
27 | amd: "react"
28 | },
29 | "react-dom": {
30 | root: "ReactDOM",
31 | commonjs2: "react-dom",
32 | commonjs: "react-dom",
33 | amd: "react-dom"
34 | },
35 | "chart.js": {
36 | root: "Chart",
37 | commonjs2: "Chartjs",
38 | commonjs: "Chartjs",
39 | amd: "Chartjs"
40 | }
41 | }
42 | ],
43 |
44 | node: {
45 | Buffer: false
46 | },
47 |
48 | plugins: plugins
49 |
50 | };
51 |
--------------------------------------------------------------------------------