├── .gitignore
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── public
├── favicon.ico
├── index.html
└── manifest.json
├── src
├── App.js
├── app.css
├── component
│ ├── README.md
│ ├── UploadIcon.svg
│ ├── compiled.js
│ ├── index.css
│ ├── index.d.ts
│ ├── index.js
│ ├── package-lock.json
│ └── package.json
└── index.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | node_modules
5 | .idea
6 | # testing
7 | /coverage
8 |
9 | # production
10 | build
11 |
12 | # misc
13 | .DS_Store
14 | .env.local
15 | .env.development.local
16 | .env.test.local
17 | .env.production.local
18 |
19 | npm-debug.log*
20 | yarn-debug.log*
21 | yarn-error.log*
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Barak Cohen
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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Images uploader UI component
2 |
3 | Simple component for upload and validate (client side) images with preview built with React.js.
4 | This package use ['react-flip-move'](https://github.com/joshwcomeau/react-flip-move) for animate the file preview images.
5 |
6 | ## Installation
7 |
8 | ```bash
9 | npm install --save react-images-upload
10 | ```
11 |
12 | ## Usage
13 | ### Using Classes
14 | ```javascript
15 | import React from "react";
16 | import ImageUploader from "react-images-upload";
17 |
18 | class App extends React.Component {
19 | constructor(props) {
20 | super(props);
21 | this.state = { pictures: [] };
22 | this.onDrop = this.onDrop.bind(this);
23 | }
24 |
25 | onDrop(pictureFiles, pictureDataURLs) {
26 | this.setState({
27 | pictures: this.state.pictures.concat(pictureFiles)
28 | });
29 | }
30 |
31 | render() {
32 | return (
33 |
40 | );
41 | }
42 | }
43 | ```
44 | ### Using Hooks
45 | ```javascript
46 | import React, { useState } from "react";
47 | import ImageUploader from "react-images-upload";
48 |
49 | const App = props => {
50 | const [pictures, setPictures] = useState([]);
51 |
52 | const onDrop = picture => {
53 | setPictures([...pictures, picture]);
54 | };
55 | return (
56 |
63 | );
64 | };
65 |
66 | export default App;
67 | ```
68 | ### Available Options
69 |
70 | | parameter | type | default | description |
71 | | :-------------: | :------: | :--------------------------------: | :------------------------------------------------------------ |
72 | | className | String | - | Class name for the input. |
73 | | onChange | Function | - | On change handler for the input. |
74 | | buttonClassName | String | - | Class name for upload button. |
75 | | buttonStyles | Object | - | Inline styles for upload button. |
76 | | withPreview | Boolean | false | Show preview of selected images. |
77 | | defaultImages | Array | ['imgUrl1', 'imgUrl2'] | Pre-populate with default images. |
78 | | accept | String | "accept=image/\*" | Accept attribute for file input. |
79 | | name | String | - | Input name. |
80 | | withIcon | Boolean | true | If true, show upload icon on top |
81 | | buttonText | String | 'Choose images' | The text that display in the button. |
82 | | buttonType | String | 'submit' | The value of the button's "type" attribute. |
83 | | withLabel | Boolean | true | Show instruction label |
84 | | label | String | 'Max file size: 5mb, accepted: jpg, gif, png | Label text |
85 | | labelStyles | Object | - | Inline styles for the label. |
86 | | labelClass | string | - | Class name for the label |
87 | | imgExtension | Array | ['.jpg', '.gif', '.png', '.gif'] | Supported image extension (will use in the image validation). |
88 | | maxFileSize | Number | 5242880 | Max image size. |
89 | | fileSizeError | String | " file size is too big" | Label for file size error message. |
90 | | fileTypeError | String | " is not supported file extension" | Label for file extension error message. |
91 | | errorClass | String | - | Class for error messages |
92 | | errorStyle | Object | - | Inline styles for errors |
93 | | singleImage | Boolean | false | Upload one single image |
94 |
95 | ### Development
96 |
97 | Clone the repo and run `npm ci`. Start development server with `npm start`.
98 |
99 | ### License
100 |
101 | MIT
102 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-images-upload-demo",
3 | "version": "0.2.1",
4 | "private": true,
5 | "homepage": "https://jakehartnell.github.io/react-images-upload/",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/jakehartnell/react-images-upload"
9 | },
10 | "dependencies": {
11 | "react": "^16.12.0",
12 | "react-dom": "^16.12.0",
13 | "react-flip-move": "^3.0.4",
14 | "react-scripts": "^1.1.5",
15 | "react-syntax-highlighter": "^7.0.4"
16 | },
17 | "scripts": {
18 | "predeploy": "npm run build",
19 | "deploy": "gh-pages -d build",
20 | "start": "react-scripts start",
21 | "build": "react-scripts build",
22 | "test": "react-scripts test --env=jsdom",
23 | "eject": "react-scripts eject"
24 | },
25 | "devDependencies": {
26 | "babel-cli": "^6.26.0",
27 | "babel-core": "^6.26.3",
28 | "babel-loader": "^7.1.5",
29 | "babel-preset-env": "^1.7.0",
30 | "babel-preset-react": "^6.24.1",
31 | "css-loader": "^0.28.11",
32 | "extract-text-webpack-plugin": "^4.0.0-beta.0",
33 | "gh-pages": "^2.2.0",
34 | "html-webpack-plugin": "^3.2.0",
35 | "style-loader": "^0.21.0",
36 | "webpack": "^4.41.6",
37 | "webpack-cli": "^2.1.5",
38 | "webpack-dev-server": "^3.10.3"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JakeHartnell/react-images-upload/f97dce97cde59b72f0bd16b8bb1b6028f8f940d5/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
13 |
22 | React App
23 |
24 |
25 |
28 |
29 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | }
10 | ],
11 | "start_url": "./index.html",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SyntaxHighlighter from 'react-syntax-highlighter';
3 | import ImageUploader from './component/index.js';
4 | import { rainbow } from 'react-syntax-highlighter/styles/hljs';
5 |
6 | const steps = {
7 | one: `npm install --save react-images-upload`,
8 | two: `import React from 'react';
9 | import ImageUploader from 'react-images-upload';
10 |
11 | class App extends React.Component {
12 |
13 | constructor(props) {
14 | super(props);
15 | this.state = { pictures: [] };
16 | this.onDrop = this.onDrop.bind(this);
17 | }
18 |
19 | onDrop(pictureFiles, pictureDataURLs) {
20 | this.setState({
21 | pictures: pictureFiles
22 | });
23 | }
24 |
25 | render() {
26 | return (
27 |
34 | );
35 | }
36 | }`
37 | }
38 |
39 |
40 | export default class App extends React.PureComponent {
41 | render() {
42 | return (
43 |
44 |
React-images-upload
45 |
Simple component for upload and validate (client side) images with preview built with React.js.
46 |
Demo
47 |
49 |
Installation
50 |
51 | {steps.one}
52 |
53 |
Usage
54 |
55 | {steps.two}
56 |
57 |
58 |
59 |
60 |
61 | parameter |
62 | type |
63 | default |
64 | description |
65 |
66 |
67 |
68 |
69 | className |
70 | String |
71 | - |
72 | Class name for the input. |
73 |
74 |
75 | fileContainerStyle |
76 | Object |
77 | - |
78 | Inline styles for file upload container. |
79 |
80 |
81 | onChange |
82 | Function |
83 | - |
84 | On change handler for the input. |
85 |
86 |
87 | onDelete |
88 | Function |
89 | - |
90 | On delete handler for the image. |
91 |
92 |
93 | buttonClassName |
94 | String |
95 | - |
96 | Class name for upload button. |
97 |
98 |
99 | buttonStyles |
100 | Object |
101 | - |
102 | Inline styles for upload button. |
103 |
104 |
105 | withPreview |
106 | Boolean |
107 | true |
108 | Show preview of selected images. |
109 |
110 |
111 | buttonClassName |
112 | String |
113 | - |
114 | Class name for upload button. |
115 |
116 |
117 | accept |
118 | String |
119 | "accept=image" |
120 | Accept attribute for file input. |
121 |
122 |
123 | name |
124 | String |
125 | - |
126 | Input name. |
127 |
128 |
129 | withIcon |
130 | Boolean |
131 | true |
132 | If true, show upload icon on top |
133 |
134 |
135 | buttonText |
136 | String |
137 | 'Choose images' |
138 | The text that display in the button. |
139 |
140 |
141 | buttonType |
142 | String |
143 | 'submit' |
144 | The value of the button's type attribute |
145 |
146 |
147 | withLabel |
148 | Boolean |
149 | true |
150 | Show instruction label |
151 |
152 |
153 | labelStyles |
154 | Object |
155 | - |
156 | Inline styles for the label. |
157 |
158 |
159 | labelClass |
160 | string |
161 | - |
162 | Class name for the label |
163 |
164 |
165 | imgExtension |
166 | Array |
167 | ['.jpg', '.gif', '.png', '.gif'] |
168 | Supported image extension (will use in the image validation). |
169 |
170 |
171 | maxFileSize |
172 | Number |
173 | 5mb |
174 | Max image size. |
175 |
176 |
177 | fileSizeError |
178 | String |
179 | " file size is too big" |
180 | Label for file size error message. |
181 |
182 |
183 | fileTypeError |
184 | String |
185 | " is not supported file extension" |
186 | Label for file extension error message. |
187 |
188 |
189 | errorClass |
190 | String |
191 | - |
192 | Class for error messages |
193 |
194 |
195 | errorStyle |
196 | Object |
197 | ['.jpg', '.gif', '.png', '.gif'] |
198 | Inline styles for errors . |
199 |
200 |
201 | singleImage |
202 | Boolean |
203 | false |
204 | Limits one image at a time. |
205 |
206 |
207 | defaultImage |
208 | String |
209 | false |
210 | Image url for the default preview (example an already uploaded image) |
211 |
212 |
213 |
214 |
215 |
216 | );
217 | }
218 | }
219 |
--------------------------------------------------------------------------------
/src/app.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Roboto:300,400,700');
2 |
3 | body {
4 | font-family: 'Roboto', sans-serif;
5 | background: #d5d9e1;
6 | }
7 |
8 | .page {
9 | max-width: 1000px;
10 | margin: 0 auto;
11 | }
12 |
13 | h1 {
14 | text-align: center;
15 | color: #3f4257;
16 | margin-top: 60px;
17 | }
18 |
19 | pre {
20 | max-width: 650px;
21 | border-radius: 10px;
22 | -webkit-box-shadow: 0 0 5px 0px rgba(0,0,0,0.5);
23 | box-shadow: 0 0 5px 0px rgba(0,0,0,0.5);
24 | border: 1px solid #b7c1c1;
25 | margin-left: 50px;
26 | }
27 |
28 | p {
29 | font-size: 15px;
30 | text-align: center;
31 | color: #7b7b7b;
32 | margin: 30px;
33 | }
34 | .head {
35 | margin: 40px 0 20px 40px;
36 | font-size: 25px;
37 | font-weight: bold;
38 | color: #353535;
39 | border-bottom: 1px solid #a8b4cc;
40 | padding-bottom: 5px;
41 | }
42 |
43 | div.table-title {
44 | display: block;
45 | margin: auto;
46 | max-width: 600px;
47 | padding:5px;
48 | width: 100%;
49 | }
50 |
51 | .table-title h3 {
52 | color: #fafafa;
53 | font-size: 30px;
54 | font-weight: 400;
55 | font-style:normal;
56 | font-family: "Roboto", helvetica, arial, sans-serif;
57 | text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.1);
58 | text-transform:uppercase;
59 | }
60 |
61 |
62 | /*** Table Styles **/
63 |
64 | .table-fill {
65 | background: white;
66 | border-radius:3px;
67 | border-collapse: collapse;
68 | padding:5px;
69 | margin-top: 100px;
70 | width: 100%;
71 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
72 | animation: float 5s infinite;
73 | margin-bottom: 100px;
74 | }
75 |
76 | th {
77 | color:#D5DDE5;;
78 | background:#1b1e24;
79 | border-bottom:4px solid #9ea7af;
80 | border-right: 1px solid #343a45;
81 | font-size: 18px;
82 | font-weight: 100;
83 | padding: 10px 20px;
84 | text-align:left;
85 | text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
86 | vertical-align:middle;
87 | text-transform: uppercase;
88 | }
89 |
90 | th:first-child {
91 | border-top-left-radius:3px;
92 | }
93 |
94 | th:last-child {
95 | border-top-right-radius:3px;
96 | border-right:none;
97 | }
98 |
99 | tr {
100 | border-top: 1px solid #C1C3D1;
101 | border-bottom-: 1px solid #C1C3D1;
102 | color:#666B85;
103 | font-size:16px;
104 | font-weight:normal;
105 | text-shadow: 0 1px 1px rgba(256, 256, 256, 0.1);
106 | }
107 |
108 | tr:hover td {
109 | background:#4E5066;
110 | color:#FFFFFF;
111 | border-top: 1px solid #22262e;
112 | border-bottom: 1px solid #22262e;
113 | }
114 |
115 | tr:first-child {
116 | border-top:none;
117 | }
118 |
119 | tr:last-child {
120 | border-bottom:none;
121 | }
122 |
123 | tr:nth-child(odd) td {
124 | background:#EBEBEB;
125 | }
126 |
127 | tr:nth-child(odd):hover td {
128 | background:#4E5066;
129 | }
130 |
131 | tr:last-child td:first-child {
132 | border-bottom-left-radius:3px;
133 | }
134 |
135 | tr:last-child td:last-child {
136 | border-bottom-right-radius:3px;
137 | }
138 |
139 | td {
140 | background: #FFFFFF;
141 | padding: 10px 10px;
142 | text-align: left;
143 | vertical-align: middle;
144 | font-weight: 300;
145 | font-size: 14px;
146 | text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.1);
147 | border-right: 1px solid #C1C3D1;
148 | }
149 |
150 | td:last-child {
151 | border-right: 0px;
152 | }
153 |
154 | th.text-left {
155 | text-align: left;
156 | }
157 |
158 | th.text-center {
159 | text-align: center;
160 | }
161 |
162 | th.text-right {
163 | text-align: right;
164 | }
165 |
166 | td.text-left {
167 | text-align: left;
168 | }
169 |
170 | td.text-center {
171 | text-align: center;
172 | }
173 |
174 | td.text-right {
175 | text-align: right;
176 | }
177 |
--------------------------------------------------------------------------------
/src/component/README.md:
--------------------------------------------------------------------------------
1 | # Images uploader UI component
2 | Simple component for upload and validate (client side) images with preview built with React.js.
3 | This package use [react-flip-move](https://github.com/joshwcomeau/react-flip-move) for animate the file preview images.
4 |
5 | ## Installation
6 |
7 | ```bash
8 | npm install --save react-images-upload
9 | ```
10 |
11 | ## Usage
12 |
13 | ```javascript
14 | import React from 'react';
15 | import ImageUploader from 'react-images-upload';
16 |
17 | class App extends React.Component {
18 |
19 | constructor(props) {
20 | super(props);
21 | this.state = { pictures: [] };
22 | this.onDrop = this.onDrop.bind(this);
23 | }
24 |
25 | onDrop(picture) {
26 | this.setState({
27 | pictures: this.state.pictures.concat(picture),
28 | });
29 | }
30 |
31 | render() {
32 | return (
33 |
40 | );
41 | }
42 | }
43 | ```
44 |
45 | ### Available Options
46 |
47 | | parameter | type | default | description |
48 | | :--------: | :--: | :-----: | :---------- |
49 | | className | String | - | Class name for the input. |
50 | | fileContainerStyle | Object | - | Inline styles for the file container. |
51 | | onChange | Function | - | On change handler for the input. |
52 | | buttonClassName | String | - | Class name for upload button. |
53 | | buttonStyles | Object | - | Inline styles for upload button. |
54 | | withPreview | Boolean | true | Show preview of selected images. |
55 | | accept | String | "accept=image/*" | Accept attribute for file input. |
56 | | name | String | - | Input name. |
57 | | withIcon | Boolean | true | If true, show upload icon on top |
58 | | buttonText | String | 'Choose images' | The text that display in the button. |
59 | | withLabel | Boolean | true | Show instruction label |
60 | | label | String | 'Max file size: 5mb, accepted: jpg|gif|png|gif' | Label text |
61 | | labelStyles | Object | - | Inline styles for the label. |
62 | | labelClass | string | - | Class name for the label |
63 | | imgExtension | Array | ['.jpg', '.gif', '.png', '.gif'] | Supported image extension (will use in the image validation). |
64 | | maxFileSize | Number | 5242880 | Max image size. |
65 | | fileSizeError | String | " file size is too big" | Label for file size error message. |
66 | | fileTypeError | String | " is not supported file extension" | Label for file extension error message. |
67 | | errorClass | String | - | Class for error messages |
68 | | errorStyle | Object | - | Inline styles for errors |
69 | | singleImage | Boolean | false | If true, only a single image can be selected |
70 |
71 | ### License
72 | MIT
73 |
--------------------------------------------------------------------------------
/src/component/UploadIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/component/compiled.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true
5 | });
6 |
7 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8 |
9 | var _react = require('react');
10 |
11 | var _react2 = _interopRequireDefault(_react);
12 |
13 | var _propTypes = require('prop-types');
14 |
15 | var _propTypes2 = _interopRequireDefault(_propTypes);
16 |
17 | require('./index.css');
18 |
19 | var _reactFlipMove = require('react-flip-move');
20 |
21 | var _reactFlipMove2 = _interopRequireDefault(_reactFlipMove);
22 |
23 | var _UploadIcon = require('./UploadIcon.svg');
24 |
25 | var _UploadIcon2 = _interopRequireDefault(_UploadIcon);
26 |
27 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28 |
29 | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
30 |
31 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
32 |
33 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
34 |
35 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
36 |
37 | var styles = {
38 | display: "flex",
39 | alignItems: "center",
40 | justifyContent: "center",
41 | flexWrap: "wrap",
42 | width: "100%"
43 | };
44 |
45 | var ERROR = {
46 | NOT_SUPPORTED_EXTENSION: 'NOT_SUPPORTED_EXTENSION',
47 | FILESIZE_TOO_LARGE: 'FILESIZE_TOO_LARGE'
48 | };
49 |
50 | var ReactImageUploadComponent = function (_React$Component) {
51 | _inherits(ReactImageUploadComponent, _React$Component);
52 |
53 | function ReactImageUploadComponent(props) {
54 | _classCallCheck(this, ReactImageUploadComponent);
55 |
56 | var _this = _possibleConstructorReturn(this, (ReactImageUploadComponent.__proto__ || Object.getPrototypeOf(ReactImageUploadComponent)).call(this, props));
57 |
58 | _this.state = {
59 | pictures: [].concat(_toConsumableArray(props.defaultImages)),
60 | files: [],
61 | fileErrors: []
62 | };
63 | _this.inputElement = '';
64 | _this.onDropFile = _this.onDropFile.bind(_this);
65 | _this.onUploadClick = _this.onUploadClick.bind(_this);
66 | _this.triggerFileUpload = _this.triggerFileUpload.bind(_this);
67 | return _this;
68 | }
69 |
70 | _createClass(ReactImageUploadComponent, [{
71 | key: 'componentDidUpdate',
72 | value: function componentDidUpdate(prevProps, prevState, snapshot) {
73 | if (prevState.files !== this.state.files) {
74 | this.props.onChange(this.state.files, this.state.pictures);
75 | }
76 | }
77 |
78 | /*
79 | Load image at the beggining if defaultImage prop exists
80 | */
81 |
82 | }, {
83 | key: 'componentWillReceiveProps',
84 | value: function componentWillReceiveProps(nextProps) {
85 | if (nextProps.defaultImages !== this.props.defaultImages) {
86 | this.setState({ pictures: nextProps.defaultImages });
87 | }
88 | }
89 |
90 | /*
91 | Check file extension (onDropFile)
92 | */
93 |
94 | }, {
95 | key: 'hasExtension',
96 | value: function hasExtension(fileName) {
97 | var pattern = '(' + this.props.imgExtension.join('|').replace(/\./g, '\\.') + ')$';
98 | return new RegExp(pattern, 'i').test(fileName);
99 | }
100 |
101 | /*
102 | Handle file validation
103 | */
104 |
105 | }, {
106 | key: 'onDropFile',
107 | value: function onDropFile(e) {
108 | var _this2 = this;
109 |
110 | var files = e.target.files;
111 | var allFilePromises = [];
112 | var fileErrors = [];
113 |
114 | // Iterate over all uploaded files
115 | for (var i = 0; i < files.length; i++) {
116 | var file = files[i];
117 | var fileError = {
118 | name: file.name
119 | };
120 | // Check for file extension
121 | if (!this.hasExtension(file.name)) {
122 | fileError = Object.assign(fileError, {
123 | type: ERROR.NOT_SUPPORTED_EXTENSION
124 | });
125 | fileErrors.push(fileError);
126 | continue;
127 | }
128 | // Check for file size
129 | if (file.size > this.props.maxFileSize) {
130 | fileError = Object.assign(fileError, {
131 | type: ERROR.FILESIZE_TOO_LARGE
132 | });
133 | fileErrors.push(fileError);
134 | continue;
135 | }
136 |
137 | allFilePromises.push(this.readFile(file));
138 | }
139 |
140 | this.setState({
141 | fileErrors: fileErrors
142 | });
143 |
144 | var singleImage = this.props.singleImage;
145 |
146 |
147 | Promise.all(allFilePromises).then(function (newFilesData) {
148 | var dataURLs = singleImage ? [] : _this2.state.pictures.slice();
149 | var files = singleImage ? [] : _this2.state.files.slice();
150 |
151 | newFilesData.forEach(function (newFileData) {
152 | dataURLs.push(newFileData.dataURL);
153 | files.push(newFileData.file);
154 | });
155 |
156 | _this2.setState({ pictures: dataURLs, files: files });
157 | });
158 | }
159 | }, {
160 | key: 'onUploadClick',
161 | value: function onUploadClick(e) {
162 | // Fixes https://github.com/JakeHartnell/react-images-upload/issues/55
163 | e.target.value = null;
164 | }
165 |
166 | /*
167 | Read a file and return a promise that when resolved gives the file itself and the data URL
168 | */
169 |
170 | }, {
171 | key: 'readFile',
172 | value: function readFile(file) {
173 | return new Promise(function (resolve, reject) {
174 | var reader = new FileReader();
175 |
176 | // Read the image via FileReader API and save image result in state.
177 | reader.onload = function (e) {
178 | // Add the file name to the data URL
179 | var dataURL = e.target.result;
180 | dataURL = dataURL.replace(";base64", ';name=' + file.name + ';base64');
181 | resolve({ file: file, dataURL: dataURL });
182 | };
183 |
184 | reader.readAsDataURL(file);
185 | });
186 | }
187 |
188 | /*
189 | Remove the image from state
190 | */
191 |
192 | }, {
193 | key: 'removeImage',
194 | value: function removeImage(picture) {
195 | var _this3 = this;
196 |
197 | var removeIndex = this.state.pictures.findIndex(function (e) {
198 | return e === picture;
199 | });
200 | var filteredPictures = this.state.pictures.filter(function (e, index) {
201 | return index !== removeIndex;
202 | });
203 | var filteredFiles = this.state.files.filter(function (e, index) {
204 | return index !== removeIndex;
205 | });
206 |
207 | this.setState({ pictures: filteredPictures, files: filteredFiles }, function () {
208 | _this3.props.onChange(_this3.state.files, _this3.state.pictures);
209 | });
210 | }
211 |
212 | /*
213 | Check if any errors && render
214 | */
215 |
216 | }, {
217 | key: 'renderErrors',
218 | value: function renderErrors() {
219 | var _this4 = this;
220 |
221 | var fileErrors = this.state.fileErrors;
222 |
223 | return fileErrors.map(function (fileError, index) {
224 | return _react2.default.createElement(
225 | 'div',
226 | { className: 'errorMessage ' + _this4.props.errorClass, key: index, style: _this4.props.errorStyle },
227 | '* ',
228 | fileError.name,
229 | ' ',
230 | fileError.type === ERROR.FILESIZE_TOO_LARGE ? _this4.props.fileSizeError : _this4.props.fileTypeError
231 | );
232 | });
233 | }
234 |
235 | /*
236 | Render the upload icon
237 | */
238 |
239 | }, {
240 | key: 'renderIcon',
241 | value: function renderIcon() {
242 | if (this.props.withIcon) {
243 | return _react2.default.createElement('img', { src: _UploadIcon2.default, className: 'uploadIcon', alt: 'Upload Icon' });
244 | }
245 | }
246 |
247 | /*
248 | Render label
249 | */
250 |
251 | }, {
252 | key: 'renderLabel',
253 | value: function renderLabel() {
254 | if (this.props.withLabel) {
255 | return _react2.default.createElement(
256 | 'p',
257 | { className: this.props.labelClass, style: this.props.labelStyles },
258 | this.props.label
259 | );
260 | }
261 | }
262 |
263 | /*
264 | Render preview images
265 | */
266 |
267 | }, {
268 | key: 'renderPreview',
269 | value: function renderPreview() {
270 | return _react2.default.createElement(
271 | 'div',
272 | { className: 'uploadPicturesWrapper' },
273 | _react2.default.createElement(
274 | _reactFlipMove2.default,
275 | { enterAnimation: 'fade', leaveAnimation: 'fade', style: styles },
276 | this.renderPreviewPictures()
277 | )
278 | );
279 | }
280 | }, {
281 | key: 'renderPreviewPictures',
282 | value: function renderPreviewPictures() {
283 | var _this5 = this;
284 |
285 | return this.state.pictures.map(function (picture, index) {
286 | return _react2.default.createElement(
287 | 'div',
288 | { key: index, className: 'uploadPictureContainer' },
289 | _react2.default.createElement(
290 | 'div',
291 | { className: 'deleteImage', onClick: function onClick() {
292 | return _this5.removeImage(picture);
293 | } },
294 | 'X'
295 | ),
296 | _react2.default.createElement('img', { src: picture, className: 'uploadPicture', alt: 'preview' })
297 | );
298 | });
299 | }
300 |
301 | /*
302 | On button click, trigger input file to open
303 | */
304 |
305 | }, {
306 | key: 'triggerFileUpload',
307 | value: function triggerFileUpload() {
308 | this.inputElement.click();
309 | }
310 | }, {
311 | key: 'clearPictures',
312 | value: function clearPictures() {
313 | this.setState({ pictures: [] });
314 | }
315 | }, {
316 | key: 'render',
317 | value: function render() {
318 | var _this6 = this;
319 |
320 | return _react2.default.createElement(
321 | 'div',
322 | { className: "fileUploader " + this.props.className, style: this.props.style },
323 | _react2.default.createElement(
324 | 'div',
325 | { className: 'fileContainer', style: this.props.fileContainerStyle },
326 | this.renderIcon(),
327 | this.renderLabel(),
328 | _react2.default.createElement(
329 | 'div',
330 | { className: 'errorsContainer' },
331 | this.renderErrors()
332 | ),
333 | _react2.default.createElement(
334 | 'button',
335 | {
336 | type: this.props.buttonType,
337 | className: "chooseFileButton " + this.props.buttonClassName,
338 | style: this.props.buttonStyles,
339 | onClick: this.triggerFileUpload
340 | },
341 | this.props.buttonText
342 | ),
343 | _react2.default.createElement('input', {
344 | type: 'file',
345 | ref: function ref(input) {
346 | return _this6.inputElement = input;
347 | },
348 | name: this.props.name,
349 | multiple: !this.props.singleImage,
350 | onChange: this.onDropFile,
351 | onClick: this.onUploadClick,
352 | accept: this.props.accept
353 | }),
354 | this.props.withPreview ? this.renderPreview() : null
355 | )
356 | );
357 | }
358 | }]);
359 |
360 | return ReactImageUploadComponent;
361 | }(_react2.default.Component);
362 |
363 | ReactImageUploadComponent.defaultProps = {
364 | className: '',
365 | fileContainerStyle: {},
366 | buttonClassName: "",
367 | buttonStyles: {},
368 | withPreview: false,
369 | accept: "image/*",
370 | name: "",
371 | withIcon: true,
372 | buttonText: "Choose images",
373 | buttonType: "button",
374 | withLabel: true,
375 | label: "Max file size: 5mb, accepted: jpg|gif|png",
376 | labelStyles: {},
377 | labelClass: "",
378 | imgExtension: ['.jpg', '.jpeg', '.gif', '.png'],
379 | maxFileSize: 5242880,
380 | fileSizeError: " file size is too big",
381 | fileTypeError: " is not a supported file extension",
382 | errorClass: "",
383 | style: {},
384 | errorStyle: {},
385 | singleImage: false,
386 | onChange: function onChange() {},
387 | defaultImages: []
388 | };
389 |
390 | ReactImageUploadComponent.propTypes = {
391 | style: _propTypes2.default.object,
392 | fileContainerStyle: _propTypes2.default.object,
393 | className: _propTypes2.default.string,
394 | onChange: _propTypes2.default.func,
395 | onDelete: _propTypes2.default.func,
396 | buttonClassName: _propTypes2.default.string,
397 | buttonStyles: _propTypes2.default.object,
398 | buttonType: _propTypes2.default.string,
399 | withPreview: _propTypes2.default.bool,
400 | accept: _propTypes2.default.string,
401 | name: _propTypes2.default.string,
402 | withIcon: _propTypes2.default.bool,
403 | buttonText: _propTypes2.default.string,
404 | withLabel: _propTypes2.default.bool,
405 | label: _propTypes2.default.string,
406 | labelStyles: _propTypes2.default.object,
407 | labelClass: _propTypes2.default.string,
408 | imgExtension: _propTypes2.default.array,
409 | maxFileSize: _propTypes2.default.number,
410 | fileSizeError: _propTypes2.default.string,
411 | fileTypeError: _propTypes2.default.string,
412 | errorClass: _propTypes2.default.string,
413 | errorStyle: _propTypes2.default.object,
414 | singleImage: _propTypes2.default.bool,
415 | defaultImages: _propTypes2.default.array
416 | };
417 |
418 | exports.default = ReactImageUploadComponent;
419 |
--------------------------------------------------------------------------------
/src/component/index.css:
--------------------------------------------------------------------------------
1 | .fileUploader {
2 | width: 100%;
3 | }
4 |
5 | .fileContainer {
6 | background: #fff;
7 | box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.05);
8 | position: relative;
9 | border-radius: 10px;
10 | padding: 20px 0;
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 | flex-direction: column;
15 | margin: 10px auto;
16 | transition: all 0.3s ease-in;
17 | }
18 |
19 | .fileContainer input {
20 | opacity: 0;
21 | position: absolute;
22 | z-index: -1;
23 | }
24 |
25 | .fileContainer p {
26 | font-size: 12px;
27 | margin: 8px 0 4px;
28 | }
29 |
30 | .fileContainer .errorsContainer {
31 | max-width: 300px;
32 | font-size: 12px;
33 | color: red;
34 | text-align: left;
35 | }
36 |
37 | .fileContainer .chooseFileButton {
38 | padding: 6px 23px;
39 | background: #3f4257;
40 | border-radius: 30px;
41 | color: white;
42 | font-weight: 300;
43 | font-size: 14px;
44 | margin: 10px 0;
45 | transition: all 0.2s ease-in;
46 | cursor: pointer;
47 | outline: none;
48 | border: none;
49 | }
50 |
51 | .fileContainer .chooseFileButton:hover {
52 | background: #545972;
53 | }
54 |
55 | .fileContainer .uploadFilesButton {
56 | padding: 5px 43px;
57 | background: transparent;
58 | border-radius: 30px;
59 | color: #3f4257;
60 | font-weight: 300;
61 | font-size: 14px;
62 | margin: 10px 0;
63 | transition: all 0.2s ease-in;
64 | cursor: pointer;
65 | outline: none;
66 | border: 1px solid #3f4257;
67 | }
68 |
69 | .fileContainer .uploadFilesButton:hover {
70 | background: #3f4257;
71 | color: #fff;
72 | }
73 |
74 | .fileContainer .uploadIcon {
75 | width: 50px;
76 | height: 50px;
77 | }
78 |
79 | .fileContainer .uploadPicturesWrapper {
80 | display: flex;
81 | flex-wrap: wrap;
82 | justify-content: center;
83 | width: 100%;
84 | }
85 |
86 | .fileContainer .uploadPictureContainer {
87 | width: 25%;
88 | margin: 5%;
89 | padding: 10px;
90 | background: #edf2f6;
91 | display: flex;
92 | align-items: center;
93 | justify-content: center;
94 | height: inherit;
95 | box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
96 | border: 1px solid #d0dbe4;
97 | position: relative;
98 | }
99 |
100 | .fileContainer .uploadPictureContainer img.uploadPicture {
101 | width: 100%;
102 | }
103 |
104 | .fileContainer .deleteImage {
105 | position: absolute;
106 | top: -9px;
107 | right: -9px;
108 | color: #fff;
109 | background: #ff4081;
110 | border-radius: 50%;
111 | text-align: center;
112 | cursor: pointer;
113 | font-size: 26px;
114 | font-weight: bold;
115 | line-height: 30px;
116 | width: 30px;
117 | height: 30px;
118 | }
119 |
120 | .flipMove {
121 | display: flex;
122 | align-items: center;
123 | justify-content: center;
124 | flex-wrap: wrap;
125 | width: 100%;
126 | }
127 |
--------------------------------------------------------------------------------
/src/component/index.d.ts:
--------------------------------------------------------------------------------
1 | import { Component } from 'react'
2 |
3 | interface Props {
4 | className?: string
5 | fileContainerStyle?: object
6 | onChange?: (files: File[], pictures: string[]) => void
7 | buttonClassName?: string
8 | buttonStyles?: object
9 | withPreview?: boolean
10 | accept?: string
11 | name?: string
12 | withIcon?: boolean
13 | buttonText?: string
14 | withLabel?: boolean
15 | label?: string
16 | labelStyles?: object
17 | labelClass?: string
18 | imgExtension?: string[]
19 | maxFileSize?: number
20 | fileSizeError?: string
21 | fileTypeError?: string
22 | errorClass?: string
23 | errorStyle?: object
24 | singleImage?: boolean
25 | style?: object
26 | defaultImages?: string[]
27 | }
28 | export default class ReactImageUploadComponent extends Component { }
29 |
--------------------------------------------------------------------------------
/src/component/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import './index.css';
4 | import FlipMove from 'react-flip-move';
5 | import UploadIcon from './UploadIcon.svg';
6 |
7 | const styles = {
8 | display: "flex",
9 | alignItems: "center",
10 | justifyContent: "center",
11 | flexWrap: "wrap",
12 | width: "100%"
13 | };
14 |
15 | const ERROR = {
16 | NOT_SUPPORTED_EXTENSION: 'NOT_SUPPORTED_EXTENSION',
17 | FILESIZE_TOO_LARGE: 'FILESIZE_TOO_LARGE'
18 | }
19 |
20 | class ReactImageUploadComponent extends React.Component {
21 | constructor(props) {
22 | super(props);
23 | this.state = {
24 | pictures: [...props.defaultImages],
25 | files: [],
26 | fileErrors: []
27 | };
28 | this.inputElement = '';
29 | this.onDropFile = this.onDropFile.bind(this);
30 | this.onUploadClick = this.onUploadClick.bind(this);
31 | this.triggerFileUpload = this.triggerFileUpload.bind(this);
32 | }
33 |
34 | componentDidUpdate(prevProps, prevState, snapshot){
35 | if(prevState.files !== this.state.files){
36 | this.props.onChange(this.state.files, this.state.pictures);
37 | }
38 | }
39 |
40 | /*
41 | Load image at the beggining if defaultImage prop exists
42 | */
43 | componentWillReceiveProps(nextProps){
44 | if(nextProps.defaultImages !== this.props.defaultImages){
45 | this.setState({pictures: nextProps.defaultImages});
46 | }
47 | }
48 |
49 | /*
50 | Check file extension (onDropFile)
51 | */
52 | hasExtension(fileName) {
53 | const pattern = '(' + this.props.imgExtension.join('|').replace(/\./g, '\\.') + ')$';
54 | return new RegExp(pattern, 'i').test(fileName);
55 | }
56 |
57 | /*
58 | Handle file validation
59 | */
60 | onDropFile(e) {
61 | const files = e.target.files;
62 | const allFilePromises = [];
63 | const fileErrors = [];
64 |
65 | // Iterate over all uploaded files
66 | for (let i = 0; i < files.length; i++) {
67 | let file = files[i];
68 | let fileError = {
69 | name: file.name,
70 | };
71 | // Check for file extension
72 | if (!this.hasExtension(file.name)) {
73 | fileError = Object.assign(fileError, {
74 | type: ERROR.NOT_SUPPORTED_EXTENSION
75 | });
76 | fileErrors.push(fileError);
77 | continue;
78 | }
79 | // Check for file size
80 | if(file.size > this.props.maxFileSize) {
81 | fileError = Object.assign(fileError, {
82 | type: ERROR.FILESIZE_TOO_LARGE
83 | });
84 | fileErrors.push(fileError);
85 | continue;
86 | }
87 |
88 | allFilePromises.push(this.readFile(file));
89 | }
90 |
91 | this.setState({
92 | fileErrors
93 | });
94 |
95 | const {singleImage} = this.props;
96 |
97 | Promise.all(allFilePromises).then(newFilesData => {
98 | const dataURLs = singleImage?[]:this.state.pictures.slice();
99 | const files = singleImage?[]:this.state.files.slice();
100 |
101 | newFilesData.forEach(newFileData => {
102 | dataURLs.push(newFileData.dataURL);
103 | files.push(newFileData.file);
104 | });
105 |
106 | this.setState({pictures: dataURLs, files: files});
107 | });
108 | }
109 |
110 | onUploadClick(e) {
111 | // Fixes https://github.com/JakeHartnell/react-images-upload/issues/55
112 | e.target.value = null;
113 | }
114 |
115 | /*
116 | Read a file and return a promise that when resolved gives the file itself and the data URL
117 | */
118 | readFile(file) {
119 | return new Promise((resolve, reject) => {
120 | const reader = new FileReader();
121 |
122 | // Read the image via FileReader API and save image result in state.
123 | reader.onload = function (e) {
124 | // Add the file name to the data URL
125 | let dataURL = e.target.result;
126 | dataURL = dataURL.replace(";base64", `;name=${file.name};base64`);
127 | resolve({file, dataURL});
128 | };
129 |
130 | reader.readAsDataURL(file);
131 | });
132 | }
133 |
134 | /*
135 | Remove the image from state
136 | */
137 | removeImage(picture) {
138 | const removeIndex = this.state.pictures.findIndex(e => e === picture);
139 | const filteredPictures = this.state.pictures.filter((e, index) => index !== removeIndex);
140 | const filteredFiles = this.state.files.filter((e, index) => index !== removeIndex);
141 |
142 | this.setState({pictures: filteredPictures, files: filteredFiles}, () => {
143 | this.props.onChange(this.state.files, this.state.pictures);
144 | });
145 | }
146 |
147 | /*
148 | Check if any errors && render
149 | */
150 | renderErrors() {
151 | const { fileErrors } = this.state;
152 | return fileErrors.map((fileError, index) => {
153 | return (
154 |
155 | * {fileError.name} {fileError.type === ERROR.FILESIZE_TOO_LARGE ? this.props.fileSizeError: this.props.fileTypeError}
156 |
157 | );
158 | });
159 | }
160 |
161 | /*
162 | Render the upload icon
163 | */
164 | renderIcon() {
165 | if (this.props.withIcon) {
166 | return
;
167 | }
168 | }
169 |
170 | /*
171 | Render label
172 | */
173 | renderLabel() {
174 | if (this.props.withLabel) {
175 | return {this.props.label}
176 | }
177 | }
178 |
179 | /*
180 | Render preview images
181 | */
182 | renderPreview() {
183 | return (
184 |
185 |
186 | {this.renderPreviewPictures()}
187 |
188 |
189 | );
190 | }
191 |
192 | renderPreviewPictures() {
193 | return this.state.pictures.map((picture, index) => {
194 | return (
195 |
196 |
this.removeImage(picture)}>X
197 |

198 |
199 | );
200 | });
201 | }
202 |
203 | /*
204 | On button click, trigger input file to open
205 | */
206 | triggerFileUpload() {
207 | this.inputElement.click();
208 | }
209 |
210 | clearPictures() {
211 | this.setState({pictures: []})
212 | }
213 |
214 | render() {
215 | return (
216 |
217 |
218 | {this.renderIcon()}
219 | {this.renderLabel()}
220 |
221 | {this.renderErrors()}
222 |
223 |
231 |
this.inputElement = input}
234 | name={this.props.name}
235 | multiple={!this.props.singleImage}
236 | onChange={this.onDropFile}
237 | onClick={this.onUploadClick}
238 | accept={this.props.accept}
239 | />
240 | { this.props.withPreview ? this.renderPreview() : null }
241 |
242 |
243 | )
244 | }
245 | }
246 |
247 | ReactImageUploadComponent.defaultProps = {
248 | className: '',
249 | fileContainerStyle: {},
250 | buttonClassName: "",
251 | buttonStyles: {},
252 | withPreview: false,
253 | accept: "image/*",
254 | name: "",
255 | withIcon: true,
256 | buttonText: "Choose images",
257 | buttonType: "button",
258 | withLabel: true,
259 | label: "Max file size: 5mb, accepted: jpg|gif|png",
260 | labelStyles: {},
261 | labelClass: "",
262 | imgExtension: ['.jpg', '.jpeg', '.gif', '.png'],
263 | maxFileSize: 5242880,
264 | fileSizeError: " file size is too big",
265 | fileTypeError: " is not a supported file extension",
266 | errorClass: "",
267 | style: {},
268 | errorStyle: {},
269 | singleImage: false,
270 | onChange: () => {},
271 | defaultImages: []
272 | };
273 |
274 | ReactImageUploadComponent.propTypes = {
275 | style: PropTypes.object,
276 | fileContainerStyle: PropTypes.object,
277 | className: PropTypes.string,
278 | onChange: PropTypes.func,
279 | onDelete: PropTypes.func,
280 | buttonClassName: PropTypes.string,
281 | buttonStyles: PropTypes.object,
282 | buttonType: PropTypes.string,
283 | withPreview: PropTypes.bool,
284 | accept: PropTypes.string,
285 | name: PropTypes.string,
286 | withIcon: PropTypes.bool,
287 | buttonText: PropTypes.string,
288 | withLabel: PropTypes.bool,
289 | label: PropTypes.string,
290 | labelStyles: PropTypes.object,
291 | labelClass: PropTypes.string,
292 | imgExtension: PropTypes.array,
293 | maxFileSize: PropTypes.number,
294 | fileSizeError: PropTypes.string,
295 | fileTypeError: PropTypes.string,
296 | errorClass: PropTypes.string,
297 | errorStyle: PropTypes.object,
298 | singleImage: PropTypes.bool,
299 | defaultImages: PropTypes.array
300 | };
301 |
302 | export default ReactImageUploadComponent;
303 |
--------------------------------------------------------------------------------
/src/component/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-images-upload",
3 | "version": "1.2.8",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "anymatch": {
8 | "version": "1.3.2",
9 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
10 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
11 | "dev": true,
12 | "optional": true,
13 | "requires": {
14 | "micromatch": "^2.1.5",
15 | "normalize-path": "^2.0.0"
16 | },
17 | "dependencies": {
18 | "arr-diff": {
19 | "version": "2.0.0",
20 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
21 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
22 | "dev": true,
23 | "optional": true,
24 | "requires": {
25 | "arr-flatten": "^1.0.1"
26 | }
27 | },
28 | "array-unique": {
29 | "version": "0.2.1",
30 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
31 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
32 | "dev": true,
33 | "optional": true
34 | },
35 | "braces": {
36 | "version": "1.8.5",
37 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
38 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
39 | "dev": true,
40 | "optional": true,
41 | "requires": {
42 | "expand-range": "^1.8.1",
43 | "preserve": "^0.2.0",
44 | "repeat-element": "^1.1.2"
45 | }
46 | },
47 | "expand-brackets": {
48 | "version": "0.1.5",
49 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
50 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
51 | "dev": true,
52 | "optional": true,
53 | "requires": {
54 | "is-posix-bracket": "^0.1.0"
55 | }
56 | },
57 | "extglob": {
58 | "version": "0.3.2",
59 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
60 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
61 | "dev": true,
62 | "optional": true,
63 | "requires": {
64 | "is-extglob": "^1.0.0"
65 | }
66 | },
67 | "kind-of": {
68 | "version": "3.2.2",
69 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
70 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
71 | "dev": true,
72 | "optional": true,
73 | "requires": {
74 | "is-buffer": "^1.1.5"
75 | }
76 | },
77 | "micromatch": {
78 | "version": "2.3.11",
79 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
80 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
81 | "dev": true,
82 | "optional": true,
83 | "requires": {
84 | "arr-diff": "^2.0.0",
85 | "array-unique": "^0.2.1",
86 | "braces": "^1.8.2",
87 | "expand-brackets": "^0.1.4",
88 | "extglob": "^0.3.1",
89 | "filename-regex": "^2.0.0",
90 | "is-extglob": "^1.0.0",
91 | "is-glob": "^2.0.1",
92 | "kind-of": "^3.0.2",
93 | "normalize-path": "^2.0.1",
94 | "object.omit": "^2.0.0",
95 | "parse-glob": "^3.0.4",
96 | "regex-cache": "^0.4.2"
97 | }
98 | }
99 | }
100 | },
101 | "arr-flatten": {
102 | "version": "1.1.0",
103 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
104 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
105 | "dev": true,
106 | "optional": true
107 | },
108 | "async-each": {
109 | "version": "1.0.1",
110 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
111 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
112 | "dev": true,
113 | "optional": true
114 | },
115 | "babel-cli": {
116 | "version": "6.26.0",
117 | "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
118 | "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
119 | "dev": true,
120 | "requires": {
121 | "babel-core": "^6.26.0",
122 | "babel-polyfill": "^6.26.0",
123 | "babel-register": "^6.26.0",
124 | "babel-runtime": "^6.26.0",
125 | "chokidar": "^1.6.1",
126 | "commander": "^2.11.0",
127 | "convert-source-map": "^1.5.0",
128 | "fs-readdir-recursive": "^1.0.0",
129 | "glob": "^7.1.2",
130 | "lodash": "^4.17.4",
131 | "output-file-sync": "^1.1.2",
132 | "path-is-absolute": "^1.0.1",
133 | "slash": "^1.0.0",
134 | "source-map": "^0.5.6",
135 | "v8flags": "^2.1.1"
136 | },
137 | "dependencies": {
138 | "chokidar": {
139 | "version": "1.7.0",
140 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
141 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
142 | "dev": true,
143 | "optional": true,
144 | "requires": {
145 | "anymatch": "^1.3.0",
146 | "async-each": "^1.0.0",
147 | "fsevents": "^1.0.0",
148 | "glob-parent": "^2.0.0",
149 | "inherits": "^2.0.1",
150 | "is-binary-path": "^1.0.0",
151 | "is-glob": "^2.0.0",
152 | "path-is-absolute": "^1.0.0",
153 | "readdirp": "^2.0.0"
154 | }
155 | }
156 | }
157 | },
158 | "babel-code-frame": {
159 | "version": "6.26.0",
160 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
161 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
162 | "dev": true,
163 | "requires": {
164 | "chalk": "^1.1.3",
165 | "esutils": "^2.0.2",
166 | "js-tokens": "^3.0.2"
167 | }
168 | },
169 | "babel-core": {
170 | "version": "6.26.3",
171 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
172 | "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
173 | "dev": true,
174 | "requires": {
175 | "babel-code-frame": "^6.26.0",
176 | "babel-generator": "^6.26.0",
177 | "babel-helpers": "^6.24.1",
178 | "babel-messages": "^6.23.0",
179 | "babel-register": "^6.26.0",
180 | "babel-runtime": "^6.26.0",
181 | "babel-template": "^6.26.0",
182 | "babel-traverse": "^6.26.0",
183 | "babel-types": "^6.26.0",
184 | "babylon": "^6.18.0",
185 | "convert-source-map": "^1.5.1",
186 | "debug": "^2.6.9",
187 | "json5": "^0.5.1",
188 | "lodash": "^4.17.4",
189 | "minimatch": "^3.0.4",
190 | "path-is-absolute": "^1.0.1",
191 | "private": "^0.1.8",
192 | "slash": "^1.0.0",
193 | "source-map": "^0.5.7"
194 | }
195 | },
196 | "babel-generator": {
197 | "version": "6.26.1",
198 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
199 | "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
200 | "dev": true,
201 | "requires": {
202 | "babel-messages": "^6.23.0",
203 | "babel-runtime": "^6.26.0",
204 | "babel-types": "^6.26.0",
205 | "detect-indent": "^4.0.0",
206 | "jsesc": "^1.3.0",
207 | "lodash": "^4.17.4",
208 | "source-map": "^0.5.7",
209 | "trim-right": "^1.0.1"
210 | }
211 | },
212 | "babel-helper-builder-binary-assignment-operator-visitor": {
213 | "version": "6.24.1",
214 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
215 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
216 | "dev": true,
217 | "requires": {
218 | "babel-helper-explode-assignable-expression": "^6.24.1",
219 | "babel-runtime": "^6.22.0",
220 | "babel-types": "^6.24.1"
221 | }
222 | },
223 | "babel-helper-builder-react-jsx": {
224 | "version": "6.26.0",
225 | "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
226 | "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
227 | "dev": true,
228 | "requires": {
229 | "babel-runtime": "^6.26.0",
230 | "babel-types": "^6.26.0",
231 | "esutils": "^2.0.2"
232 | }
233 | },
234 | "babel-helper-call-delegate": {
235 | "version": "6.24.1",
236 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
237 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
238 | "dev": true,
239 | "requires": {
240 | "babel-helper-hoist-variables": "^6.24.1",
241 | "babel-runtime": "^6.22.0",
242 | "babel-traverse": "^6.24.1",
243 | "babel-types": "^6.24.1"
244 | }
245 | },
246 | "babel-helper-define-map": {
247 | "version": "6.26.0",
248 | "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
249 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
250 | "dev": true,
251 | "requires": {
252 | "babel-helper-function-name": "^6.24.1",
253 | "babel-runtime": "^6.26.0",
254 | "babel-types": "^6.26.0",
255 | "lodash": "^4.17.4"
256 | }
257 | },
258 | "babel-helper-explode-assignable-expression": {
259 | "version": "6.24.1",
260 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
261 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
262 | "dev": true,
263 | "requires": {
264 | "babel-runtime": "^6.22.0",
265 | "babel-traverse": "^6.24.1",
266 | "babel-types": "^6.24.1"
267 | }
268 | },
269 | "babel-helper-function-name": {
270 | "version": "6.24.1",
271 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
272 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
273 | "dev": true,
274 | "requires": {
275 | "babel-helper-get-function-arity": "^6.24.1",
276 | "babel-runtime": "^6.22.0",
277 | "babel-template": "^6.24.1",
278 | "babel-traverse": "^6.24.1",
279 | "babel-types": "^6.24.1"
280 | }
281 | },
282 | "babel-helper-get-function-arity": {
283 | "version": "6.24.1",
284 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
285 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
286 | "dev": true,
287 | "requires": {
288 | "babel-runtime": "^6.22.0",
289 | "babel-types": "^6.24.1"
290 | }
291 | },
292 | "babel-helper-hoist-variables": {
293 | "version": "6.24.1",
294 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
295 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
296 | "dev": true,
297 | "requires": {
298 | "babel-runtime": "^6.22.0",
299 | "babel-types": "^6.24.1"
300 | }
301 | },
302 | "babel-helper-optimise-call-expression": {
303 | "version": "6.24.1",
304 | "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
305 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
306 | "dev": true,
307 | "requires": {
308 | "babel-runtime": "^6.22.0",
309 | "babel-types": "^6.24.1"
310 | }
311 | },
312 | "babel-helper-regex": {
313 | "version": "6.26.0",
314 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
315 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
316 | "dev": true,
317 | "requires": {
318 | "babel-runtime": "^6.26.0",
319 | "babel-types": "^6.26.0",
320 | "lodash": "^4.17.4"
321 | }
322 | },
323 | "babel-helper-remap-async-to-generator": {
324 | "version": "6.24.1",
325 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
326 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
327 | "dev": true,
328 | "requires": {
329 | "babel-helper-function-name": "^6.24.1",
330 | "babel-runtime": "^6.22.0",
331 | "babel-template": "^6.24.1",
332 | "babel-traverse": "^6.24.1",
333 | "babel-types": "^6.24.1"
334 | }
335 | },
336 | "babel-helper-replace-supers": {
337 | "version": "6.24.1",
338 | "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
339 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
340 | "dev": true,
341 | "requires": {
342 | "babel-helper-optimise-call-expression": "^6.24.1",
343 | "babel-messages": "^6.23.0",
344 | "babel-runtime": "^6.22.0",
345 | "babel-template": "^6.24.1",
346 | "babel-traverse": "^6.24.1",
347 | "babel-types": "^6.24.1"
348 | }
349 | },
350 | "babel-helpers": {
351 | "version": "6.24.1",
352 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
353 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
354 | "dev": true,
355 | "requires": {
356 | "babel-runtime": "^6.22.0",
357 | "babel-template": "^6.24.1"
358 | }
359 | },
360 | "babel-loader": {
361 | "version": "7.1.5",
362 | "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz",
363 | "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==",
364 | "dev": true,
365 | "requires": {
366 | "find-cache-dir": "^1.0.0",
367 | "loader-utils": "^1.0.2",
368 | "mkdirp": "^0.5.1"
369 | }
370 | },
371 | "babel-messages": {
372 | "version": "6.23.0",
373 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
374 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
375 | "dev": true,
376 | "requires": {
377 | "babel-runtime": "^6.22.0"
378 | }
379 | },
380 | "babel-plugin-check-es2015-constants": {
381 | "version": "6.22.0",
382 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
383 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
384 | "dev": true,
385 | "requires": {
386 | "babel-runtime": "^6.22.0"
387 | }
388 | },
389 | "babel-plugin-syntax-async-functions": {
390 | "version": "6.13.0",
391 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
392 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
393 | "dev": true
394 | },
395 | "babel-plugin-syntax-exponentiation-operator": {
396 | "version": "6.13.0",
397 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
398 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
399 | "dev": true
400 | },
401 | "babel-plugin-syntax-flow": {
402 | "version": "6.18.0",
403 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
404 | "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=",
405 | "dev": true
406 | },
407 | "babel-plugin-syntax-jsx": {
408 | "version": "6.18.0",
409 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
410 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
411 | "dev": true
412 | },
413 | "babel-plugin-syntax-trailing-function-commas": {
414 | "version": "6.22.0",
415 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
416 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
417 | "dev": true
418 | },
419 | "babel-plugin-transform-async-to-generator": {
420 | "version": "6.24.1",
421 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
422 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
423 | "dev": true,
424 | "requires": {
425 | "babel-helper-remap-async-to-generator": "^6.24.1",
426 | "babel-plugin-syntax-async-functions": "^6.8.0",
427 | "babel-runtime": "^6.22.0"
428 | }
429 | },
430 | "babel-plugin-transform-es2015-arrow-functions": {
431 | "version": "6.22.0",
432 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
433 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
434 | "dev": true,
435 | "requires": {
436 | "babel-runtime": "^6.22.0"
437 | }
438 | },
439 | "babel-plugin-transform-es2015-block-scoped-functions": {
440 | "version": "6.22.0",
441 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
442 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
443 | "dev": true,
444 | "requires": {
445 | "babel-runtime": "^6.22.0"
446 | }
447 | },
448 | "babel-plugin-transform-es2015-block-scoping": {
449 | "version": "6.26.0",
450 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
451 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
452 | "dev": true,
453 | "requires": {
454 | "babel-runtime": "^6.26.0",
455 | "babel-template": "^6.26.0",
456 | "babel-traverse": "^6.26.0",
457 | "babel-types": "^6.26.0",
458 | "lodash": "^4.17.4"
459 | }
460 | },
461 | "babel-plugin-transform-es2015-classes": {
462 | "version": "6.24.1",
463 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
464 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
465 | "dev": true,
466 | "requires": {
467 | "babel-helper-define-map": "^6.24.1",
468 | "babel-helper-function-name": "^6.24.1",
469 | "babel-helper-optimise-call-expression": "^6.24.1",
470 | "babel-helper-replace-supers": "^6.24.1",
471 | "babel-messages": "^6.23.0",
472 | "babel-runtime": "^6.22.0",
473 | "babel-template": "^6.24.1",
474 | "babel-traverse": "^6.24.1",
475 | "babel-types": "^6.24.1"
476 | }
477 | },
478 | "babel-plugin-transform-es2015-computed-properties": {
479 | "version": "6.24.1",
480 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
481 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
482 | "dev": true,
483 | "requires": {
484 | "babel-runtime": "^6.22.0",
485 | "babel-template": "^6.24.1"
486 | }
487 | },
488 | "babel-plugin-transform-es2015-destructuring": {
489 | "version": "6.23.0",
490 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
491 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
492 | "dev": true,
493 | "requires": {
494 | "babel-runtime": "^6.22.0"
495 | }
496 | },
497 | "babel-plugin-transform-es2015-duplicate-keys": {
498 | "version": "6.24.1",
499 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
500 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
501 | "dev": true,
502 | "requires": {
503 | "babel-runtime": "^6.22.0",
504 | "babel-types": "^6.24.1"
505 | }
506 | },
507 | "babel-plugin-transform-es2015-for-of": {
508 | "version": "6.23.0",
509 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
510 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
511 | "dev": true,
512 | "requires": {
513 | "babel-runtime": "^6.22.0"
514 | }
515 | },
516 | "babel-plugin-transform-es2015-function-name": {
517 | "version": "6.24.1",
518 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
519 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
520 | "dev": true,
521 | "requires": {
522 | "babel-helper-function-name": "^6.24.1",
523 | "babel-runtime": "^6.22.0",
524 | "babel-types": "^6.24.1"
525 | }
526 | },
527 | "babel-plugin-transform-es2015-literals": {
528 | "version": "6.22.0",
529 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
530 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
531 | "dev": true,
532 | "requires": {
533 | "babel-runtime": "^6.22.0"
534 | }
535 | },
536 | "babel-plugin-transform-es2015-modules-amd": {
537 | "version": "6.24.1",
538 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
539 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
540 | "dev": true,
541 | "requires": {
542 | "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
543 | "babel-runtime": "^6.22.0",
544 | "babel-template": "^6.24.1"
545 | }
546 | },
547 | "babel-plugin-transform-es2015-modules-commonjs": {
548 | "version": "6.26.2",
549 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
550 | "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
551 | "dev": true,
552 | "requires": {
553 | "babel-plugin-transform-strict-mode": "^6.24.1",
554 | "babel-runtime": "^6.26.0",
555 | "babel-template": "^6.26.0",
556 | "babel-types": "^6.26.0"
557 | }
558 | },
559 | "babel-plugin-transform-es2015-modules-systemjs": {
560 | "version": "6.24.1",
561 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
562 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
563 | "dev": true,
564 | "requires": {
565 | "babel-helper-hoist-variables": "^6.24.1",
566 | "babel-runtime": "^6.22.0",
567 | "babel-template": "^6.24.1"
568 | }
569 | },
570 | "babel-plugin-transform-es2015-modules-umd": {
571 | "version": "6.24.1",
572 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
573 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
574 | "dev": true,
575 | "requires": {
576 | "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
577 | "babel-runtime": "^6.22.0",
578 | "babel-template": "^6.24.1"
579 | }
580 | },
581 | "babel-plugin-transform-es2015-object-super": {
582 | "version": "6.24.1",
583 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
584 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
585 | "dev": true,
586 | "requires": {
587 | "babel-helper-replace-supers": "^6.24.1",
588 | "babel-runtime": "^6.22.0"
589 | }
590 | },
591 | "babel-plugin-transform-es2015-parameters": {
592 | "version": "6.24.1",
593 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
594 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
595 | "dev": true,
596 | "requires": {
597 | "babel-helper-call-delegate": "^6.24.1",
598 | "babel-helper-get-function-arity": "^6.24.1",
599 | "babel-runtime": "^6.22.0",
600 | "babel-template": "^6.24.1",
601 | "babel-traverse": "^6.24.1",
602 | "babel-types": "^6.24.1"
603 | }
604 | },
605 | "babel-plugin-transform-es2015-shorthand-properties": {
606 | "version": "6.24.1",
607 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
608 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
609 | "dev": true,
610 | "requires": {
611 | "babel-runtime": "^6.22.0",
612 | "babel-types": "^6.24.1"
613 | }
614 | },
615 | "babel-plugin-transform-es2015-spread": {
616 | "version": "6.22.0",
617 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
618 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
619 | "dev": true,
620 | "requires": {
621 | "babel-runtime": "^6.22.0"
622 | }
623 | },
624 | "babel-plugin-transform-es2015-sticky-regex": {
625 | "version": "6.24.1",
626 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
627 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
628 | "dev": true,
629 | "requires": {
630 | "babel-helper-regex": "^6.24.1",
631 | "babel-runtime": "^6.22.0",
632 | "babel-types": "^6.24.1"
633 | }
634 | },
635 | "babel-plugin-transform-es2015-template-literals": {
636 | "version": "6.22.0",
637 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
638 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
639 | "dev": true,
640 | "requires": {
641 | "babel-runtime": "^6.22.0"
642 | }
643 | },
644 | "babel-plugin-transform-es2015-typeof-symbol": {
645 | "version": "6.23.0",
646 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
647 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
648 | "dev": true,
649 | "requires": {
650 | "babel-runtime": "^6.22.0"
651 | }
652 | },
653 | "babel-plugin-transform-es2015-unicode-regex": {
654 | "version": "6.24.1",
655 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
656 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
657 | "dev": true,
658 | "requires": {
659 | "babel-helper-regex": "^6.24.1",
660 | "babel-runtime": "^6.22.0",
661 | "regexpu-core": "^2.0.0"
662 | }
663 | },
664 | "babel-plugin-transform-exponentiation-operator": {
665 | "version": "6.24.1",
666 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
667 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
668 | "dev": true,
669 | "requires": {
670 | "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
671 | "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
672 | "babel-runtime": "^6.22.0"
673 | }
674 | },
675 | "babel-plugin-transform-flow-strip-types": {
676 | "version": "6.22.0",
677 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
678 | "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
679 | "dev": true,
680 | "requires": {
681 | "babel-plugin-syntax-flow": "^6.18.0",
682 | "babel-runtime": "^6.22.0"
683 | }
684 | },
685 | "babel-plugin-transform-react-display-name": {
686 | "version": "6.25.0",
687 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz",
688 | "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=",
689 | "dev": true,
690 | "requires": {
691 | "babel-runtime": "^6.22.0"
692 | }
693 | },
694 | "babel-plugin-transform-react-jsx": {
695 | "version": "6.24.1",
696 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
697 | "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
698 | "dev": true,
699 | "requires": {
700 | "babel-helper-builder-react-jsx": "^6.24.1",
701 | "babel-plugin-syntax-jsx": "^6.8.0",
702 | "babel-runtime": "^6.22.0"
703 | }
704 | },
705 | "babel-plugin-transform-react-jsx-self": {
706 | "version": "6.22.0",
707 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz",
708 | "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=",
709 | "dev": true,
710 | "requires": {
711 | "babel-plugin-syntax-jsx": "^6.8.0",
712 | "babel-runtime": "^6.22.0"
713 | }
714 | },
715 | "babel-plugin-transform-react-jsx-source": {
716 | "version": "6.22.0",
717 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
718 | "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=",
719 | "dev": true,
720 | "requires": {
721 | "babel-plugin-syntax-jsx": "^6.8.0",
722 | "babel-runtime": "^6.22.0"
723 | }
724 | },
725 | "babel-plugin-transform-regenerator": {
726 | "version": "6.26.0",
727 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
728 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
729 | "dev": true,
730 | "requires": {
731 | "regenerator-transform": "^0.10.0"
732 | }
733 | },
734 | "babel-plugin-transform-strict-mode": {
735 | "version": "6.24.1",
736 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
737 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
738 | "dev": true,
739 | "requires": {
740 | "babel-runtime": "^6.22.0",
741 | "babel-types": "^6.24.1"
742 | }
743 | },
744 | "babel-polyfill": {
745 | "version": "6.26.0",
746 | "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
747 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
748 | "dev": true,
749 | "requires": {
750 | "babel-runtime": "^6.26.0",
751 | "core-js": "^2.5.0",
752 | "regenerator-runtime": "^0.10.5"
753 | },
754 | "dependencies": {
755 | "core-js": {
756 | "version": "2.5.6",
757 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
758 | "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
759 | "dev": true
760 | },
761 | "regenerator-runtime": {
762 | "version": "0.10.5",
763 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
764 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
765 | "dev": true
766 | }
767 | }
768 | },
769 | "babel-preset-env": {
770 | "version": "1.7.0",
771 | "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
772 | "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
773 | "dev": true,
774 | "requires": {
775 | "babel-plugin-check-es2015-constants": "^6.22.0",
776 | "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
777 | "babel-plugin-transform-async-to-generator": "^6.22.0",
778 | "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
779 | "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
780 | "babel-plugin-transform-es2015-block-scoping": "^6.23.0",
781 | "babel-plugin-transform-es2015-classes": "^6.23.0",
782 | "babel-plugin-transform-es2015-computed-properties": "^6.22.0",
783 | "babel-plugin-transform-es2015-destructuring": "^6.23.0",
784 | "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0",
785 | "babel-plugin-transform-es2015-for-of": "^6.23.0",
786 | "babel-plugin-transform-es2015-function-name": "^6.22.0",
787 | "babel-plugin-transform-es2015-literals": "^6.22.0",
788 | "babel-plugin-transform-es2015-modules-amd": "^6.22.0",
789 | "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
790 | "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0",
791 | "babel-plugin-transform-es2015-modules-umd": "^6.23.0",
792 | "babel-plugin-transform-es2015-object-super": "^6.22.0",
793 | "babel-plugin-transform-es2015-parameters": "^6.23.0",
794 | "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0",
795 | "babel-plugin-transform-es2015-spread": "^6.22.0",
796 | "babel-plugin-transform-es2015-sticky-regex": "^6.22.0",
797 | "babel-plugin-transform-es2015-template-literals": "^6.22.0",
798 | "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
799 | "babel-plugin-transform-es2015-unicode-regex": "^6.22.0",
800 | "babel-plugin-transform-exponentiation-operator": "^6.22.0",
801 | "babel-plugin-transform-regenerator": "^6.22.0",
802 | "browserslist": "^3.2.6",
803 | "invariant": "^2.2.2",
804 | "semver": "^5.3.0"
805 | }
806 | },
807 | "babel-preset-flow": {
808 | "version": "6.23.0",
809 | "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz",
810 | "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=",
811 | "dev": true,
812 | "requires": {
813 | "babel-plugin-transform-flow-strip-types": "^6.22.0"
814 | }
815 | },
816 | "babel-preset-react": {
817 | "version": "6.24.1",
818 | "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz",
819 | "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=",
820 | "dev": true,
821 | "requires": {
822 | "babel-plugin-syntax-jsx": "^6.3.13",
823 | "babel-plugin-transform-react-display-name": "^6.23.0",
824 | "babel-plugin-transform-react-jsx": "^6.24.1",
825 | "babel-plugin-transform-react-jsx-self": "^6.22.0",
826 | "babel-plugin-transform-react-jsx-source": "^6.22.0",
827 | "babel-preset-flow": "^6.23.0"
828 | }
829 | },
830 | "babel-register": {
831 | "version": "6.26.0",
832 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
833 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
834 | "dev": true,
835 | "requires": {
836 | "babel-core": "^6.26.0",
837 | "babel-runtime": "^6.26.0",
838 | "core-js": "^2.5.0",
839 | "home-or-tmp": "^2.0.0",
840 | "lodash": "^4.17.4",
841 | "mkdirp": "^0.5.1",
842 | "source-map-support": "^0.4.15"
843 | },
844 | "dependencies": {
845 | "core-js": {
846 | "version": "2.5.6",
847 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
848 | "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
849 | "dev": true
850 | }
851 | }
852 | },
853 | "babel-runtime": {
854 | "version": "6.26.0",
855 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
856 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
857 | "dev": true,
858 | "requires": {
859 | "core-js": "^2.4.0",
860 | "regenerator-runtime": "^0.11.0"
861 | },
862 | "dependencies": {
863 | "core-js": {
864 | "version": "2.5.6",
865 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
866 | "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
867 | "dev": true
868 | }
869 | }
870 | },
871 | "babel-template": {
872 | "version": "6.26.0",
873 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
874 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
875 | "dev": true,
876 | "requires": {
877 | "babel-runtime": "^6.26.0",
878 | "babel-traverse": "^6.26.0",
879 | "babel-types": "^6.26.0",
880 | "babylon": "^6.18.0",
881 | "lodash": "^4.17.4"
882 | }
883 | },
884 | "babel-traverse": {
885 | "version": "6.26.0",
886 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
887 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
888 | "dev": true,
889 | "requires": {
890 | "babel-code-frame": "^6.26.0",
891 | "babel-messages": "^6.23.0",
892 | "babel-runtime": "^6.26.0",
893 | "babel-types": "^6.26.0",
894 | "babylon": "^6.18.0",
895 | "debug": "^2.6.8",
896 | "globals": "^9.18.0",
897 | "invariant": "^2.2.2",
898 | "lodash": "^4.17.4"
899 | },
900 | "dependencies": {
901 | "debug": {
902 | "version": "2.6.9",
903 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
904 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
905 | "dev": true,
906 | "requires": {
907 | "ms": "2.0.0"
908 | }
909 | }
910 | }
911 | },
912 | "babel-types": {
913 | "version": "6.26.0",
914 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
915 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
916 | "dev": true,
917 | "requires": {
918 | "babel-runtime": "^6.26.0",
919 | "esutils": "^2.0.2",
920 | "lodash": "^4.17.4",
921 | "to-fast-properties": "^1.0.3"
922 | }
923 | },
924 | "babylon": {
925 | "version": "6.18.0",
926 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
927 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
928 | "dev": true
929 | },
930 | "balanced-match": {
931 | "version": "1.0.0",
932 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
933 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
934 | "dev": true
935 | },
936 | "big.js": {
937 | "version": "5.2.2",
938 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
939 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
940 | "dev": true
941 | },
942 | "binary-extensions": {
943 | "version": "1.11.0",
944 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
945 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
946 | "dev": true,
947 | "optional": true
948 | },
949 | "brace-expansion": {
950 | "version": "1.1.11",
951 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
952 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
953 | "dev": true,
954 | "requires": {
955 | "balanced-match": "^1.0.0",
956 | "concat-map": "0.0.1"
957 | }
958 | },
959 | "browserslist": {
960 | "version": "3.2.7",
961 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz",
962 | "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==",
963 | "dev": true,
964 | "requires": {
965 | "caniuse-lite": "^1.0.30000835",
966 | "electron-to-chromium": "^1.3.45"
967 | }
968 | },
969 | "caniuse-lite": {
970 | "version": "1.0.30000843",
971 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000843.tgz",
972 | "integrity": "sha512-1ntiW826MhRBmM0CeI7w1cQr16gxwOoM8doJWh3BFalPZoKWdZXs27Bc04xth/3NR1/wNXn9cpP4F92lVenCvg==",
973 | "dev": true
974 | },
975 | "chalk": {
976 | "version": "1.1.3",
977 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
978 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
979 | "dev": true,
980 | "requires": {
981 | "ansi-styles": "^2.2.1",
982 | "escape-string-regexp": "^1.0.2",
983 | "has-ansi": "^2.0.0",
984 | "strip-ansi": "^3.0.0",
985 | "supports-color": "^2.0.0"
986 | },
987 | "dependencies": {
988 | "ansi-regex": {
989 | "version": "2.1.1",
990 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
991 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
992 | "dev": true
993 | },
994 | "ansi-styles": {
995 | "version": "2.2.1",
996 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
997 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
998 | "dev": true
999 | },
1000 | "strip-ansi": {
1001 | "version": "3.0.1",
1002 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1003 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1004 | "dev": true,
1005 | "requires": {
1006 | "ansi-regex": "^2.0.0"
1007 | }
1008 | },
1009 | "supports-color": {
1010 | "version": "2.0.0",
1011 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1012 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1013 | "dev": true
1014 | }
1015 | }
1016 | },
1017 | "commander": {
1018 | "version": "2.15.1",
1019 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
1020 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
1021 | "dev": true
1022 | },
1023 | "commondir": {
1024 | "version": "1.0.1",
1025 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
1026 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
1027 | "dev": true
1028 | },
1029 | "concat-map": {
1030 | "version": "0.0.1",
1031 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1032 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1033 | "dev": true
1034 | },
1035 | "convert-source-map": {
1036 | "version": "1.5.1",
1037 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
1038 | "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
1039 | "dev": true
1040 | },
1041 | "core-util-is": {
1042 | "version": "1.0.2",
1043 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1044 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
1045 | "dev": true,
1046 | "optional": true
1047 | },
1048 | "debug": {
1049 | "version": "2.6.9",
1050 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1051 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1052 | "dev": true,
1053 | "requires": {
1054 | "ms": "2.0.0"
1055 | }
1056 | },
1057 | "detect-indent": {
1058 | "version": "4.0.0",
1059 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
1060 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
1061 | "dev": true,
1062 | "requires": {
1063 | "repeating": "^2.0.0"
1064 | }
1065 | },
1066 | "electron-to-chromium": {
1067 | "version": "1.3.47",
1068 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz",
1069 | "integrity": "sha1-dk6IfKkQTQGgrI6r7n38DizhQQQ=",
1070 | "dev": true
1071 | },
1072 | "emojis-list": {
1073 | "version": "3.0.0",
1074 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
1075 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
1076 | "dev": true
1077 | },
1078 | "escape-string-regexp": {
1079 | "version": "1.0.5",
1080 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1081 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1082 | "dev": true
1083 | },
1084 | "esutils": {
1085 | "version": "2.0.2",
1086 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
1087 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
1088 | "dev": true
1089 | },
1090 | "expand-range": {
1091 | "version": "1.8.2",
1092 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
1093 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
1094 | "dev": true,
1095 | "optional": true,
1096 | "requires": {
1097 | "fill-range": "^2.1.0"
1098 | },
1099 | "dependencies": {
1100 | "fill-range": {
1101 | "version": "2.2.4",
1102 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
1103 | "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
1104 | "dev": true,
1105 | "optional": true,
1106 | "requires": {
1107 | "is-number": "^2.1.0",
1108 | "isobject": "^2.0.0",
1109 | "randomatic": "^3.0.0",
1110 | "repeat-element": "^1.1.2",
1111 | "repeat-string": "^1.5.2"
1112 | }
1113 | },
1114 | "is-number": {
1115 | "version": "2.1.0",
1116 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
1117 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
1118 | "dev": true,
1119 | "optional": true,
1120 | "requires": {
1121 | "kind-of": "^3.0.2"
1122 | }
1123 | },
1124 | "isobject": {
1125 | "version": "2.1.0",
1126 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
1127 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
1128 | "dev": true,
1129 | "optional": true,
1130 | "requires": {
1131 | "isarray": "1.0.0"
1132 | }
1133 | },
1134 | "kind-of": {
1135 | "version": "3.2.2",
1136 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1137 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1138 | "dev": true,
1139 | "optional": true,
1140 | "requires": {
1141 | "is-buffer": "^1.1.5"
1142 | }
1143 | }
1144 | }
1145 | },
1146 | "filename-regex": {
1147 | "version": "2.0.1",
1148 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
1149 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
1150 | "dev": true,
1151 | "optional": true
1152 | },
1153 | "find-cache-dir": {
1154 | "version": "1.0.0",
1155 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
1156 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
1157 | "dev": true,
1158 | "requires": {
1159 | "commondir": "^1.0.1",
1160 | "make-dir": "^1.0.0",
1161 | "pkg-dir": "^2.0.0"
1162 | }
1163 | },
1164 | "find-up": {
1165 | "version": "2.1.0",
1166 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1167 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1168 | "dev": true,
1169 | "requires": {
1170 | "locate-path": "^2.0.0"
1171 | }
1172 | },
1173 | "for-in": {
1174 | "version": "1.0.2",
1175 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1176 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1177 | "dev": true,
1178 | "optional": true
1179 | },
1180 | "for-own": {
1181 | "version": "0.1.5",
1182 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
1183 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
1184 | "dev": true,
1185 | "optional": true,
1186 | "requires": {
1187 | "for-in": "^1.0.1"
1188 | }
1189 | },
1190 | "fs-readdir-recursive": {
1191 | "version": "1.1.0",
1192 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
1193 | "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
1194 | "dev": true
1195 | },
1196 | "fs.realpath": {
1197 | "version": "1.0.0",
1198 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1199 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1200 | "dev": true
1201 | },
1202 | "fsevents": {
1203 | "version": "1.2.4",
1204 | "resolved": "",
1205 | "dev": true,
1206 | "optional": true,
1207 | "requires": {
1208 | "node-pre-gyp": "^0.10.0"
1209 | },
1210 | "dependencies": {
1211 | "abbrev": {
1212 | "version": "1.1.1",
1213 | "bundled": true,
1214 | "dev": true,
1215 | "optional": true
1216 | },
1217 | "ansi-regex": {
1218 | "version": "2.1.1",
1219 | "bundled": true,
1220 | "dev": true,
1221 | "optional": true
1222 | },
1223 | "aproba": {
1224 | "version": "1.2.0",
1225 | "bundled": true,
1226 | "dev": true,
1227 | "optional": true
1228 | },
1229 | "are-we-there-yet": {
1230 | "version": "1.1.4",
1231 | "bundled": true,
1232 | "dev": true,
1233 | "optional": true,
1234 | "requires": {
1235 | "delegates": "^1.0.0",
1236 | "readable-stream": "^2.0.6"
1237 | }
1238 | },
1239 | "balanced-match": {
1240 | "version": "1.0.0",
1241 | "bundled": true,
1242 | "dev": true,
1243 | "optional": true
1244 | },
1245 | "brace-expansion": {
1246 | "version": "1.1.11",
1247 | "bundled": true,
1248 | "dev": true,
1249 | "optional": true,
1250 | "requires": {
1251 | "balanced-match": "^1.0.0",
1252 | "concat-map": "0.0.1"
1253 | }
1254 | },
1255 | "chownr": {
1256 | "version": "1.0.1",
1257 | "bundled": true,
1258 | "dev": true,
1259 | "optional": true
1260 | },
1261 | "code-point-at": {
1262 | "version": "1.1.0",
1263 | "bundled": true,
1264 | "dev": true,
1265 | "optional": true
1266 | },
1267 | "concat-map": {
1268 | "version": "0.0.1",
1269 | "bundled": true,
1270 | "dev": true,
1271 | "optional": true
1272 | },
1273 | "console-control-strings": {
1274 | "version": "1.1.0",
1275 | "bundled": true,
1276 | "dev": true,
1277 | "optional": true
1278 | },
1279 | "core-util-is": {
1280 | "version": "1.0.2",
1281 | "bundled": true,
1282 | "dev": true,
1283 | "optional": true
1284 | },
1285 | "debug": {
1286 | "version": "2.6.9",
1287 | "bundled": true,
1288 | "dev": true,
1289 | "optional": true,
1290 | "requires": {
1291 | "ms": "2.0.0"
1292 | }
1293 | },
1294 | "deep-extend": {
1295 | "version": "0.5.1",
1296 | "bundled": true,
1297 | "dev": true,
1298 | "optional": true
1299 | },
1300 | "delegates": {
1301 | "version": "1.0.0",
1302 | "bundled": true,
1303 | "dev": true,
1304 | "optional": true
1305 | },
1306 | "detect-libc": {
1307 | "version": "1.0.3",
1308 | "bundled": true,
1309 | "dev": true,
1310 | "optional": true
1311 | },
1312 | "fs-minipass": {
1313 | "version": "1.2.5",
1314 | "bundled": true,
1315 | "dev": true,
1316 | "optional": true,
1317 | "requires": {
1318 | "minipass": "^2.2.1"
1319 | }
1320 | },
1321 | "fs.realpath": {
1322 | "version": "1.0.0",
1323 | "bundled": true,
1324 | "dev": true,
1325 | "optional": true
1326 | },
1327 | "gauge": {
1328 | "version": "2.7.4",
1329 | "bundled": true,
1330 | "dev": true,
1331 | "optional": true,
1332 | "requires": {
1333 | "aproba": "^1.0.3",
1334 | "console-control-strings": "^1.0.0",
1335 | "has-unicode": "^2.0.0",
1336 | "object-assign": "^4.1.0",
1337 | "signal-exit": "^3.0.0",
1338 | "string-width": "^1.0.1",
1339 | "strip-ansi": "^3.0.1",
1340 | "wide-align": "^1.1.0"
1341 | }
1342 | },
1343 | "glob": {
1344 | "version": "7.1.2",
1345 | "bundled": true,
1346 | "dev": true,
1347 | "optional": true,
1348 | "requires": {
1349 | "fs.realpath": "^1.0.0",
1350 | "inflight": "^1.0.4",
1351 | "inherits": "2",
1352 | "minimatch": "^3.0.4",
1353 | "once": "^1.3.0",
1354 | "path-is-absolute": "^1.0.0"
1355 | }
1356 | },
1357 | "has-unicode": {
1358 | "version": "2.0.1",
1359 | "bundled": true,
1360 | "dev": true,
1361 | "optional": true
1362 | },
1363 | "iconv-lite": {
1364 | "version": "0.4.21",
1365 | "bundled": true,
1366 | "dev": true,
1367 | "optional": true,
1368 | "requires": {
1369 | "safer-buffer": "^2.1.0"
1370 | }
1371 | },
1372 | "ignore-walk": {
1373 | "version": "3.0.1",
1374 | "bundled": true,
1375 | "dev": true,
1376 | "optional": true,
1377 | "requires": {
1378 | "minimatch": "^3.0.4"
1379 | }
1380 | },
1381 | "inflight": {
1382 | "version": "1.0.6",
1383 | "bundled": true,
1384 | "dev": true,
1385 | "optional": true,
1386 | "requires": {
1387 | "once": "^1.3.0",
1388 | "wrappy": "1"
1389 | }
1390 | },
1391 | "inherits": {
1392 | "version": "2.0.3",
1393 | "bundled": true,
1394 | "dev": true,
1395 | "optional": true
1396 | },
1397 | "ini": {
1398 | "version": "1.3.5",
1399 | "bundled": true,
1400 | "dev": true,
1401 | "optional": true
1402 | },
1403 | "is-fullwidth-code-point": {
1404 | "version": "1.0.0",
1405 | "bundled": true,
1406 | "dev": true,
1407 | "optional": true,
1408 | "requires": {
1409 | "number-is-nan": "^1.0.0"
1410 | }
1411 | },
1412 | "isarray": {
1413 | "version": "1.0.0",
1414 | "bundled": true,
1415 | "dev": true,
1416 | "optional": true
1417 | },
1418 | "minimatch": {
1419 | "version": "3.0.4",
1420 | "bundled": true,
1421 | "dev": true,
1422 | "optional": true,
1423 | "requires": {
1424 | "brace-expansion": "^1.1.7"
1425 | }
1426 | },
1427 | "minimist": {
1428 | "version": "0.0.8",
1429 | "bundled": true,
1430 | "dev": true,
1431 | "optional": true
1432 | },
1433 | "minipass": {
1434 | "version": "2.2.4",
1435 | "bundled": true,
1436 | "dev": true,
1437 | "optional": true,
1438 | "requires": {
1439 | "safe-buffer": "^5.1.1",
1440 | "yallist": "^3.0.0"
1441 | }
1442 | },
1443 | "minizlib": {
1444 | "version": "1.1.0",
1445 | "bundled": true,
1446 | "dev": true,
1447 | "optional": true,
1448 | "requires": {
1449 | "minipass": "^2.2.1"
1450 | }
1451 | },
1452 | "mkdirp": {
1453 | "version": "0.5.1",
1454 | "bundled": true,
1455 | "dev": true,
1456 | "optional": true,
1457 | "requires": {
1458 | "minimist": "0.0.8"
1459 | }
1460 | },
1461 | "ms": {
1462 | "version": "2.0.0",
1463 | "bundled": true,
1464 | "dev": true,
1465 | "optional": true
1466 | },
1467 | "needle": {
1468 | "version": "2.2.0",
1469 | "bundled": true,
1470 | "dev": true,
1471 | "optional": true,
1472 | "requires": {
1473 | "debug": "^2.1.2",
1474 | "iconv-lite": "^0.4.4",
1475 | "sax": "^1.2.4"
1476 | }
1477 | },
1478 | "node-pre-gyp": {
1479 | "version": "0.10.0",
1480 | "bundled": true,
1481 | "dev": true,
1482 | "optional": true,
1483 | "requires": {
1484 | "detect-libc": "^1.0.2",
1485 | "mkdirp": "^0.5.1",
1486 | "needle": "^2.2.0",
1487 | "nopt": "^4.0.1",
1488 | "npm-packlist": "^1.1.6",
1489 | "npmlog": "^4.0.2",
1490 | "rc": "^1.1.7",
1491 | "rimraf": "^2.6.1",
1492 | "semver": "^5.3.0",
1493 | "tar": "^4"
1494 | }
1495 | },
1496 | "nopt": {
1497 | "version": "4.0.1",
1498 | "bundled": true,
1499 | "dev": true,
1500 | "optional": true,
1501 | "requires": {
1502 | "abbrev": "1",
1503 | "osenv": "^0.1.4"
1504 | }
1505 | },
1506 | "npm-bundled": {
1507 | "version": "1.0.3",
1508 | "bundled": true,
1509 | "dev": true,
1510 | "optional": true
1511 | },
1512 | "npm-packlist": {
1513 | "version": "1.1.10",
1514 | "bundled": true,
1515 | "dev": true,
1516 | "optional": true,
1517 | "requires": {
1518 | "ignore-walk": "^3.0.1",
1519 | "npm-bundled": "^1.0.1"
1520 | }
1521 | },
1522 | "npmlog": {
1523 | "version": "4.1.2",
1524 | "bundled": true,
1525 | "dev": true,
1526 | "optional": true,
1527 | "requires": {
1528 | "are-we-there-yet": "~1.1.2",
1529 | "console-control-strings": "~1.1.0",
1530 | "gauge": "~2.7.3",
1531 | "set-blocking": "~2.0.0"
1532 | }
1533 | },
1534 | "number-is-nan": {
1535 | "version": "1.0.1",
1536 | "bundled": true,
1537 | "dev": true,
1538 | "optional": true
1539 | },
1540 | "object-assign": {
1541 | "version": "4.1.1",
1542 | "bundled": true,
1543 | "dev": true,
1544 | "optional": true
1545 | },
1546 | "once": {
1547 | "version": "1.4.0",
1548 | "bundled": true,
1549 | "dev": true,
1550 | "optional": true,
1551 | "requires": {
1552 | "wrappy": "1"
1553 | }
1554 | },
1555 | "os-homedir": {
1556 | "version": "1.0.2",
1557 | "bundled": true,
1558 | "dev": true,
1559 | "optional": true
1560 | },
1561 | "os-tmpdir": {
1562 | "version": "1.0.2",
1563 | "bundled": true,
1564 | "dev": true,
1565 | "optional": true
1566 | },
1567 | "osenv": {
1568 | "version": "0.1.5",
1569 | "bundled": true,
1570 | "dev": true,
1571 | "optional": true,
1572 | "requires": {
1573 | "os-homedir": "^1.0.0",
1574 | "os-tmpdir": "^1.0.0"
1575 | }
1576 | },
1577 | "path-is-absolute": {
1578 | "version": "1.0.1",
1579 | "bundled": true,
1580 | "dev": true,
1581 | "optional": true
1582 | },
1583 | "process-nextick-args": {
1584 | "version": "2.0.0",
1585 | "bundled": true,
1586 | "dev": true,
1587 | "optional": true
1588 | },
1589 | "rc": {
1590 | "version": "1.2.7",
1591 | "bundled": true,
1592 | "dev": true,
1593 | "optional": true,
1594 | "requires": {
1595 | "deep-extend": "^0.5.1",
1596 | "ini": "~1.3.0",
1597 | "minimist": "^1.2.0",
1598 | "strip-json-comments": "~2.0.1"
1599 | },
1600 | "dependencies": {
1601 | "minimist": {
1602 | "version": "1.2.0",
1603 | "bundled": true,
1604 | "dev": true,
1605 | "optional": true
1606 | }
1607 | }
1608 | },
1609 | "readable-stream": {
1610 | "version": "2.3.6",
1611 | "bundled": true,
1612 | "dev": true,
1613 | "optional": true,
1614 | "requires": {
1615 | "core-util-is": "~1.0.0",
1616 | "inherits": "~2.0.3",
1617 | "isarray": "~1.0.0",
1618 | "process-nextick-args": "~2.0.0",
1619 | "safe-buffer": "~5.1.1",
1620 | "string_decoder": "~1.1.1",
1621 | "util-deprecate": "~1.0.1"
1622 | }
1623 | },
1624 | "rimraf": {
1625 | "version": "2.6.2",
1626 | "bundled": true,
1627 | "dev": true,
1628 | "optional": true,
1629 | "requires": {
1630 | "glob": "^7.0.5"
1631 | }
1632 | },
1633 | "safe-buffer": {
1634 | "version": "5.1.1",
1635 | "bundled": true,
1636 | "dev": true,
1637 | "optional": true
1638 | },
1639 | "safer-buffer": {
1640 | "version": "2.1.2",
1641 | "bundled": true,
1642 | "dev": true,
1643 | "optional": true
1644 | },
1645 | "sax": {
1646 | "version": "1.2.4",
1647 | "bundled": true,
1648 | "dev": true,
1649 | "optional": true
1650 | },
1651 | "semver": {
1652 | "version": "5.5.0",
1653 | "bundled": true,
1654 | "dev": true,
1655 | "optional": true
1656 | },
1657 | "set-blocking": {
1658 | "version": "2.0.0",
1659 | "bundled": true,
1660 | "dev": true,
1661 | "optional": true
1662 | },
1663 | "signal-exit": {
1664 | "version": "3.0.2",
1665 | "bundled": true,
1666 | "dev": true,
1667 | "optional": true
1668 | },
1669 | "string-width": {
1670 | "version": "1.0.2",
1671 | "bundled": true,
1672 | "dev": true,
1673 | "optional": true,
1674 | "requires": {
1675 | "code-point-at": "^1.0.0",
1676 | "is-fullwidth-code-point": "^1.0.0",
1677 | "strip-ansi": "^3.0.0"
1678 | }
1679 | },
1680 | "string_decoder": {
1681 | "version": "1.1.1",
1682 | "bundled": true,
1683 | "dev": true,
1684 | "optional": true,
1685 | "requires": {
1686 | "safe-buffer": "~5.1.0"
1687 | }
1688 | },
1689 | "strip-ansi": {
1690 | "version": "3.0.1",
1691 | "bundled": true,
1692 | "dev": true,
1693 | "optional": true,
1694 | "requires": {
1695 | "ansi-regex": "^2.0.0"
1696 | }
1697 | },
1698 | "strip-json-comments": {
1699 | "version": "2.0.1",
1700 | "bundled": true,
1701 | "dev": true,
1702 | "optional": true
1703 | },
1704 | "tar": {
1705 | "version": "4.4.1",
1706 | "bundled": true,
1707 | "dev": true,
1708 | "optional": true,
1709 | "requires": {
1710 | "chownr": "^1.0.1",
1711 | "fs-minipass": "^1.2.5",
1712 | "minipass": "^2.2.4",
1713 | "minizlib": "^1.1.0",
1714 | "mkdirp": "^0.5.0",
1715 | "safe-buffer": "^5.1.1",
1716 | "yallist": "^3.0.2"
1717 | }
1718 | },
1719 | "util-deprecate": {
1720 | "version": "1.0.2",
1721 | "bundled": true,
1722 | "dev": true,
1723 | "optional": true
1724 | },
1725 | "wide-align": {
1726 | "version": "1.1.2",
1727 | "bundled": true,
1728 | "dev": true,
1729 | "optional": true,
1730 | "requires": {
1731 | "string-width": "^1.0.2"
1732 | }
1733 | },
1734 | "wrappy": {
1735 | "version": "1.0.2",
1736 | "bundled": true,
1737 | "dev": true,
1738 | "optional": true
1739 | },
1740 | "yallist": {
1741 | "version": "3.0.2",
1742 | "bundled": true,
1743 | "dev": true,
1744 | "optional": true
1745 | }
1746 | }
1747 | },
1748 | "glob": {
1749 | "version": "7.1.2",
1750 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
1751 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
1752 | "dev": true,
1753 | "requires": {
1754 | "fs.realpath": "^1.0.0",
1755 | "inflight": "^1.0.4",
1756 | "inherits": "2",
1757 | "minimatch": "^3.0.4",
1758 | "once": "^1.3.0",
1759 | "path-is-absolute": "^1.0.0"
1760 | }
1761 | },
1762 | "glob-base": {
1763 | "version": "0.3.0",
1764 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
1765 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
1766 | "dev": true,
1767 | "optional": true,
1768 | "requires": {
1769 | "glob-parent": "^2.0.0",
1770 | "is-glob": "^2.0.0"
1771 | }
1772 | },
1773 | "glob-parent": {
1774 | "version": "2.0.0",
1775 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
1776 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
1777 | "dev": true,
1778 | "optional": true,
1779 | "requires": {
1780 | "is-glob": "^2.0.0"
1781 | }
1782 | },
1783 | "globals": {
1784 | "version": "9.18.0",
1785 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
1786 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
1787 | "dev": true
1788 | },
1789 | "graceful-fs": {
1790 | "version": "4.1.11",
1791 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1792 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
1793 | "dev": true
1794 | },
1795 | "has-ansi": {
1796 | "version": "2.0.0",
1797 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1798 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1799 | "dev": true,
1800 | "requires": {
1801 | "ansi-regex": "^2.0.0"
1802 | },
1803 | "dependencies": {
1804 | "ansi-regex": {
1805 | "version": "2.1.1",
1806 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
1807 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
1808 | "dev": true
1809 | }
1810 | }
1811 | },
1812 | "home-or-tmp": {
1813 | "version": "2.0.0",
1814 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
1815 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
1816 | "dev": true,
1817 | "requires": {
1818 | "os-homedir": "^1.0.0",
1819 | "os-tmpdir": "^1.0.1"
1820 | }
1821 | },
1822 | "inflight": {
1823 | "version": "1.0.6",
1824 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1825 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1826 | "dev": true,
1827 | "requires": {
1828 | "once": "^1.3.0",
1829 | "wrappy": "1"
1830 | }
1831 | },
1832 | "inherits": {
1833 | "version": "2.0.3",
1834 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1835 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1836 | "dev": true
1837 | },
1838 | "invariant": {
1839 | "version": "2.2.4",
1840 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
1841 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
1842 | "dev": true,
1843 | "requires": {
1844 | "loose-envify": "^1.0.0"
1845 | }
1846 | },
1847 | "is-binary-path": {
1848 | "version": "1.0.1",
1849 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
1850 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
1851 | "dev": true,
1852 | "optional": true,
1853 | "requires": {
1854 | "binary-extensions": "^1.0.0"
1855 | }
1856 | },
1857 | "is-buffer": {
1858 | "version": "1.1.6",
1859 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1860 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1861 | "dev": true,
1862 | "optional": true
1863 | },
1864 | "is-dotfile": {
1865 | "version": "1.0.3",
1866 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
1867 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
1868 | "dev": true,
1869 | "optional": true
1870 | },
1871 | "is-equal-shallow": {
1872 | "version": "0.1.3",
1873 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
1874 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
1875 | "dev": true,
1876 | "optional": true,
1877 | "requires": {
1878 | "is-primitive": "^2.0.0"
1879 | }
1880 | },
1881 | "is-extendable": {
1882 | "version": "0.1.1",
1883 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1884 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1885 | "dev": true,
1886 | "optional": true
1887 | },
1888 | "is-extglob": {
1889 | "version": "1.0.0",
1890 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1891 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1892 | "dev": true,
1893 | "optional": true
1894 | },
1895 | "is-finite": {
1896 | "version": "1.1.0",
1897 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
1898 | "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
1899 | "dev": true
1900 | },
1901 | "is-glob": {
1902 | "version": "2.0.1",
1903 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
1904 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
1905 | "dev": true,
1906 | "optional": true,
1907 | "requires": {
1908 | "is-extglob": "^1.0.0"
1909 | }
1910 | },
1911 | "is-posix-bracket": {
1912 | "version": "0.1.1",
1913 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
1914 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
1915 | "dev": true,
1916 | "optional": true
1917 | },
1918 | "is-primitive": {
1919 | "version": "2.0.0",
1920 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
1921 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
1922 | "dev": true,
1923 | "optional": true
1924 | },
1925 | "isarray": {
1926 | "version": "1.0.0",
1927 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1928 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1929 | "dev": true,
1930 | "optional": true
1931 | },
1932 | "js-tokens": {
1933 | "version": "3.0.2",
1934 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
1935 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
1936 | },
1937 | "jsesc": {
1938 | "version": "1.3.0",
1939 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
1940 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
1941 | "dev": true
1942 | },
1943 | "json5": {
1944 | "version": "0.5.1",
1945 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
1946 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
1947 | "dev": true
1948 | },
1949 | "kind-of": {
1950 | "version": "6.0.2",
1951 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1952 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
1953 | "dev": true,
1954 | "optional": true
1955 | },
1956 | "loader-utils": {
1957 | "version": "1.4.0",
1958 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
1959 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
1960 | "dev": true,
1961 | "requires": {
1962 | "big.js": "^5.2.2",
1963 | "emojis-list": "^3.0.0",
1964 | "json5": "^1.0.1"
1965 | },
1966 | "dependencies": {
1967 | "json5": {
1968 | "version": "1.0.1",
1969 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
1970 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
1971 | "dev": true,
1972 | "requires": {
1973 | "minimist": "^1.2.0"
1974 | }
1975 | },
1976 | "minimist": {
1977 | "version": "1.2.0",
1978 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1979 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1980 | "dev": true
1981 | }
1982 | }
1983 | },
1984 | "locate-path": {
1985 | "version": "2.0.0",
1986 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
1987 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
1988 | "dev": true,
1989 | "requires": {
1990 | "p-locate": "^2.0.0",
1991 | "path-exists": "^3.0.0"
1992 | }
1993 | },
1994 | "lodash": {
1995 | "version": "4.17.15",
1996 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
1997 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
1998 | "dev": true
1999 | },
2000 | "loose-envify": {
2001 | "version": "1.3.1",
2002 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
2003 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
2004 | "requires": {
2005 | "js-tokens": "^3.0.0"
2006 | }
2007 | },
2008 | "make-dir": {
2009 | "version": "1.3.0",
2010 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
2011 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
2012 | "dev": true,
2013 | "requires": {
2014 | "pify": "^3.0.0"
2015 | }
2016 | },
2017 | "math-random": {
2018 | "version": "1.0.1",
2019 | "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
2020 | "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
2021 | "dev": true,
2022 | "optional": true
2023 | },
2024 | "minimatch": {
2025 | "version": "3.0.4",
2026 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2027 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2028 | "dev": true,
2029 | "requires": {
2030 | "brace-expansion": "^1.1.7"
2031 | }
2032 | },
2033 | "minimist": {
2034 | "version": "0.0.8",
2035 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2036 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2037 | "dev": true
2038 | },
2039 | "mkdirp": {
2040 | "version": "0.5.1",
2041 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
2042 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
2043 | "dev": true,
2044 | "requires": {
2045 | "minimist": "0.0.8"
2046 | }
2047 | },
2048 | "ms": {
2049 | "version": "2.0.0",
2050 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2051 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
2052 | "dev": true
2053 | },
2054 | "normalize-path": {
2055 | "version": "2.1.1",
2056 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
2057 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
2058 | "dev": true,
2059 | "optional": true,
2060 | "requires": {
2061 | "remove-trailing-separator": "^1.0.1"
2062 | }
2063 | },
2064 | "object-assign": {
2065 | "version": "4.1.1",
2066 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2067 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
2068 | },
2069 | "object.omit": {
2070 | "version": "2.0.1",
2071 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
2072 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
2073 | "dev": true,
2074 | "optional": true,
2075 | "requires": {
2076 | "for-own": "^0.1.4",
2077 | "is-extendable": "^0.1.1"
2078 | }
2079 | },
2080 | "once": {
2081 | "version": "1.4.0",
2082 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2083 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2084 | "dev": true,
2085 | "requires": {
2086 | "wrappy": "1"
2087 | }
2088 | },
2089 | "os-homedir": {
2090 | "version": "1.0.2",
2091 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
2092 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
2093 | "dev": true
2094 | },
2095 | "os-tmpdir": {
2096 | "version": "1.0.2",
2097 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2098 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2099 | "dev": true
2100 | },
2101 | "output-file-sync": {
2102 | "version": "1.1.2",
2103 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
2104 | "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
2105 | "dev": true,
2106 | "requires": {
2107 | "graceful-fs": "^4.1.4",
2108 | "mkdirp": "^0.5.1",
2109 | "object-assign": "^4.1.0"
2110 | }
2111 | },
2112 | "p-limit": {
2113 | "version": "1.3.0",
2114 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2115 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2116 | "dev": true,
2117 | "requires": {
2118 | "p-try": "^1.0.0"
2119 | }
2120 | },
2121 | "p-locate": {
2122 | "version": "2.0.0",
2123 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2124 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2125 | "dev": true,
2126 | "requires": {
2127 | "p-limit": "^1.1.0"
2128 | }
2129 | },
2130 | "p-try": {
2131 | "version": "1.0.0",
2132 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
2133 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
2134 | "dev": true
2135 | },
2136 | "parse-glob": {
2137 | "version": "3.0.4",
2138 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
2139 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
2140 | "dev": true,
2141 | "optional": true,
2142 | "requires": {
2143 | "glob-base": "^0.3.0",
2144 | "is-dotfile": "^1.0.0",
2145 | "is-extglob": "^1.0.0",
2146 | "is-glob": "^2.0.0"
2147 | }
2148 | },
2149 | "path-exists": {
2150 | "version": "3.0.0",
2151 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2152 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2153 | "dev": true
2154 | },
2155 | "path-is-absolute": {
2156 | "version": "1.0.1",
2157 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2158 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2159 | "dev": true
2160 | },
2161 | "pify": {
2162 | "version": "3.0.0",
2163 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
2164 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
2165 | "dev": true
2166 | },
2167 | "pkg-dir": {
2168 | "version": "2.0.0",
2169 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
2170 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
2171 | "dev": true,
2172 | "requires": {
2173 | "find-up": "^2.1.0"
2174 | }
2175 | },
2176 | "preserve": {
2177 | "version": "0.2.0",
2178 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
2179 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
2180 | "dev": true,
2181 | "optional": true
2182 | },
2183 | "private": {
2184 | "version": "0.1.8",
2185 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
2186 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
2187 | "dev": true
2188 | },
2189 | "process-nextick-args": {
2190 | "version": "2.0.0",
2191 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
2192 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
2193 | "dev": true,
2194 | "optional": true
2195 | },
2196 | "prop-types": {
2197 | "version": "15.7.2",
2198 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
2199 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
2200 | "requires": {
2201 | "loose-envify": "^1.4.0",
2202 | "object-assign": "^4.1.1",
2203 | "react-is": "^16.8.1"
2204 | },
2205 | "dependencies": {
2206 | "loose-envify": {
2207 | "version": "1.4.0",
2208 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2209 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2210 | "requires": {
2211 | "js-tokens": "^3.0.0 || ^4.0.0"
2212 | }
2213 | }
2214 | }
2215 | },
2216 | "randomatic": {
2217 | "version": "3.0.0",
2218 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
2219 | "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
2220 | "dev": true,
2221 | "optional": true,
2222 | "requires": {
2223 | "is-number": "^4.0.0",
2224 | "kind-of": "^6.0.0",
2225 | "math-random": "^1.0.1"
2226 | },
2227 | "dependencies": {
2228 | "is-number": {
2229 | "version": "4.0.0",
2230 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
2231 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
2232 | "dev": true,
2233 | "optional": true
2234 | }
2235 | }
2236 | },
2237 | "react": {
2238 | "version": "16.12.0",
2239 | "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz",
2240 | "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==",
2241 | "requires": {
2242 | "loose-envify": "^1.1.0",
2243 | "object-assign": "^4.1.1",
2244 | "prop-types": "^15.6.2"
2245 | }
2246 | },
2247 | "react-flip-move": {
2248 | "version": "3.0.4",
2249 | "resolved": "https://registry.npmjs.org/react-flip-move/-/react-flip-move-3.0.4.tgz",
2250 | "integrity": "sha512-HyUVv9g3t/BS7Yz9HgrtYSWyRNdR2F81nkj+C5iRY675AwlqCLB5JU9mnZWg0cdVz7IM4iquoyZx70vzZv3Z8Q=="
2251 | },
2252 | "react-is": {
2253 | "version": "16.12.0",
2254 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz",
2255 | "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q=="
2256 | },
2257 | "readable-stream": {
2258 | "version": "2.3.6",
2259 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
2260 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2261 | "dev": true,
2262 | "optional": true,
2263 | "requires": {
2264 | "core-util-is": "~1.0.0",
2265 | "inherits": "~2.0.3",
2266 | "isarray": "~1.0.0",
2267 | "process-nextick-args": "~2.0.0",
2268 | "safe-buffer": "~5.1.1",
2269 | "string_decoder": "~1.1.1",
2270 | "util-deprecate": "~1.0.1"
2271 | }
2272 | },
2273 | "readdirp": {
2274 | "version": "2.1.0",
2275 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
2276 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
2277 | "dev": true,
2278 | "optional": true,
2279 | "requires": {
2280 | "graceful-fs": "^4.1.2",
2281 | "minimatch": "^3.0.2",
2282 | "readable-stream": "^2.0.2",
2283 | "set-immediate-shim": "^1.0.1"
2284 | }
2285 | },
2286 | "regenerate": {
2287 | "version": "1.4.0",
2288 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
2289 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
2290 | "dev": true
2291 | },
2292 | "regenerator-runtime": {
2293 | "version": "0.11.1",
2294 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
2295 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
2296 | "dev": true
2297 | },
2298 | "regenerator-transform": {
2299 | "version": "0.10.1",
2300 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
2301 | "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
2302 | "dev": true,
2303 | "requires": {
2304 | "babel-runtime": "^6.18.0",
2305 | "babel-types": "^6.19.0",
2306 | "private": "^0.1.6"
2307 | }
2308 | },
2309 | "regex-cache": {
2310 | "version": "0.4.4",
2311 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
2312 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
2313 | "dev": true,
2314 | "optional": true,
2315 | "requires": {
2316 | "is-equal-shallow": "^0.1.3"
2317 | }
2318 | },
2319 | "regexpu-core": {
2320 | "version": "2.0.0",
2321 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
2322 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
2323 | "dev": true,
2324 | "requires": {
2325 | "regenerate": "^1.2.1",
2326 | "regjsgen": "^0.2.0",
2327 | "regjsparser": "^0.1.4"
2328 | }
2329 | },
2330 | "regjsgen": {
2331 | "version": "0.2.0",
2332 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
2333 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
2334 | "dev": true
2335 | },
2336 | "regjsparser": {
2337 | "version": "0.1.5",
2338 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
2339 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
2340 | "dev": true,
2341 | "requires": {
2342 | "jsesc": "~0.5.0"
2343 | },
2344 | "dependencies": {
2345 | "jsesc": {
2346 | "version": "0.5.0",
2347 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
2348 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
2349 | "dev": true
2350 | }
2351 | }
2352 | },
2353 | "remove-trailing-separator": {
2354 | "version": "1.1.0",
2355 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
2356 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
2357 | "dev": true,
2358 | "optional": true
2359 | },
2360 | "repeat-element": {
2361 | "version": "1.1.2",
2362 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
2363 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
2364 | "dev": true,
2365 | "optional": true
2366 | },
2367 | "repeat-string": {
2368 | "version": "1.6.1",
2369 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
2370 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
2371 | "dev": true,
2372 | "optional": true
2373 | },
2374 | "repeating": {
2375 | "version": "2.0.1",
2376 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
2377 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
2378 | "dev": true,
2379 | "requires": {
2380 | "is-finite": "^1.0.0"
2381 | }
2382 | },
2383 | "safe-buffer": {
2384 | "version": "5.1.2",
2385 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2386 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2387 | "dev": true,
2388 | "optional": true
2389 | },
2390 | "semver": {
2391 | "version": "5.5.0",
2392 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
2393 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
2394 | "dev": true
2395 | },
2396 | "set-immediate-shim": {
2397 | "version": "1.0.1",
2398 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
2399 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
2400 | "dev": true,
2401 | "optional": true
2402 | },
2403 | "slash": {
2404 | "version": "1.0.0",
2405 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
2406 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
2407 | "dev": true
2408 | },
2409 | "source-map": {
2410 | "version": "0.5.7",
2411 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2412 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2413 | "dev": true
2414 | },
2415 | "source-map-support": {
2416 | "version": "0.4.18",
2417 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
2418 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
2419 | "dev": true,
2420 | "requires": {
2421 | "source-map": "^0.5.6"
2422 | },
2423 | "dependencies": {
2424 | "source-map": {
2425 | "version": "0.5.7",
2426 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2427 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2428 | "dev": true
2429 | }
2430 | }
2431 | },
2432 | "string_decoder": {
2433 | "version": "1.1.1",
2434 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2435 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2436 | "dev": true,
2437 | "optional": true,
2438 | "requires": {
2439 | "safe-buffer": "~5.1.0"
2440 | }
2441 | },
2442 | "to-fast-properties": {
2443 | "version": "1.0.3",
2444 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
2445 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
2446 | "dev": true
2447 | },
2448 | "trim-right": {
2449 | "version": "1.0.1",
2450 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
2451 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
2452 | "dev": true
2453 | },
2454 | "user-home": {
2455 | "version": "1.1.1",
2456 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
2457 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
2458 | "dev": true
2459 | },
2460 | "util-deprecate": {
2461 | "version": "1.0.2",
2462 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2463 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2464 | "dev": true,
2465 | "optional": true
2466 | },
2467 | "v8flags": {
2468 | "version": "2.1.1",
2469 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
2470 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
2471 | "dev": true,
2472 | "requires": {
2473 | "user-home": "^1.1.1"
2474 | }
2475 | },
2476 | "wrappy": {
2477 | "version": "1.0.2",
2478 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2479 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2480 | "dev": true
2481 | }
2482 | }
2483 | }
2484 |
--------------------------------------------------------------------------------
/src/component/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-images-upload",
3 | "version": "1.2.8",
4 | "private": false,
5 | "main": "compiled.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/jakehartnell/react-images-upload"
9 | },
10 | "dependencies": {
11 | "react": "^16.12.0",
12 | "react-flip-move": "^3.0.4"
13 | },
14 | "scripts": {
15 | "prepublishOnly": "npm run transpile",
16 | "transpile": "babel index.js --out-file compiled.js"
17 | },
18 | "babel": {
19 | "presets": [
20 | "env",
21 | "react",
22 | "stage-2"
23 | ]
24 | },
25 | "keywords": [
26 | "image",
27 | "upload",
28 | "file",
29 | "react image upload"
30 | ],
31 | "license": "MIT",
32 | "peerDependencies": {
33 | "react": "^16.3.0",
34 | "react-dom": "^16.3.0"
35 | },
36 | "devDependencies": {
37 | "babel-cli": "^6.26.0",
38 | "babel-core": "^6.26.3",
39 | "babel-loader": "^7.1.5",
40 | "babel-preset-env": "^1.6.1",
41 | "babel-preset-react": "^6.24.1"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './App';
4 | import './app.css'
5 |
6 | ReactDOM.render(, document.getElementById('root'));
7 |
--------------------------------------------------------------------------------