├── .babelrc ├── .editorconfig ├── .gitignore ├── .npmignore ├── .prettierrc ├── LICENSE ├── README.md ├── demo ├── .babelrc ├── README.md ├── demo.gif ├── package-lock.json ├── package.json ├── src │ ├── addUploadFeature.js │ ├── data.js │ ├── dataProvider.js │ ├── i18n │ │ ├── en.js │ │ ├── fr.js │ │ └── index.js │ ├── i18nProvider.js │ ├── index.html │ ├── index.js │ ├── posts │ │ ├── PostCreate.js │ │ ├── PostEdit.js │ │ ├── PostList.js │ │ ├── PostShow.js │ │ ├── PostTitle.js │ │ ├── ResetViewsAction.js │ │ └── index.js │ ├── users │ │ ├── UserCreate.js │ │ ├── UserEdit.js │ │ ├── UserList.js │ │ ├── UserShow.js │ │ ├── UserTitle.js │ │ └── index.js │ └── validators.js ├── webpack.config.js └── yarn.lock ├── docs ├── 0.js ├── 0.js.map ├── index.html ├── main.js └── main.js.map ├── package-lock.json ├── package.json ├── src ├── CustomizableDatagrid.js ├── LocalStorage.js ├── SelectionDialog.js └── index.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "react", "stage-0"], 3 | "plugins": ["transform-react-jsx"] 4 | } 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | lib 64 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # .npmignore 2 | 3 | /demo 4 | /node_modules 5 | /docs 6 | /src 7 | .editorconfig 8 | yarn.lock 9 | README.md 10 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "printWidth": 100 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Fizix 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 | 2 |
3 |
4 | 5 | 6 | [![GitHub issues](https://img.shields.io/github/issues/fizix-io/ra-customizable-datagrid.svg)](https://github.com/fizix-io/ra-customizable-datagrid/issues) 7 | [![GitHub stars](https://img.shields.io/github/stars/fizix-io/ra-customizable-datagrid.svg)](https://github.com/fizix-io/ra-customizable-datagrid/stargazers) 8 | [![GitHub license](https://img.shields.io/github/license/fizix-io/ra-customizable-datagrid.svg)](https://github.com/fizix-io/ra-customizable-datagrid/blob/master/LICENSE) 9 | [![Twitter](https://img.shields.io/twitter/url/https/github.com/fizix-io/ra-customizable-datagrid.svg?style=social)](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2Ffizix-io%2Fra-customizable-datagrid) 10 | 11 |
12 | 13 | Fizix logo 14 |
15 | 16 |

ra-customizable-datagrid for React Admin

17 | 18 |
19 | 20 | [React Admin](https://github.com/marmelab/react-admin/) plugin that allows to hide / show columns dynamically. 21 | 22 |
23 | 24 | 25 | ## Preview 26 | 27 | Demo link 28 | 29 |

30 | Demo 31 |

32 | 33 | 34 | ## Features 35 | 36 | * Users can show/hide columns, obviously 37 | * Users preferences are stored by resource 38 | * The storage mechanism can be replaced 39 | * Developers can choose the default visible columns 40 | 41 | ## Installation 42 | 43 | ra-customizable-datagrid is available from npm. You can install it (and its required dependencies) using: 44 | 45 | ``` 46 | $> npm install --save ra-customizable-datagrid 47 | ``` 48 | or 49 | ``` 50 | $> yarn add ra-customizable-datagrid 51 | ``` 52 | 53 | Then replace React Admin `Datagrid` by `CustomizableDatagrid` 54 | 55 | ```jsx 56 | import CustomizableDatagrid from 'ra-customizable-datagrid'; 57 | 58 | const PostList = props => ( 59 | 60 | 61 | 62 | 63 | 64 | 65 | ); 66 | ``` 67 | 68 | ## Configuration 69 | 70 | ### Storage 71 | 72 | By default LocalStorage is used to store user preferences. 73 | 74 | If you need to store them somewhere else, use the `storage` props like this : 75 | 76 | ```jsx 77 | 78 | ``` 79 | 80 | where CustomStorage is an object with the `set` and `get` methods : 81 | 82 | ```js 83 | const CustomStorage = { 84 | get: (resourceName) => /* your own logic here */, 85 | set: (resourceName, selectedColumns) => /* your own logic here */, 86 | }; 87 | ``` 88 | 89 | ### Default columns 90 | 91 | All the columns are visible by default. 92 | 93 | This behavior can be changed with the `defaultColumns` prop. Just pass an array containing the name of the columns you want to be visible. 94 | 95 | ```jsx 96 | import CustomizableDatagrid from 'ra-customizable-datagrid'; 97 | 98 | const PostList = props => ( 99 | 100 | 101 | 102 | 103 | 104 | 105 | ); 106 | ``` 107 | 108 | ## How to run the demo locally 109 | 110 | ``` 111 | $> npm run demo-install 112 | $> npm run demo 113 | ``` 114 | 115 | ## License 116 | 117 | `ra-customizable-datagrid` is licensed under the MIT License, sponsored and supported by Fizix. 118 | -------------------------------------------------------------------------------- /demo/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "react", "stage-0"], 3 | "plugins": ["transform-react-jsx"] 4 | } 5 | -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | # React-admin simple 2 | 3 | This is the application we use for our end to end tests. 4 | 5 | ## How to run 6 | 7 | After having cloned the react-admin repository, run the following commands: 8 | 9 | ```sh 10 | make install 11 | 12 | make run-simple 13 | ``` 14 | 15 | And then browse to [http://localhost:8080/](http://localhost:8080/). 16 | 17 | The credentials are **login/password** 18 | -------------------------------------------------------------------------------- /demo/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fizix-io/ra-customizable-datagrid/5724f943a6fef070228f70090ca635623b347205/demo/demo.gif -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple", 3 | "private": true, 4 | "version": "2.0.0-beta1", 5 | "description": "", 6 | "main": "index.html", 7 | "scripts": { 8 | "start": "./node_modules/.bin/webpack-dev-server --progress --color --hot --watch --mode development", 9 | "serve": "./node_modules/.bin/serve --listen 8080 ./dist", 10 | "build": "./node_modules/.bin/webpack-cli --color --mode development --hide-modules true", 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "author": "", 14 | "license": "MIT", 15 | "devDependencies": { 16 | "@material-ui/core": "~1.2.1", 17 | "@material-ui/icons": "~1.1.0", 18 | "babel-core": "~6.26.0", 19 | "babel-loader": "~7.1.1", 20 | "babel-plugin-transform-react-jsx": "^6.24.1", 21 | "babel-polyfill": "~6.26.0", 22 | "babel-preset-react": "~6.24.1", 23 | "hard-source-webpack-plugin": "^0.6.4", 24 | "html-loader": "~0.5.5", 25 | "html-webpack-plugin": "~3.2.0", 26 | "ra-data-fakerest": "^2.0.0", 27 | "ra-input-rich-text": "^2.0.0", 28 | "ra-language-english": "^2.0.0", 29 | "ra-language-french": "^2.0.0", 30 | "react": "~16.3.1", 31 | "react-admin": "2.1.0", 32 | "react-dom": "~16.3.1", 33 | "serve": "~9.1.0", 34 | "style-loader": "~0.20.3", 35 | "wait-on": "^2.1.0", 36 | "webpack": "~4.5.0", 37 | "webpack-cli": "~2.0.13", 38 | "webpack-dev-server": "~3.1.1" 39 | }, 40 | "dependencies": { 41 | "babel-preset-stage-0": "^6.24.1" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /demo/src/addUploadFeature.js: -------------------------------------------------------------------------------- 1 | const convertFileToBase64 = file => 2 | new Promise((resolve, reject) => { 3 | const reader = new FileReader(); 4 | reader.readAsDataURL(file.rawFile); 5 | 6 | reader.onload = () => resolve(reader.result); 7 | reader.onerror = reject; 8 | }); 9 | 10 | const addUploadCapabilities = requestHandler => (type, resource, params) => { 11 | if (type === 'UPDATE' && resource === 'posts') { 12 | if (params.data.pictures && params.data.pictures.length) { 13 | // only freshly dropped pictures are instance of File 14 | const formerPictures = params.data.pictures.filter(p => !(p.rawFile instanceof File)); 15 | const newPictures = params.data.pictures.filter(p => p.rawFile instanceof File); 16 | 17 | return Promise.all(newPictures.map(convertFileToBase64)) 18 | .then(base64Pictures => 19 | base64Pictures.map(picture64 => ({ 20 | src: picture64, 21 | title: `${params.data.title}`, 22 | })), 23 | ) 24 | .then(transformedNewPictures => 25 | requestHandler(type, resource, { 26 | ...params, 27 | data: { 28 | ...params.data, 29 | pictures: [...transformedNewPictures, ...formerPictures], 30 | }, 31 | }), 32 | ); 33 | } 34 | } 35 | 36 | return requestHandler(type, resource, params); 37 | }; 38 | 39 | export default addUploadCapabilities; 40 | -------------------------------------------------------------------------------- /demo/src/data.js: -------------------------------------------------------------------------------- 1 | const postData = [ 2 | { 3 | id: 1, 4 | title: 'Accusantium qui nihil voluptatum quia voluptas maxime ab similique', 5 | teaser: 6 | 'In facilis aut aut odit hic doloribus. Fugit possimus perspiciatis sit molestias in. Sunt dignissimos sed quis at vitae veniam amet. Sint sunt perspiciatis quis doloribus aperiam numquam consequatur et. Blanditiis aut earum incidunt eos magnam et voluptatem. Minima iure voluptatum autem. At eaque sit aperiam minima aut in illum.', 7 | body: 8 | '

Rerum velit quos est similique. Consectetur tempora eos ullam velit nobis sit debitis. Magni explicabo omnis delectus labore vel recusandae.

Aut a minus laboriosam harum placeat quas minima fuga. Quos nulla fuga quam officia tempore. Rerum occaecati ut eum et tempore. Nam ab repudiandae et nemo praesentium.

Cumque corporis officia occaecati ducimus sequi laborum omnis ut. Nam aspernatur veniam fugit. Nihil eum libero ea dolorum ducimus impedit sed. Quidem inventore porro corporis debitis eum in. Nesciunt unde est est qui nulla. Esse sunt placeat molestiae molestiae sed quia. Sunt qui quidem quos velit reprehenderit quos blanditiis ducimus. Sint et molestiae maxime ut consequatur minima. Quaerat rem voluptates voluptatem quos. Corporis perferendis in provident iure. Commodi odit exercitationem excepturi et deserunt qui.

Optio iste necessitatibus velit non. Neque sed occaecati culpa porro culpa. Quia quam in molestias ratione et necessitatibus consequatur. Est est tempora consequatur voluptatem vel. Mollitia tenetur non quis omnis perspiciatis deserunt sed necessitatibus. Ad rerum reiciendis sunt aspernatur.

Est ullam ut magni aspernatur. Eum et sed tempore modi.

Earum aperiam sit neque quo laborum suscipit unde. Expedita nostrum itaque non non adipisci. Ut delectus quis delectus est at sint. Iste hic qui ea eaque eaque sed id. Hic placeat rerum numquam id velit deleniti voluptatem. Illum adipisci voluptas adipisci ut alias. Earum exercitationem iste quidem eveniet aliquid hic reiciendis. Exercitationem est sunt in minima consequuntur. Aut quaerat libero dolorem.

', 9 | views: 143, 10 | average_note: 2.72198, 11 | commentable: true, 12 | pictures: { 13 | first: { 14 | name: 'the picture name', 15 | url: 'http://www.photo-libre.fr/paysage/1.jpg', 16 | metas: { 17 | title: 'This is a great photo', 18 | definitions: ['72', '300'], 19 | authors: [ 20 | { 21 | name: 'Paul', 22 | email: 'paul@email.com', 23 | }, 24 | { 25 | name: 'Joe', 26 | email: 'joe@email.com', 27 | }, 28 | ], 29 | }, 30 | }, 31 | second: { 32 | name: 'better name', 33 | url: 'http://www.photo-libre.fr/paysage/2.jpg', 34 | }, 35 | }, 36 | published_at: new Date('2012-08-06'), 37 | tags: [1, 3], 38 | category: 'tech', 39 | subcategory: 'computers', 40 | backlinks: [ 41 | { 42 | date: '2012-08-09T00:00:00.000Z', 43 | url: 'http://example.com/bar/baz.html', 44 | }, 45 | ], 46 | notifications: [12, 31, 42], 47 | }, 48 | { 49 | id: 2, 50 | title: 'Sint dignissimos in architecto aut', 51 | teaser: 52 | 'Quam earum itaque corrupti labore quas nihil sed. Dolores sunt culpa voluptates exercitationem eveniet totam rerum. Molestias perspiciatis rem numquam accusamus.', 53 | body: 54 | '

Aliquam magni tempora quas enim. Perspiciatis libero corporis sunt eum nam. Molestias est sunt molestiae natus.

Blanditiis dignissimos autem culpa itaque. Explicabo perferendis ullam officia ut quia nemo. Eaque perspiciatis perspiciatis est hic non ullam et. Expedita exercitationem enim sit ut dolore.

Sed in sunt officia blanditiis ipsam maiores perspiciatis amet

Vero fugiat facere officiis aut quis rerum velit. Autem eius sint ullam. Nemo sunt molestiae nulla accusantium est voluptatem voluptas sed. In blanditiis neque libero voluptatem praesentium occaecati nulla libero. Perspiciatis eos voluptatem facere voluptatibus. Explicabo quo eveniet nihil culpa. Qui eos officia consequuntur sed esse praesentium dolorum. Eius perferendis qui quia autem nostrum sed. Illum in ex excepturi voluptas. Qui veniam sit alias delectus nihil. Impedit est ut alias illum repellendus qui.

Veniam est aperiam quisquam soluta. Magni blanditiis praesentium sed similique velit ipsam consequatur. Porro omnis magni sunt incidunt aspernatur ut.

', 55 | views: 563, 56 | average_note: 3.48121, 57 | commentable: true, 58 | published_at: new Date('2012-08-08'), 59 | tags: [3, 5], 60 | category: 'lifestyle', 61 | backlinks: [], 62 | notifications: [], 63 | }, 64 | { 65 | id: 3, 66 | title: 'Perspiciatis adipisci vero qui ipsam iure porro', 67 | teaser: 68 | 'Ut ad consequatur esse illum. Ex dolore porro et ut sit. Commodi qui sed et voluptatibus laudantium.', 69 | body: 70 | '

Voluptatibus fugit sit praesentium voluptas vero vel. Reprehenderit quam cupiditate deleniti ipsum nisi qui. Molestiae modi sequi vel quibusdam est aliquid doloribus. Necessitatibus et excepturi alias necessitatibus magnam ea.

Dolor illum dolores qui et pariatur inventore incidunt molestias. Exercitationem ipsum voluptatibus voluptatum velit sint vel qui. Odit mollitia minus vitae impedit voluptatem. Voluptas ullam temporibus inventore fugiat pariatur odit molestias.

Atque est qui alias eum. Quibusdam rem ut dolores voluptate totam. Sit cumque perferendis sed a iusto laudantium quae et. Voluptatibus vitae natus quia laboriosam et deserunt. Doloribus fuga aut quo tempora animi eaque consequatur laboriosam.

', 71 | views: 467, 72 | commentable: true, 73 | published_at: new Date('2012-08-08'), 74 | tags: [1, 2], 75 | category: 'tech', 76 | backlinks: [ 77 | { 78 | date: '2012-08-10T00:00:00.000Z', 79 | url: 'http://example.com/foo/bar.html', 80 | }, 81 | { 82 | date: '2012-08-14T00:00:00.000Z', 83 | url: 'https://blog.johndoe.com/2012/08/12/foobar.html', 84 | }, 85 | { 86 | date: '2012-08-22T00:00:00.000Z', 87 | url: 'https://foo.bar.com/lorem/ipsum', 88 | }, 89 | { 90 | date: '2012-08-29T00:00:00.000Z', 91 | url: 'http://dicta.es/nam_doloremque', 92 | }, 93 | ], 94 | notifications: [12, 31, 42], 95 | }, 96 | { 97 | id: 4, 98 | title: 'Maiores et itaque aut perspiciatis', 99 | teaser: 100 | 'Et quo voluptas odit veniam omnis dolores. Odit commodi consequuntur necessitatibus dolorem officia. Reiciendis quas exercitationem libero sed. Itaque non facilis sit tempore aut doloribus.', 101 | body: 102 | '

Sunt sunt aut est et consequatur ea dolores. Voluptatem rerum cupiditate dolore. Voluptas sit sapiente corrupti error ducimus. Qui enim aut possimus qui. Impedit voluptatem sed inventore iusto et ut et. Maxime sunt qui adipisci expedita quisquam. Velit ea ut in blanditiis eos doloribus.

Qui optio ad magnam eius. Est id velit ratione eum corrupti non vitae. Quam consequatur animi sed corrupti quae sed deserunt. Accusamus eius eos recusandae eum quia id.

Voluptas omnis omnis culpa est vel eum. Ut in tempore harum voluptates odit delectus sit et. Consequuntur quod nihil veniam natus placeat provident. Totam ut fuga vitae in. Possimus cumque quae voluptatem asperiores vitae officiis dolores. Qui autem eos dolores eius. Iure ut delectus quis voluptatem. Velit at incidunt minus laboriosam culpa. Pariatur ipsa ut enim dolor. Sed magni sunt molestiae voluptas ut illum. Sit consequuntur laborum aliquid delectus in. Consectetur dicta asperiores itaque aut mollitia. Minus praesentium officiis voluptas a officiis ad beatae.

', 103 | views: 685, 104 | average_note: 1.2319, 105 | commentable: false, 106 | published_at: new Date('2012-08-12'), 107 | tags: [], 108 | category: 'lifestyle', 109 | notifications: [12, 31, 42], 110 | }, 111 | { 112 | id: 5, 113 | title: 'Sed quo et et fugiat modi', 114 | teaser: 115 | 'Consequuntur id aut soluta aspernatur sit. Aut doloremque recusandae sit saepe ut quas earum. Quae pariatur iure et ducimus non. Cupiditate dolorem itaque in sit.', 116 | body: 117 | '

Aut molestiae quae explicabo voluptas. Assumenda ea ipsam quia. Rerum rerum magnam sunt doloremque dolorem nulla. Eveniet ut aliquam est dignissimos nisi molestias dicta. Dolorum et id esse illum. Ea omnis nesciunt tempore et aut. Ut ullam totam doloribus recusandae est natus voluptatum officiis. Ea quam eos velit ipsam non accusamus praesentium.

Animi et minima alias sint. Reiciendis qui ipsam autem fugit consequuntur veniam. Vel cupiditate voluptas enim dolore cum ad. Ut iusto eius et.

Quis praesentium aut aut aut voluptas et. Quam laudantium at laudantium amet. Earum quidem eos earum quaerat nihil libero quia sed.

Autem voluptatem nostrum ullam numquam quis. Et aut unde nesciunt officiis nam eos ut distinctio. Animi est explicabo voluptas officia quos necessitatibus. Omnis debitis unde et qui rerum. Nisi repudiandae autem mollitia dolorum veritatis aut. Rem temporibus labore repellendus enim consequuntur dicta autem. Illum illo inventore possimus officiis quidem.

Ullam accusantium eaque perspiciatis. Quidem dolor minus aut quidem. Praesentium earum beatae eos eligendi nostrum. Dolor nam quo aut.

Accusamus aut tempora omnis magni sit quos eos aut. Vitae ut inventore facere neque rerum. Qui esse rem cupiditate sit.

Est minus odio sint reprehenderit. Consectetur dolores eligendi et quaerat sint vel magni. Voluptatum hic cum placeat ad ea reiciendis laborum et. Eos ab id suscipit.

', 118 | views: 559, 119 | average_note: 3, 120 | commentable: true, 121 | published_at: new Date('2012-08-05'), 122 | category: 'tech', 123 | notifications: [12, 31, 42], 124 | }, 125 | { 126 | id: 6, 127 | title: 'Minima ea vero omnis odit officiis aut', 128 | teaser: 129 | 'Omnis rerum voluptatem illum. Amet totam minus id qui aspernatur. Adipisci commodi velit sapiente architecto et molestias. Maiores doloribus quis occaecati quidem laborum. Quae quia quaerat est itaque. Vero assumenda quia tempora libero dicta quis asperiores magnam. Necessitatibus accusantium saepe commodi ut.', 130 | body: 131 | '

Sit autem rerum inventore repellendus. Enim placeat est ea dolor voluptas nisi alias. Repellat quam laboriosam repudiandae illum similique omnis non exercitationem. Modi mollitia omnis sed vel et expedita fugiat. Esse laboriosam doloribus deleniti atque quidem praesentium aliquid. Error animi ab excepturi quia. Et voluptates voluptatem et est quibusdam aspernatur. Fugiat consequatur veritatis commodi enim quaerat sint. Quis quae fuga exercitationem dolorem enim laborum numquam. Iste necessitatibus repellat in ea nihil et rem. Corporis dolores sed vitae consectetur dolores qui dicta. Laudantium et suscipit odit quidem qui. Provident libero eveniet distinctio debitis odio cum id dolorum. Consequuntur laboriosam qui ut magni sit dicta. Distinctio fugit voluptatibus voluptatem suscipit incidunt ut cupiditate. Magni harum in aut alias veniam. Eos aut impedit ut et. Iure aliquid adipisci aliquam et ab et qui. Itaque quod consequuntur dolore asperiores architecto neque. Exercitationem eum voluptas ut quis hic quo. Omnis quas porro laudantium. Qui magnam et totam quibusdam in quo. Impedit laboriosam eum sint soluta facere ut voluptatem.

', 132 | views: 208, 133 | average_note: 3.1214, 134 | published_at: new Date('2012-09-05'), 135 | tags: [1, 4], 136 | category: 'tech', 137 | notifications: [42], 138 | }, 139 | { 140 | id: 7, 141 | title: 'Illum veritatis corrupti exercitationem sed velit', 142 | teaser: 143 | 'Omnis hic quo aperiam fugiat iure amet est. Molestias ratione aut et dolor earum magnam placeat. Ad a quam ea amet hic omnis rerum.', 144 | body: 145 | '

Omnis sunt maxime qui consequatur perspiciatis et dolor. Assumenda numquam sit rerum aut dolores. Repudiandae rerum et quisquam. Perferendis cupiditate sequi non similique eum accusamus voluptas.

Officiis in voluptatum culpa ut eaque laborum. Sit quos velit sed ad voluptates. Alias aut quo accusantium aut cumque perferendis. Numquam rerum vel et est delectus. Mollitia dolores voluptatum accusantium id rem. Autem dolorem similique earum. Deleniti qui iusto et vero. Enim quaerat ipsum omnis magni. Autem magnam vero nulla impedit distinctio. Sequi laudantium ut animi enim recusandae et voluptatum. Dicta architecto nostrum voluptas consequuntur ea. Porro odio illo praesentium qui. Quia sit sed labore porro. Minima odit nemo sint praesentium. Ea sapiente quis aut. Qui cumque aut repudiandae in. Ipsam mollitia ab vitae iusto maxime. Eaque qui impedit et ea dolor aut. Tenetur ut nihil sed. Eum doloremque harum ipsam vel eos ut enim.

', 146 | views: 133, 147 | average_note: null, 148 | commentable: true, 149 | published_at: new Date('2012-09-29'), 150 | tags: [3, 4], 151 | category: 'tech', 152 | notifications: [12, 31], 153 | }, 154 | { 155 | id: 8, 156 | title: 'Culpa possimus quibusdam nostrum enim tempore rerum odit excepturi', 157 | teaser: 158 | 'Qui quos exercitationem itaque quia. Repellat libero ut recusandae quidem repudiandae ipsam laudantium. Eveniet quos et quo omnis aut commodi incidunt.', 159 | body: 160 | '

Laudantium voluptatem non facere officiis qui natus natus. Ex perspiciatis quia dolor earum. In rerum deleniti voluptas quo quia adipisci voluptatibus.

Mollitia eos quaerat ad. Et non aliquam velit. Doloremque repudiandae earum suscipit deleniti.

Debitis voluptatem possimus saepe. Rerum nam est neque voluptate quae ratione et quaerat. Fugiat et ullam adipisci numquam. Atque qui cum quae quod qui reprehenderit. Veritatis odio eligendi est odit minima ut dolores. Blanditiis aut rem aliquam nulla esse odit. Quibusdam quam natus eos tenetur nemo eligendi velit nam. Consequatur libero eius quia impedit neque fuga. Accusantium sunt accusantium eaque illum dicta. Expedita explicabo quia soluta.

Dolores aperiam rem velit id provident quo ea. Modi illum voluptate corrupti recusandae optio. Voluptatem architecto numquam reiciendis quo nostrum suscipit. Dolore repellat deleniti nihil omnis illum explicabo nihil. Alias maxime hic minus voluptas odio id dolorum. Neque perferendis repellendus autem consequatur consequatur doloribus. Sit aspernatur nisi aliquam rem voluptas occaecati.

In eveniet nostrum culpa totam officia doloremque. Fugiat maxime magni aut magnam praesentium vel facere. Tempora soluta possimus omnis modi et qui minus. Consequatur et suscipit autem quia nulla.

Qui eum aliquid inventore at. Qui provident perspiciatis sed eum eos sunt eveniet autem. Ducimus velit tenetur sed. Quas laboriosam dicta ipsa id fugiat. Hic nihil laboriosam atque natus. Quam natus esse est error molestiae nulla. Odit ut dolorem laborum quidem quis alias. Labore sint porro et reprehenderit ut dolorem vel dolorum. Dolores suscipit ut dolores possimus id dicta cupiditate. Est cum dolorum dolores ducimus quia reprehenderit. Iste suscipit molestias voluptatem molestiae. Nostrum modi dicta qui deleniti. Reprehenderit voluptatem soluta non in labore. Voluptatem ut illo illo harum voluptas cumque. Tempora illo distinctio qui aut.

Eaque voluptatem eos omnis qui dolor non possimus. Distinctio ratione facere doloremque rerum qui voluptas et. Cum incidunt numquam molestias et labore odio sunt aut. Aut pariatur dignissimos est atque.

', 161 | views: 557, 162 | average_note: null, 163 | commentable: false, 164 | published_at: new Date('2012-10-02'), 165 | tags: [5, 1], 166 | category: 'lifestyle', 167 | notifications: [12, 31, 42], 168 | }, 169 | { 170 | id: 9, 171 | title: 'A voluptas eius eveniet ut commodi dolor', 172 | teaser: 173 | 'Sed necessitatibus nesciunt nesciunt aut non sunt. Quam ut in a sed ducimus eos qui sint. Commodi illo necessitatibus sint explicabo maiores. Maxime voluptates sit distinctio quo excepturi. Qui aliquid debitis repellendus distinctio et aut. Ex debitis et quasi id.', 174 | body: 175 | '

Consequatur temporibus explicabo vel laudantium totam. Voluptates nihil numquam accusamus ut unde quo. Molestiae dolores quas sit aliquam. Sit et fuga necessitatibus natus fugit voluptas et. Esse vitae sed sit eius.

Accusantium aliquam accusamus illo eum. Excepturi molestiae et earum qui. Iste dolor eligendi est vero iure eos nesciunt. Qui aspernatur repellendus id rerum consequatur ut. Quis ab quos fugit dicta aut voluptas. Rerum aut esse dolor. Illo iste ullam possimus nam nam assumenda molestiae est.

In porro nesciunt cumque in sint vel architecto. Aliquam et in numquam quae explicabo. Deserunt suscipit sunt excepturi optio molestiae. Facilis saepe eaque commodi provident ad voluptates eligendi.

Magnam et neque ad sed qui laborum et. Aut dolorem maxime harum. Molestias aut facere vitae voluptatem.

Excepturi odit doloremque eos quisquam sunt. Veniam repudiandae nisi dolorum nam quos. Qui voluptatem enim enim. Dolorum eveniet eaque expedita est tempore. Expedita amet blanditiis esse qui. Nam dolor odio nihil nobis quas quia exercitationem. Iusto ut ut reiciendis sint laudantium et distinctio. Vitae architecto accusamus quos dolores laudantium doloribus alias. Est est esse autem repellat. Assumenda officia aperiam sequi facere distinctio ut. Magnam qui assumenda eligendi sint. Architecto autem harum qui ea quos ut nesciunt et. Optio quidem sit ex quos provident. Et dolor dicta et laudantium. Incidunt id quo enim atque molestiae quam repudiandae omnis. Sed nam voluptatem dolores natus quisquam. Sit nostrum voluptate sed asperiores. Saepe eaque et illum aperiam. Maxime tenetur sunt reiciendis.

Ducimus quia dolorem voluptas ea. Fuga eum architecto eius cum est quibusdam eligendi est. In ut aperiam ea ut.

', 176 | views: 143, 177 | average_note: 3.1214, 178 | commentable: true, 179 | published_at: new Date('2012-10-16'), 180 | tags: [], 181 | category: 'tech', 182 | notifications: [12, 31, 42], 183 | }, 184 | { 185 | id: 10, 186 | title: 'Totam vel quasi a odio et nihil', 187 | teaser: 188 | 'Excepturi veritatis velit rerum nemo voluptatem illum tempora eos. Et impedit sed qui et iusto. A alias asperiores quia quo.', 189 | body: 190 | '

Voluptas iure consequatur repudiandae quibusdam iure. Quibusdam consequatur sit cupiditate aut eum iure. Provident ut aut est itaque ut eligendi sunt.

Odio ipsa dolore rem occaecati voluptatum neque. Quia est minima totam est dicta aliquid sed. Doloribus ea eligendi qui odit. Consectetur aut illum aspernatur exercitationem ut. Distinctio sapiente doloribus beatae natus mollitia. Nostrum cum magni autem expedita natus est nulla totam.

Et possimus quia aliquam est molestiae eum. Dicta nostrum ea rerum omnis. Ut hic amet sequi commodi voluptatem ut. Nulla magni totam placeat asperiores error.

', 191 | views: 721, 192 | average_note: 4.121, 193 | commentable: true, 194 | published_at: new Date('2012-10-19'), 195 | tags: [1, 4], 196 | category: 'lifestyle', 197 | notifications: [12, 31, 42], 198 | }, 199 | { 200 | id: 11, 201 | title: 'Omnis voluptate enim similique est possimus', 202 | teaser: 203 | 'Velit eos vero reprehenderit ut assumenda saepe qui. Quasi aut laboriosam quas voluptate voluptatem. Et eos officia repudiandae quaerat. Mollitia libero numquam laborum eos.', 204 | body: 205 | '

Ut qui a quis culpa impedit. Harum quae sunt aspernatur dolorem minima et dolorum. Consequatur sunt eveniet sit perspiciatis fuga praesentium. Quam voluptatem a ullam accusantium debitis eum consectetur.

Voluptas rem impedit omnis maiores saepe. Eum consequatur ut et consequatur repellat. Quos dolorem dolorum nihil dolor sit optio velit. Quasi quaerat enim omnis ipsum.

Officia asperiores ut doloribus. Architecto iste quia illo non. Deleniti enim odio aut amet eveniet. Modi sint aut excepturi quisquam error sed officia. Nostrum enim repellendus inventore minus. Itaque vitae ipsam quasi. Qui provident vero ab facere. Sit enim provident doloremque minus quam. Voluptatem expedita est maiores nihil est voluptatem error. Asperiores ut a est ducimus hic optio. Natus omnis ullam consectetur ducimus nisi sint ducimus odit. Soluta cupiditate ipsam magnam.

Illum magni aut autem in sed iure. Ea explicabo ducimus officia corrupti ipsam minima minima. Nihil ab similique modi sunt unde nisi. Iusto quis iste ut aut earum magni. Nisi nisi minima sapiente quos aut libero maxime. Ut consequuntur sit vel odio suscipit fugiat tempore et. Et eveniet aut voluptatibus aliquid accusantium quis qui et. Veniam rem ut et. Vel officiis et voluptatum eaque ipsum sit. Sed iste rem ipsam dolor maiores. Et animi aspernatur aut error. Quisquam veritatis voluptatem magnam id. Blanditiis dolorem quo et voluptatum.

', 206 | views: 294, 207 | average_note: 3.12942, 208 | commentable: true, 209 | published_at: new Date('2012-10-22'), 210 | tags: [4, 3], 211 | category: 'tech', 212 | subcategory: 'computers', 213 | pictures: null, 214 | backlinks: [ 215 | { 216 | date: '2012-10-29T00:00:00.000Z', 217 | url: 'http://dicta.es/similique_pariatur', 218 | }, 219 | ], 220 | notifications: [12, 31, 42], 221 | }, 222 | { 223 | id: 12, 224 | title: 'Qui tempore rerum et voluptates', 225 | teaser: 226 | 'Occaecati rem perferendis dolor aut numquam cupiditate. At tenetur dolores pariatur et libero asperiores porro voluptas. Officiis corporis sed eos repellendus perferendis distinctio hic consequatur.', 227 | body: 228 | '

Praesentium corrupti minus molestias eveniet mollitia. Sit dolores est tenetur eos veritatis. Vero aut molestias provident ducimus odit optio.

Minima amet accusantium dolores et. Iste eos necessitatibus iure provident rerum repellendus reiciendis eos. Voluptate dolorem dolore aliquid sed maiores.

Ut quia excepturi quidem quidem. Cupiditate qui est rerum praesentium consequatur ad. Minima rem et est. Ut odio nostrum fugit laborum. Quis vitae occaecati tenetur earum non architecto.

Minima est nobis accusamus sunt explicabo fuga. Ut ut ut officia labore ratione animi saepe et.

Accusamus quae ex rerum est eos nesciunt et. Nemo nam consequatur earum necessitatibus et. Eum corporis corporis quia at nihil consectetur accusamus. Ea eveniet et culpa maxime.

Et et quisquam odio sapiente. Voluptas ducimus beatae ratione et soluta esse ut animi. Ipsa architecto veritatis cumque in.

Voluptatem dolore sint aliquam excepturi. Pariatur quisquam a eum. Aut et sit quis et dolorem omnis. Molestias id cupiditate error ab.

Odio ut deleniti incidunt vel dolores eligendi. Nemo aut commodi accusamus alias reprehenderit dolorum eaque. Iure fugit quis occaecati aspernatur tempora iste.

Omnis repellat et sequi numquam accusantium doloribus eum totam. Ab assumenda facere qui voluptate. Temporibus non ipsa officia. Corrupti omnis ut dolores velit aliquam ut omnis consequuntur.

', 229 | views: 719, 230 | average_note: 2, 231 | commentable: true, 232 | published_at: new Date('2012-11-07'), 233 | tags: [], 234 | category: 'lifestyle', 235 | subcategory: 'fitness', 236 | pictures: { first: {}, second: {} }, 237 | backlinks: [ 238 | { 239 | date: '2012-08-07T00:00:00.000Z', 240 | url: 'http://example.com/foo/bar.html', 241 | }, 242 | { 243 | date: '2012-08-12T00:00:00.000Z', 244 | url: 'https://blog.johndoe.com/2012/08/12/foobar.html', 245 | }, 246 | ], 247 | notifications: [12, 31, 42], 248 | }, 249 | { 250 | id: 13, 251 | title: 'Fusce massa lorem, pulvinar a posuere ut, accumsan ac nisi', 252 | teaser: 253 | 'Quam earum itaque corrupti labore quas nihil sed. Dolores sunt culpa voluptates exercitationem eveniet totam rerum. Molestias perspiciatis rem numquam accusamus.', 254 | body: 255 | '

Curabitur eu odio ullamcorper, pretium sem at, blandit libero. Nulla sodales facilisis libero, eu gravida tellus ultrices nec. In ut gravida mi. Vivamus finibus tortor tempus egestas lacinia. Cras eu arcu nisl. Donec pretium dolor ipsum, eget feugiat urna iaculis ut.

Nullam lacinia accumsan diam, ac faucibus velit maximus ac. Donec eros ligula, ullamcorper sit amet varius eget, molestie nec sapien. Donec ac est non tellus convallis condimentum. Aliquam non vehicula mauris, ac rhoncus mi. Integer consequat ipsum a posuere ornare. Quisque mollis finibus libero scelerisque dapibus.

', 256 | views: 222, 257 | average_note: 4, 258 | commentable: true, 259 | published_at: new Date('2012-12-01'), 260 | tags: [3, 5], 261 | category: 'lifestyle', 262 | backlinks: [], 263 | notifications: [], 264 | }, 265 | ]; 266 | 267 | export default { 268 | posts: postData, 269 | posts_2: postData, 270 | tags: [ 271 | { 272 | id: 1, 273 | name: 'Sport', 274 | published: 1, 275 | }, 276 | { 277 | id: 2, 278 | name: 'Technology', 279 | published: false, 280 | }, 281 | { 282 | id: 3, 283 | name: 'Code', 284 | published: true, 285 | }, 286 | { 287 | id: 4, 288 | name: 'Photo', 289 | published: false, 290 | }, 291 | { 292 | id: 5, 293 | name: 'Music', 294 | published: 1, 295 | }, 296 | ], 297 | users: [ 298 | { 299 | id: 1, 300 | name: 'Logan Schowalter', 301 | role: 'admin', 302 | }, 303 | { 304 | id: 2, 305 | name: 'Breanna Gibson', 306 | role: 'user', 307 | }, 308 | { 309 | id: 3, 310 | name: 'Annamarie Mayer', 311 | role: 'user', 312 | }, 313 | ], 314 | }; 315 | -------------------------------------------------------------------------------- /demo/src/dataProvider.js: -------------------------------------------------------------------------------- 1 | import jsonRestProvider from 'ra-data-fakerest'; 2 | 3 | import data from './data'; 4 | import addUploadFeature from './addUploadFeature'; 5 | 6 | const dataProvider = jsonRestProvider(data, true); 7 | const uploadCapableDataProvider = addUploadFeature(dataProvider); 8 | const sometimesFailsDataProvider = (type, resource, params) => 9 | new Promise((resolve, reject) => { 10 | // add rejection by type or resource here for tests, e.g. 11 | // if (type === 'DELETE' && resource === 'posts') { 12 | // return reject('deletion error'); 13 | // } 14 | return resolve(uploadCapableDataProvider(type, resource, params)); 15 | }); 16 | const delayedDataProvider = (type, resource, params) => 17 | new Promise(resolve => 18 | setTimeout(() => resolve(sometimesFailsDataProvider(type, resource, params)), 1000), 19 | ); 20 | 21 | export default delayedDataProvider; 22 | -------------------------------------------------------------------------------- /demo/src/i18n/en.js: -------------------------------------------------------------------------------- 1 | import englishMessages from 'ra-language-english'; 2 | 3 | export const messages = { 4 | simple: { 5 | action: { 6 | close: 'Close', 7 | resetViews: 'Reset views', 8 | }, 9 | 'create-post': 'New post', 10 | }, 11 | ...englishMessages, 12 | resources: { 13 | posts: { 14 | name: 'Post |||| Posts', 15 | fields: { 16 | average_note: 'Average note', 17 | body: 'Body', 18 | comments: 'Comments', 19 | commentable: 'Commentable', 20 | commentable_short: 'Com.', 21 | created_at: 'Created at', 22 | notifications: 'Notifications recipients', 23 | nb_view: 'Nb views', 24 | password: 'Password (if protected post)', 25 | pictures: 'Related Pictures', 26 | published_at: 'Published at', 27 | teaser: 'Teaser', 28 | tags: 'Tags', 29 | title: 'Title', 30 | views: 'Views', 31 | }, 32 | }, 33 | comments: { 34 | name: 'Comment |||| Comments', 35 | fields: { 36 | body: 'Body', 37 | created_at: 'Created at', 38 | post_id: 'Posts', 39 | author: { 40 | name: 'Author', 41 | }, 42 | }, 43 | }, 44 | users: { 45 | name: 'User |||| Users', 46 | fields: { 47 | name: 'Name', 48 | role: 'Role', 49 | }, 50 | }, 51 | }, 52 | post: { 53 | list: { 54 | search: 'Search', 55 | }, 56 | form: { 57 | summary: 'Summary', 58 | body: 'Body', 59 | miscellaneous: 'Miscellaneous', 60 | comments: 'Comments', 61 | }, 62 | edit: { 63 | title: 'Post "%{title}"', 64 | }, 65 | action: { 66 | save_and_add: 'Save and Add', 67 | save_and_show: 'Save and Show', 68 | }, 69 | }, 70 | comment: { 71 | list: { 72 | about: 'About', 73 | }, 74 | }, 75 | user: { 76 | list: { 77 | search: 'Search', 78 | }, 79 | form: { 80 | summary: 'Summary', 81 | security: 'Security', 82 | }, 83 | edit: { 84 | title: 'User "%{title}"', 85 | }, 86 | action: { 87 | save_and_add: 'Save and Add', 88 | save_and_show: 'Save and Show', 89 | }, 90 | }, 91 | }; 92 | 93 | export default messages; 94 | -------------------------------------------------------------------------------- /demo/src/i18n/fr.js: -------------------------------------------------------------------------------- 1 | import frenchMessages from 'ra-language-french'; 2 | 3 | export default { 4 | simple: { 5 | action: { 6 | close: 'Fermer', 7 | resetViews: 'Réinitialiser des vues', 8 | }, 9 | 'create-post': 'Nouveau post', 10 | }, 11 | ...frenchMessages, 12 | resources: { 13 | posts: { 14 | name: 'Article |||| Articles', 15 | fields: { 16 | average_note: 'Note moyenne', 17 | body: 'Contenu', 18 | comments: 'Commentaires', 19 | commentable: 'Commentable', 20 | created_at: 'Créé le', 21 | notifications: 'Destinataires de notifications', 22 | nb_view: 'Nb de vues', 23 | password: 'Mot de passe (si protégé)', 24 | pictures: 'Photos associées', 25 | published_at: 'Publié le', 26 | teaser: 'Description', 27 | tags: 'Catégories', 28 | title: 'Titre', 29 | views: 'Vues', 30 | }, 31 | }, 32 | comments: { 33 | name: 'Commentaire |||| Commentaires', 34 | fields: { 35 | body: 'Contenu', 36 | created_at: 'Créé le', 37 | post_id: 'Article', 38 | author: { 39 | name: 'Auteur', 40 | }, 41 | }, 42 | }, 43 | users: { 44 | name: 'User |||| Users', 45 | fields: { 46 | name: 'Name', 47 | role: 'Role', 48 | }, 49 | }, 50 | }, 51 | post: { 52 | list: { 53 | search: 'Recherche', 54 | }, 55 | form: { 56 | summary: 'Résumé', 57 | body: 'Contenu', 58 | miscellaneous: 'Extra', 59 | comments: 'Commentaires', 60 | }, 61 | edit: { 62 | title: 'Article "%{title}"', 63 | }, 64 | }, 65 | comment: { 66 | list: { 67 | about: 'Au sujet de', 68 | }, 69 | }, 70 | user: { 71 | list: { 72 | search: 'Recherche', 73 | }, 74 | form: { 75 | summary: 'Résumé', 76 | security: 'Sécurité', 77 | }, 78 | edit: { 79 | title: 'Utilisateur "%{title}"', 80 | }, 81 | }, 82 | }; 83 | -------------------------------------------------------------------------------- /demo/src/i18n/index.js: -------------------------------------------------------------------------------- 1 | import enMessages from './en'; 2 | import frMessages from './fr'; 3 | 4 | export const en = enMessages; 5 | export const fr = frMessages; 6 | -------------------------------------------------------------------------------- /demo/src/i18nProvider.js: -------------------------------------------------------------------------------- 1 | import englishMessages from './i18n/en'; 2 | 3 | const messages = { 4 | fr: () => import('./i18n/fr.js').then(messages => messages.default), 5 | }; 6 | 7 | export default locale => { 8 | if (locale === 'fr') { 9 | return messages[locale](); 10 | } 11 | 12 | // Always fallback on english 13 | return englishMessages; 14 | }; 15 | -------------------------------------------------------------------------------- /demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React Admin 6 | 11 | 12 | 13 | 14 | 15 |
16 |
17 | 18 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /demo/src/index.js: -------------------------------------------------------------------------------- 1 | /* eslint react/jsx-key: off */ 2 | import 'babel-polyfill'; 3 | import React from 'react'; 4 | import { Admin, Resource } from 'react-admin'; // eslint-disable-line import/no-unresolved 5 | import { render } from 'react-dom'; 6 | import dataProvider from './dataProvider'; 7 | import i18nProvider from './i18nProvider'; 8 | import posts from './posts'; 9 | 10 | render( 11 | 17 | 18 | 19 | 20 | , 21 | document.getElementById('root'), 22 | ); 23 | -------------------------------------------------------------------------------- /demo/src/posts/PostCreate.js: -------------------------------------------------------------------------------- 1 | import RichTextInput from 'ra-input-rich-text'; 2 | import React from 'react'; 3 | import { 4 | BooleanInput, 5 | Create, 6 | DateInput, 7 | FormDataConsumer, 8 | LongTextInput, 9 | NumberInput, 10 | SaveButton, 11 | SimpleForm, 12 | TextInput, 13 | Toolbar, 14 | } from 'react-admin'; // eslint-disable-line import/no-unresolved 15 | 16 | const PostCreateToolbar = props => ( 17 | 18 | 19 | 25 | 26 | ); 27 | 28 | const getDefaultDate = () => new Date(); 29 | 30 | const PostCreate = props => ( 31 | 32 | } 34 | defaultValue={{ average_note: 0 }} 35 | validate={values => { 36 | const errors = {}; 37 | ['title', 'teaser'].forEach(field => { 38 | if (!values[field]) { 39 | errors[field] = ['Required field']; 40 | } 41 | }); 42 | 43 | if (values.average_note < 0 || values.average_note > 5) { 44 | errors.average_note = ['Should be between 0 and 5']; 45 | } 46 | 47 | return errors; 48 | }} 49 | > 50 | 51 | 52 | 53 | 54 | {({ formData, ...rest }) => 55 | formData.title && 56 | } 57 | 58 | 59 | 60 | 61 | 62 | ); 63 | 64 | export default PostCreate; 65 | -------------------------------------------------------------------------------- /demo/src/posts/PostEdit.js: -------------------------------------------------------------------------------- 1 | import RichTextInput from 'ra-input-rich-text'; 2 | import React from 'react'; 3 | import { 4 | ArrayInput, 5 | BooleanInput, 6 | CheckboxGroupInput, 7 | Datagrid, 8 | DateField, 9 | DateInput, 10 | DisabledInput, 11 | Edit, 12 | EditButton, 13 | FormTab, 14 | ImageField, 15 | ImageInput, 16 | LongTextInput, 17 | NumberInput, 18 | ReferenceArrayInput, 19 | ReferenceManyField, 20 | SelectArrayInput, 21 | SelectInput, 22 | SimpleFormIterator, 23 | TabbedForm, 24 | TextField, 25 | TextInput, 26 | minValue, 27 | number, 28 | required, 29 | } from 'react-admin'; // eslint-disable-line import/no-unresolved 30 | import PostTitle from './PostTitle'; 31 | 32 | const PostEdit = props => ( 33 | } {...props}> 34 | 35 | 36 | 37 | 38 | 39 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | ); 86 | 87 | export default PostEdit; 88 | -------------------------------------------------------------------------------- /demo/src/posts/PostList.js: -------------------------------------------------------------------------------- 1 | import BookIcon from '@material-ui/icons/Book'; 2 | import SearchIcon from '@material-ui/icons/Search'; 3 | import Chip from '@material-ui/core/Chip'; 4 | import InputAdornment from '@material-ui/core/InputAdornment'; 5 | import { withStyles } from '@material-ui/core/styles'; 6 | import React, { Children, cloneElement } from 'react'; 7 | import { 8 | BulkActions, 9 | BulkDeleteAction, 10 | Filter, 11 | List, 12 | Responsive, 13 | SimpleList, 14 | TextField, 15 | TextInput, 16 | translate, 17 | DateField, 18 | BooleanField, 19 | NumberField, 20 | ReferenceArrayField, 21 | SingleFieldList, 22 | ChipField, 23 | EditButton, 24 | ShowButton, 25 | } from 'react-admin'; // eslint-disable-line import/no-unresolved 26 | 27 | import CustomizableDatagrid from 'ra-customizable-datagrid'; 28 | 29 | import ResetViewsAction from './ResetViewsAction'; 30 | export const PostIcon = BookIcon; 31 | 32 | const QuickFilter = translate(({ label, translate }) => ( 33 | 34 | )); 35 | 36 | const PostFilter = props => ( 37 | 38 | 45 | 46 | 47 | ), 48 | }} 49 | /> 50 | 51 | 52 | 53 | ); 54 | 55 | const styles = theme => ({ 56 | title: { 57 | maxWidth: '20em', 58 | overflow: 'hidden', 59 | textOverflow: 'ellipsis', 60 | whiteSpace: 'nowrap', 61 | }, 62 | hiddenOnSmallScreens: { 63 | [theme.breakpoints.down('md')]: { 64 | display: 'none', 65 | }, 66 | }, 67 | publishedAt: { fontStyle: 'italic' }, 68 | }); 69 | 70 | const PostListBulkActions = props => ( 71 | 72 | 73 | 74 | 75 | ); 76 | 77 | const PostListActionToolbar = withStyles({ 78 | toolbar: { 79 | alignItems: 'center', 80 | display: 'flex', 81 | }, 82 | })(({ classes, children, ...props }) => ( 83 |
84 | {Children.map(children, button => cloneElement(button, props))} 85 |
86 | )); 87 | 88 | const PostList = withStyles(styles)(({ classes, ...props }) => ( 89 | } 92 | filters={} 93 | sort={{ field: 'published_at', order: 'DESC' }} 94 | > 95 | record.title} 99 | secondaryText={record => `${record.views} views`} 100 | tertiaryText={record => new Date(record.published_at).toLocaleDateString()} 101 | /> 102 | } 103 | medium={ 104 | 105 | 106 | 107 | 108 | 113 | 114 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | } 131 | /> 132 | 133 | )); 134 | 135 | export default PostList; 136 | -------------------------------------------------------------------------------- /demo/src/posts/PostShow.js: -------------------------------------------------------------------------------- 1 | import { ShowController } from 'ra-core'; 2 | import React from 'react'; 3 | import { 4 | ArrayField, 5 | BooleanField, 6 | ChipField, 7 | Datagrid, 8 | DateField, 9 | EditButton, 10 | Link, 11 | NumberField, 12 | ReferenceArrayField, 13 | ReferenceManyField, 14 | RichTextField, 15 | SelectField, 16 | ShowView, 17 | SingleFieldList, 18 | Tab, 19 | TabbedShowLayout, 20 | TextField, 21 | UrlField, 22 | } from 'react-admin'; // eslint-disable-line import/no-unresolved 23 | import Button from '@material-ui/core/Button'; 24 | import PostTitle from './PostTitle'; 25 | 26 | const CreateRelatedComment = ({ record }) => ( 27 | 36 | ); 37 | 38 | const PostShow = props => ( 39 | } {...props}> 40 | {controllerProps => ( 41 | 42 | 43 | 44 | 45 | 46 | {controllerProps.record && 47 | controllerProps.record.title == 48 | 'Fusce massa lorem, pulvinar a posuere ut, accumsan ac nisi' && ( 49 | 50 | )} 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | )} 95 | 96 | ); 97 | 98 | export default PostShow; 99 | -------------------------------------------------------------------------------- /demo/src/posts/PostTitle.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { translate } from 'react-admin'; 3 | 4 | export default translate(({ record, translate }) => ( 5 | {record ? translate('post.edit.title', { title: record.title }) : ''} 6 | )); 7 | -------------------------------------------------------------------------------- /demo/src/posts/ResetViewsAction.js: -------------------------------------------------------------------------------- 1 | import { Component } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { connect } from 'react-redux'; 4 | import { startUndoable, crudUpdateMany } from 'ra-core'; 5 | 6 | class ResetViewsAction extends Component { 7 | componentDidMount = () => { 8 | const { basePath, startUndoable, resource, selectedIds } = this.props; 9 | startUndoable(crudUpdateMany(resource, selectedIds, { views: 0 }, basePath)); 10 | this.props.onExit(); 11 | }; 12 | 13 | render() { 14 | return null; 15 | } 16 | } 17 | 18 | ResetViewsAction.propTypes = { 19 | basePath: PropTypes.string, 20 | label: PropTypes.string, 21 | onExit: PropTypes.func.isRequired, 22 | resource: PropTypes.string.isRequired, 23 | selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired, 24 | startUndoable: PropTypes.func.isRequired, 25 | }; 26 | 27 | export default connect( 28 | undefined, 29 | { startUndoable }, 30 | )(ResetViewsAction); 31 | -------------------------------------------------------------------------------- /demo/src/posts/index.js: -------------------------------------------------------------------------------- 1 | import BookIcon from '@material-ui/icons/Book'; 2 | import PostCreate from './PostCreate'; 3 | import PostEdit from './PostEdit'; 4 | import PostList from './PostList'; 5 | import PostShow from './PostShow'; 6 | 7 | export default { 8 | list: PostList, 9 | create: PostCreate, 10 | edit: PostEdit, 11 | show: PostShow, 12 | icon: BookIcon, 13 | }; 14 | -------------------------------------------------------------------------------- /demo/src/users/UserCreate.js: -------------------------------------------------------------------------------- 1 | /* eslint react/jsx-key: off */ 2 | import React from 'react'; 3 | import { Create, SaveButton, SimpleForm, TextInput, Toolbar, required } from 'react-admin'; 4 | 5 | const UserCreateToolbar = ({ permissions, ...props }) => ( 6 | 7 | 8 | {permissions === 'admin' && ( 9 | 15 | )} 16 | 17 | ); 18 | 19 | const UserCreate = ({ permissions, ...props }) => ( 20 | 21 | } 23 | defaultValue={{ role: 'user' }} 24 | > 25 | 26 | {permissions === 'admin' && } 27 | 28 | 29 | ); 30 | 31 | export default UserCreate; 32 | -------------------------------------------------------------------------------- /demo/src/users/UserEdit.js: -------------------------------------------------------------------------------- 1 | /* eslint react/jsx-key: off */ 2 | import React from 'react'; 3 | import PropTypes from 'prop-types'; 4 | import { DisabledInput, Edit, FormTab, TabbedForm, TextInput, required } from 'react-admin'; 5 | import UserTitle from './UserTitle'; 6 | 7 | const UserEdit = ({ permissions, ...props }) => ( 8 | } {...props}> 9 | 10 | 11 | {permissions === 'admin' && } 12 | 13 | 14 | {permissions === 'admin' && ( 15 | 16 | 17 | 18 | )} 19 | 20 | 21 | ); 22 | 23 | UserEdit.propTypes = { 24 | id: PropTypes.any.isRequired, 25 | location: PropTypes.object.isRequired, 26 | match: PropTypes.object.isRequired, 27 | permissions: PropTypes.string, 28 | }; 29 | 30 | export default UserEdit; 31 | -------------------------------------------------------------------------------- /demo/src/users/UserList.js: -------------------------------------------------------------------------------- 1 | /* eslint react/jsx-key: off */ 2 | import PeopleIcon from '@material-ui/icons/People'; 3 | import SearchIcon from '@material-ui/icons/Search'; 4 | import InputAdornment from '@material-ui/core/InputAdornment'; 5 | import React from 'react'; 6 | import { 7 | Datagrid, 8 | EditButton, 9 | Filter, 10 | List, 11 | Responsive, 12 | ShowButton, 13 | SimpleList, 14 | TextField, 15 | TextInput, 16 | } from 'react-admin'; 17 | export const UserIcon = PeopleIcon; 18 | 19 | const UserFilter = ({ permissions, ...props }) => ( 20 | 21 | 28 | 29 | 30 | ), 31 | }} 32 | /> 33 | 34 | {permissions === 'admin' ? : null} 35 | 36 | ); 37 | 38 | const UserList = ({ permissions, ...props }) => ( 39 | } 42 | sort={{ field: 'name', order: 'ASC' }} 43 | > 44 | record.name} 48 | secondaryText={record => (permissions === 'admin' ? record.role : null)} 49 | /> 50 | } 51 | medium={ 52 | 53 | 54 | 55 | {permissions === 'admin' && } 56 | 57 | 58 | 59 | } 60 | /> 61 | 62 | ); 63 | 64 | export default UserList; 65 | -------------------------------------------------------------------------------- /demo/src/users/UserShow.js: -------------------------------------------------------------------------------- 1 | /* eslint react/jsx-key: off */ 2 | import React from 'react'; 3 | import PropTypes from 'prop-types'; 4 | import { Show, Tab, TabbedShowLayout, TextField } from 'react-admin'; // eslint-disable-line import/no-unresolved 5 | import UserTitle from './UserTitle'; 6 | 7 | const UserShow = ({ permissions, ...props }) => ( 8 | } {...props}> 9 | 10 | 11 | 12 | 13 | 14 | {permissions === 'admin' && ( 15 | 16 | 17 | 18 | )} 19 | 20 | 21 | ); 22 | 23 | UserShow.propTypes = { 24 | location: PropTypes.object.isRequired, 25 | match: PropTypes.object.isRequired, 26 | permissions: PropTypes.string, 27 | }; 28 | 29 | export default UserShow; 30 | -------------------------------------------------------------------------------- /demo/src/users/UserTitle.js: -------------------------------------------------------------------------------- 1 | /* eslint react/jsx-key: off */ 2 | import React from 'react'; 3 | import { translate } from 'react-admin'; 4 | 5 | const UserTitle = translate(({ record, translate }) => ( 6 | {record ? translate('user.edit.title', { title: record.name }) : ''} 7 | )); 8 | 9 | export default UserTitle; 10 | -------------------------------------------------------------------------------- /demo/src/users/index.js: -------------------------------------------------------------------------------- 1 | import PeopleIcon from '@material-ui/icons/People'; 2 | import UserCreate from './UserCreate'; 3 | import UserEdit from './UserEdit'; 4 | import UserList from './UserList'; 5 | import UserShow from './UserShow'; 6 | 7 | export default { 8 | list: UserList, 9 | create: UserCreate, 10 | edit: UserEdit, 11 | show: UserShow, 12 | icon: PeopleIcon, 13 | }; 14 | -------------------------------------------------------------------------------- /demo/src/validators.js: -------------------------------------------------------------------------------- 1 | import { required as createRequiredValidator, number as createNumberValidator } from 'react-admin'; 2 | 3 | export const required = createRequiredValidator(); 4 | export const number = createNumberValidator(); 5 | -------------------------------------------------------------------------------- /demo/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | const HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); 4 | 5 | module.exports = { 6 | devtool: 'cheap-module-source-map', 7 | module: { 8 | rules: [ 9 | { 10 | test: /\.js$/, 11 | exclude: /node_modules/, 12 | use: { loader: 'babel-loader' }, 13 | }, 14 | { 15 | test: /\.html$/, 16 | exclude: /node_modules/, 17 | use: { loader: 'html-loader' }, 18 | }, 19 | ], 20 | }, 21 | plugins: [ 22 | new HtmlWebpackPlugin({ 23 | template: './src/index.html', 24 | }), 25 | new HardSourceWebpackPlugin(), 26 | ], 27 | resolve: { 28 | alias: { 29 | 'ra-customizable-datagrid': path.join(__dirname, '..', 'src'), 30 | }, 31 | }, 32 | devServer: { 33 | stats: { 34 | children: false, 35 | chunks: false, 36 | modules: false, 37 | }, 38 | }, 39 | }; 40 | -------------------------------------------------------------------------------- /docs/0.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{ 2 | 3 | /***/ "./node_modules/ra-language-french/index.js": 4 | /*!**************************************************!*\ 5 | !*** ./node_modules/ra-language-french/index.js ***! 6 | \**************************************************/ 7 | /*! no static exports found */ 8 | /***/ (function(module, exports) { 9 | 10 | module.exports = { 11 | ra: { 12 | action: { 13 | delete: 'Supprimer', 14 | show: 'Afficher', 15 | list: 'Liste', 16 | save: 'Enregistrer', 17 | create: 'Créer', 18 | edit: 'Éditer', 19 | sort: 'Trier', 20 | cancel: 'Annuler', 21 | undo: 'Annuler', 22 | refresh: 'Actualiser', 23 | add: 'Ajouter', 24 | remove: 'Supprimer', 25 | add_filter: 'Ajouter un filtre', 26 | remove_filter: 'Supprimer ce filtre', 27 | back: 'Retour', 28 | bulk_actions: 29 | '%{smart_count} selectionné |||| %{smart_count} selectionnés', 30 | }, 31 | boolean: { 32 | true: 'Oui', 33 | false: 'Non', 34 | }, 35 | page: { 36 | list: 'Liste des %{name}', 37 | edit: '%{name} #%{id}', 38 | show: '%{name} #%{id}', 39 | create: 'Créer %{name}', 40 | dashboard: 'Tableau de bord', 41 | not_found: 'Page manquante', 42 | loading: 'Chargement', 43 | }, 44 | input: { 45 | file: { 46 | upload_several: 47 | 'Déposez les fichiers à uploader, ou cliquez pour en sélectionner.', 48 | upload_single: 49 | 'Déposez le fichier à uploader, ou cliquez pour le sélectionner.', 50 | }, 51 | image: { 52 | upload_several: 53 | 'Déposez les images à uploader, ou cliquez pour en sélectionner.', 54 | upload_single: 55 | "Déposez l'image à uploader, ou cliquez pour la sélectionner.", 56 | }, 57 | references: { 58 | all_missing: 'Impossible de trouver des données de références.', 59 | many_missing: 60 | 'Au moins une des références associées semble ne plus être disponible.', 61 | single_missing: 62 | 'La référence associée ne semble plus disponible.', 63 | }, 64 | }, 65 | message: { 66 | yes: 'Oui', 67 | no: 'Non', 68 | are_you_sure: 'Êtes-vous sûr ?', 69 | about: 'Au sujet de', 70 | not_found: 71 | "L'URL saisie est incorrecte, ou vous avez suivi un mauvais lien.", 72 | loading: 73 | 'La page est en cours de chargement, merci de bien vouloir patienter.', 74 | invalid_form: "Le formulaire n'est pas valide.", 75 | delete_title: 'Supprimer %{name} #%{id}', 76 | delete_content: 77 | 'Êtes-vous sur(e) de vouloir supprimer cet élément ?', 78 | bulk_delete_title: 79 | 'Supprimer %{name} |||| Supprimer %{smart_count} %{name} éléments', 80 | bulk_delete_content: 81 | 'Êtes-vous sur(e) de vouloir supprimer cet élément ? |||| Êtes-vous sur(e) de vouloir supprimer ces %{smart_count} éléments ?', 82 | }, 83 | navigation: { 84 | no_results: 'Aucun résultat', 85 | page_out_of_boundaries: 'La page %{page} est en dehors des limites', 86 | page_out_from_end: 'Fin de la pagination', 87 | page_out_from_begin: 'La page doit être supérieure à 1', 88 | page_range_info: '%{offsetBegin}-%{offsetEnd} sur %{total}', 89 | next: 'Suivant', 90 | prev: 'Précédent', 91 | }, 92 | auth: { 93 | username: 'Identifiant', 94 | password: 'Mot de passe', 95 | sign_in: 'Connexion', 96 | sign_in_error: "Échec de l'authentification, merci de réessayer", 97 | logout: 'Déconnexion', 98 | }, 99 | notification: { 100 | updated: 101 | 'Élément mis à jour |||| %{smart_count} élements mis à jour', 102 | created: 'Élément créé', 103 | deleted: 'Élément supprimé |||| %{smart_count} élements supprimés', 104 | bad_item: 'Élément inconnu', 105 | item_doesnt_exist: "L'élément n'existe pas", 106 | http_error: 'Erreur de communication avec le serveur', 107 | canceled: 'Action annulée', 108 | }, 109 | validation: { 110 | required: 'Ce champ est requis', 111 | minLength: 'Minimum %{min} caractères', 112 | maxLength: 'Maximum %{max} caractères', 113 | minValue: 'Minimum %{min}', 114 | maxValue: 'Maximum %{max}', 115 | number: 'Doit être un nombre', 116 | email: 'Doit être un email', 117 | }, 118 | }, 119 | }; 120 | 121 | 122 | /***/ }), 123 | 124 | /***/ "./src/i18n/fr.js": 125 | /*!************************!*\ 126 | !*** ./src/i18n/fr.js ***! 127 | \************************/ 128 | /*! no static exports found */ 129 | /***/ (function(module, exports, __webpack_require__) { 130 | 131 | "use strict"; 132 | 133 | 134 | Object.defineProperty(exports, "__esModule", { 135 | value: true 136 | }); 137 | 138 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 139 | 140 | var _raLanguageFrench = __webpack_require__(/*! ra-language-french */ "./node_modules/ra-language-french/index.js"); 141 | 142 | var _raLanguageFrench2 = _interopRequireDefault(_raLanguageFrench); 143 | 144 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 145 | 146 | exports.default = _extends({ 147 | simple: { 148 | action: { 149 | close: 'Fermer', 150 | resetViews: 'Réinitialiser des vues' 151 | }, 152 | 'create-post': 'Nouveau post' 153 | } 154 | }, _raLanguageFrench2.default, { 155 | resources: { 156 | posts: { 157 | name: 'Article |||| Articles', 158 | fields: { 159 | average_note: 'Note moyenne', 160 | body: 'Contenu', 161 | comments: 'Commentaires', 162 | commentable: 'Commentable', 163 | created_at: 'Créé le', 164 | notifications: 'Destinataires de notifications', 165 | nb_view: 'Nb de vues', 166 | password: 'Mot de passe (si protégé)', 167 | pictures: 'Photos associées', 168 | published_at: 'Publié le', 169 | teaser: 'Description', 170 | tags: 'Catégories', 171 | title: 'Titre', 172 | views: 'Vues' 173 | } 174 | }, 175 | comments: { 176 | name: 'Commentaire |||| Commentaires', 177 | fields: { 178 | body: 'Contenu', 179 | created_at: 'Créé le', 180 | post_id: 'Article', 181 | author: { 182 | name: 'Auteur' 183 | } 184 | } 185 | }, 186 | users: { 187 | name: 'User |||| Users', 188 | fields: { 189 | name: 'Name', 190 | role: 'Role' 191 | } 192 | } 193 | }, 194 | post: { 195 | list: { 196 | search: 'Recherche' 197 | }, 198 | form: { 199 | summary: 'Résumé', 200 | body: 'Contenu', 201 | miscellaneous: 'Extra', 202 | comments: 'Commentaires' 203 | }, 204 | edit: { 205 | title: 'Article "%{title}"' 206 | } 207 | }, 208 | comment: { 209 | list: { 210 | about: 'Au sujet de' 211 | } 212 | }, 213 | user: { 214 | list: { 215 | search: 'Recherche' 216 | }, 217 | form: { 218 | summary: 'Résumé', 219 | security: 'Sécurité' 220 | }, 221 | edit: { 222 | title: 'Utilisateur "%{title}"' 223 | } 224 | } 225 | }); 226 | 227 | /***/ }) 228 | 229 | }]); 230 | //# sourceMappingURL=0.js.map -------------------------------------------------------------------------------- /docs/0.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"0.js","sources":["webpack:///./node_modules/ra-language-french/index.js","webpack:///src/i18n/fr.js"],"sourcesContent":["module.exports = {\n ra: {\n action: {\n delete: 'Supprimer',\n show: 'Afficher',\n list: 'Liste',\n save: 'Enregistrer',\n create: 'Créer',\n edit: 'Éditer',\n sort: 'Trier',\n cancel: 'Annuler',\n undo: 'Annuler',\n refresh: 'Actualiser',\n add: 'Ajouter',\n remove: 'Supprimer',\n add_filter: 'Ajouter un filtre',\n remove_filter: 'Supprimer ce filtre',\n back: 'Retour',\n bulk_actions:\n '%{smart_count} selectionné |||| %{smart_count} selectionnés',\n },\n boolean: {\n true: 'Oui',\n false: 'Non',\n },\n page: {\n list: 'Liste des %{name}',\n edit: '%{name} #%{id}',\n show: '%{name} #%{id}',\n create: 'Créer %{name}',\n dashboard: 'Tableau de bord',\n not_found: 'Page manquante',\n loading: 'Chargement',\n },\n input: {\n file: {\n upload_several:\n 'Déposez les fichiers à uploader, ou cliquez pour en sélectionner.',\n upload_single:\n 'Déposez le fichier à uploader, ou cliquez pour le sélectionner.',\n },\n image: {\n upload_several:\n 'Déposez les images à uploader, ou cliquez pour en sélectionner.',\n upload_single:\n \"Déposez l'image à uploader, ou cliquez pour la sélectionner.\",\n },\n references: {\n all_missing: 'Impossible de trouver des données de références.',\n many_missing:\n 'Au moins une des références associées semble ne plus être disponible.',\n single_missing:\n 'La référence associée ne semble plus disponible.',\n },\n },\n message: {\n yes: 'Oui',\n no: 'Non',\n are_you_sure: 'Êtes-vous sûr ?',\n about: 'Au sujet de',\n not_found:\n \"L'URL saisie est incorrecte, ou vous avez suivi un mauvais lien.\",\n loading:\n 'La page est en cours de chargement, merci de bien vouloir patienter.',\n invalid_form: \"Le formulaire n'est pas valide.\",\n delete_title: 'Supprimer %{name} #%{id}',\n delete_content:\n 'Êtes-vous sur(e) de vouloir supprimer cet élément ?',\n bulk_delete_title:\n 'Supprimer %{name} |||| Supprimer %{smart_count} %{name} éléments',\n bulk_delete_content:\n 'Êtes-vous sur(e) de vouloir supprimer cet élément ? |||| Êtes-vous sur(e) de vouloir supprimer ces %{smart_count} éléments ?',\n },\n navigation: {\n no_results: 'Aucun résultat',\n page_out_of_boundaries: 'La page %{page} est en dehors des limites',\n page_out_from_end: 'Fin de la pagination',\n page_out_from_begin: 'La page doit être supérieure à 1',\n page_range_info: '%{offsetBegin}-%{offsetEnd} sur %{total}',\n next: 'Suivant',\n prev: 'Précédent',\n },\n auth: {\n username: 'Identifiant',\n password: 'Mot de passe',\n sign_in: 'Connexion',\n sign_in_error: \"Échec de l'authentification, merci de réessayer\",\n logout: 'Déconnexion',\n },\n notification: {\n updated:\n 'Élément mis à jour |||| %{smart_count} élements mis à jour',\n created: 'Élément créé',\n deleted: 'Élément supprimé |||| %{smart_count} élements supprimés',\n bad_item: 'Élément inconnu',\n item_doesnt_exist: \"L'élément n'existe pas\",\n http_error: 'Erreur de communication avec le serveur',\n canceled: 'Action annulée',\n },\n validation: {\n required: 'Ce champ est requis',\n minLength: 'Minimum %{min} caractères',\n maxLength: 'Maximum %{max} caractères',\n minValue: 'Minimum %{min}',\n maxValue: 'Maximum %{max}',\n number: 'Doit être un nombre',\n email: 'Doit être un email',\n },\n },\n};\n","import frenchMessages from 'ra-language-french';\n\nexport default {\n simple: {\n action: {\n close: 'Fermer',\n resetViews: 'Réinitialiser des vues',\n },\n 'create-post': 'Nouveau post',\n },\n ...frenchMessages,\n resources: {\n posts: {\n name: 'Article |||| Articles',\n fields: {\n average_note: 'Note moyenne',\n body: 'Contenu',\n comments: 'Commentaires',\n commentable: 'Commentable',\n created_at: 'Créé le',\n notifications: 'Destinataires de notifications',\n nb_view: 'Nb de vues',\n password: 'Mot de passe (si protégé)',\n pictures: 'Photos associées',\n published_at: 'Publié le',\n teaser: 'Description',\n tags: 'Catégories',\n title: 'Titre',\n views: 'Vues',\n },\n },\n comments: {\n name: 'Commentaire |||| Commentaires',\n fields: {\n body: 'Contenu',\n created_at: 'Créé le',\n post_id: 'Article',\n author: {\n name: 'Auteur',\n },\n },\n },\n users: {\n name: 'User |||| Users',\n fields: {\n name: 'Name',\n role: 'Role',\n },\n },\n },\n post: {\n list: {\n search: 'Recherche',\n },\n form: {\n summary: 'Résumé',\n body: 'Contenu',\n miscellaneous: 'Extra',\n comments: 'Commentaires',\n },\n edit: {\n title: 'Article \"%{title}\"',\n },\n },\n comment: {\n list: {\n about: 'Au sujet de',\n },\n },\n user: {\n list: {\n search: 'Recherche',\n },\n form: {\n summary: 'Résumé',\n security: 'Sécurité',\n },\n edit: {\n title: 'Utilisateur \"%{title}\"',\n },\n },\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;;;;;;AAEA;AACA;AACA;AACA;AAFA;AAIA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAdA;AAFA;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAJA;AAFA;AAWA;AACA;AACA;AACA;AACA;AAFA;AAFA;AA/BA;AAuCA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AADA;AAVA;AAcA;AACA;AACA;AADA;AADA;AAKA;AACA;AACA;AADA;AAGA;AACA;AACA;AAFA;AAIA;AACA;AADA;AARA;;;;;A","sourceRoot":""} -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React Admin 6 | 11 | 12 | 13 | 14 | 15 |
16 |
17 | 18 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ra-customizable-datagrid", 3 | "version": "1.1.0", 4 | "description": "", 5 | "main": "lib/index.js", 6 | "scripts": { 7 | "build": "babel ./src/ -d lib", 8 | "demo": "npm run start --prefix ./demo", 9 | "demo-install": "yarn install --cwd ./demo && yarn install && npm run install:peers", 10 | "install:peers": "yarn add -P $(jq -r '.peerDependencies | to_entries | map(\"\\(.key)@\\(.value | tostring)\") | join(\" \")' package.json)", 11 | "prettier-js": "prettier --write '{src,demo}/**/*.js'" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/fizix-io/ra-customizable-datagrid.git" 16 | }, 17 | "keywords": [ 18 | "React", 19 | "React-Admin", 20 | "List" 21 | ], 22 | "author": "FIZIX, @akselsledins", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/fizix-io/ra-customizable-datagrid/issues" 26 | }, 27 | "homepage": "https://github.com/fizix-io/ra-customizable-datagrid#readme", 28 | "peerDependencies": { 29 | "@material-ui/core": "^1.0.0", 30 | "@material-ui/icons": "^1.0.0", 31 | "react": "^16.4.1", 32 | "react-admin": "^2.1.1", 33 | "react-dom": "^16.4.1" 34 | }, 35 | "devDependencies": { 36 | "babel-cli": "^6.26.0", 37 | "babel-core": "^6.26.3", 38 | "babel-loader": "^7.1.5", 39 | "babel-plugin-transform-react-jsx": "^6.24.1", 40 | "babel-polyfill": "^6.26.0", 41 | "babel-preset-es2015": "^6.24.1", 42 | "babel-preset-react": "^6.24.1", 43 | "babel-preset-stage-0": "^6.24.1", 44 | "hard-source-webpack-plugin": "^0.11.1", 45 | "prettier": "^1.13.7" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/CustomizableDatagrid.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import T from 'prop-types'; 3 | 4 | import { Datagrid } from 'react-admin'; 5 | 6 | import isEmpty from 'lodash/isEmpty'; 7 | import filter from 'lodash/filter'; 8 | import get from 'lodash/get'; 9 | 10 | import ColumnIcon from '@material-ui/icons/ViewColumn'; 11 | import Button from '@material-ui/core/Button'; 12 | 13 | import SelectionDialog from './SelectionDialog'; 14 | import LocalStorage from './LocalStorage'; 15 | 16 | const arrayToSelection = values => 17 | values.reduce((selection, columnName) => { 18 | selection[columnName] = true; 19 | return selection; 20 | }, {}); 21 | 22 | // CustomizableDatagrid allows to show/hide columns dynamically 23 | // the preferences are stored in local storage 24 | class CustomizableDatagrid extends Component { 25 | constructor(props) { 26 | super(props); 27 | this.state = { 28 | modalOpened: false, 29 | selection: this.getInitialSelection(), 30 | }; 31 | } 32 | 33 | getColumnNames() { 34 | const { children } = this.props; 35 | return filter(React.Children.map(children, field => get(field, ['props', 'source']))); 36 | } 37 | 38 | getColumnLabels() { 39 | const { children } = this.props; 40 | return filter( 41 | React.Children.map( 42 | children, 43 | field => 44 | field && { 45 | source: get(field, ['props', 'source']), 46 | label: get(field, ['props', 'label']), 47 | }, 48 | ), 49 | item => item && item.source, 50 | ); 51 | } 52 | 53 | getInitialSelection() { 54 | const { defaultColumns, resource, children, storage } = this.props; 55 | 56 | const previousSelection = storage.get(resource); 57 | 58 | // if we have a previously stored value, let's return it 59 | if (!isEmpty(previousSelection)) { 60 | return previousSelection; 61 | } 62 | 63 | // if defaultColumns are set let's return them 64 | if (!isEmpty(defaultColumns)) { 65 | return arrayToSelection(defaultColumns); 66 | } 67 | 68 | // otherwise we fallback on the default behaviour : display all columns 69 | return arrayToSelection(this.getColumnNames()); 70 | } 71 | 72 | // updates the storage with the internal state value 73 | updateStorage = () => { 74 | this.props.storage.set(this.props.resource, this.state.selection); 75 | }; 76 | 77 | toggleColumn = columnName => { 78 | const previousSelection = this.state.selection; 79 | const selection = { 80 | ...previousSelection, 81 | [columnName]: !previousSelection[columnName], 82 | }; 83 | this.setState({ selection }, this.updateStorage); 84 | }; 85 | 86 | handleOpen = () => this.setState({ modalOpened: true }); 87 | handleClose = () => this.setState({ modalOpened: false }); 88 | 89 | renderChild = child => { 90 | const source = get(child, ['props', 'source']); 91 | const { selection } = this.state; 92 | 93 | // Show children without source, or children explicitly visible 94 | if (!source || selection[source]) { 95 | return React.cloneElement(child, {}); 96 | } 97 | 98 | return null; 99 | }; 100 | 101 | render() { 102 | const { children, defaultColumns, ...rest } = this.props; 103 | const { selection, modalOpened } = this.state; 104 | 105 | return ( 106 |
107 |
108 | 111 |
112 | {modalOpened && ( 113 | 119 | )} 120 | {React.Children.map(children, this.renderChild)} 121 |
122 | ); 123 | } 124 | } 125 | 126 | CustomizableDatagrid.propTypes = { 127 | defaultColumns: T.arrayOf(T.string), 128 | storage: T.shape({ 129 | get: T.func.isRequired, 130 | set: T.func.isRequired, 131 | }), 132 | }; 133 | 134 | CustomizableDatagrid.defaultProps = { 135 | defaultColumns: [], 136 | storage: LocalStorage, 137 | }; 138 | 139 | export default CustomizableDatagrid; 140 | -------------------------------------------------------------------------------- /src/LocalStorage.js: -------------------------------------------------------------------------------- 1 | import get from 'lodash/get'; 2 | 3 | const STORAGE_KEY = 'raColumnsConfig'; 4 | 5 | // Very basic storage helper 6 | // values are stored in browser localStorage 7 | 8 | const getRootValue = () => { 9 | try { 10 | return JSON.parse(window.localStorage.getItem(STORAGE_KEY)); 11 | } catch (e) { 12 | return undefined; 13 | } 14 | }; 15 | 16 | const setRootValue = value => { 17 | try { 18 | window.localStorage.setItem(STORAGE_KEY, JSON.stringify(value)); 19 | } catch (e) {} 20 | }; 21 | 22 | const LocalStorage = { 23 | get(key) { 24 | return get(getRootValue(), key); 25 | }, 26 | set(key, value) { 27 | const oldValue = getRootValue(); 28 | setRootValue({ 29 | ...oldValue, 30 | [key]: value, 31 | }); 32 | }, 33 | }; 34 | 35 | export default LocalStorage; 36 | -------------------------------------------------------------------------------- /src/SelectionDialog.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import T from 'prop-types'; 3 | 4 | import { FieldTitle } from 'react-admin'; 5 | 6 | import DialogTitle from '@material-ui/core/DialogTitle'; 7 | import DialogContent from '@material-ui/core/DialogContent'; 8 | import DialogActions from '@material-ui/core/DialogActions'; 9 | import Dialog from '@material-ui/core/Dialog'; 10 | import FormControlLabel from '@material-ui/core/FormControlLabel'; 11 | import FormGroup from '@material-ui/core/FormGroup'; 12 | import Checkbox from '@material-ui/core/Checkbox'; 13 | import IconClose from '@material-ui/icons/Close'; 14 | import Button from '@material-ui/core/Button'; 15 | 16 | class SelectionDialog extends Component { 17 | onColumnClicked = ({ target: { value: columnName } }) => { 18 | this.props.onColumnClicked(columnName); 19 | }; 20 | 21 | render() { 22 | const { columns, selection, onClose, resource } = this.props; 23 | 24 | return ( 25 | 26 | Configuration 27 | 28 | 29 | {columns.map(({ source, label }) => ( 30 | 38 | } 39 | label={} 40 | /> 41 | ))} 42 | 43 | 44 | 45 | 48 | 49 | 50 | ); 51 | } 52 | } 53 | 54 | SelectionDialog.propTypes = { 55 | columns: T.arrayOf( 56 | T.shape({ 57 | label: T.string, 58 | source: T.string.isRequired, 59 | }), 60 | ).isRequired, 61 | selection: T.object, 62 | }; 63 | 64 | SelectionDialog.defaultProps = { 65 | columns: [], 66 | columns: {}, 67 | }; 68 | 69 | export default SelectionDialog; 70 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import CustomizableDatagrid from './CustomizableDatagrid'; 2 | 3 | export default CustomizableDatagrid; 4 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.0.0-beta.42": 6 | version "7.0.0-beta.55" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.55.tgz#0bc33aa5a6ac0b012f37e25b9e6aaa2e489a916b" 8 | dependencies: 9 | core-js "^2.5.7" 10 | regenerator-runtime "^0.12.0" 11 | 12 | "@material-ui/core@^1.0.0": 13 | version "1.4.2" 14 | resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-1.4.2.tgz#8a1282e985d4922a4d2b4f7e287d8a716a2fc108" 15 | dependencies: 16 | "@babel/runtime" "^7.0.0-beta.42" 17 | "@types/jss" "^9.5.3" 18 | "@types/react-transition-group" "^2.0.8" 19 | brcast "^3.0.1" 20 | classnames "^2.2.5" 21 | csstype "^2.5.2" 22 | debounce "^1.1.0" 23 | deepmerge "^2.0.1" 24 | dom-helpers "^3.2.1" 25 | hoist-non-react-statics "^2.5.0" 26 | is-plain-object "^2.0.4" 27 | jss "^9.3.3" 28 | jss-camel-case "^6.0.0" 29 | jss-default-unit "^8.0.2" 30 | jss-global "^3.0.0" 31 | jss-nested "^6.0.1" 32 | jss-props-sort "^6.0.0" 33 | jss-vendor-prefixer "^7.0.0" 34 | keycode "^2.1.9" 35 | normalize-scroll-left "^0.1.2" 36 | popper.js "^1.14.1" 37 | prop-types "^15.6.0" 38 | react-event-listener "^0.6.0" 39 | react-jss "^8.1.0" 40 | react-transition-group "^2.2.1" 41 | recompose "^0.27.0" 42 | warning "^4.0.1" 43 | 44 | "@material-ui/icons@^1.0.0": 45 | version "1.1.0" 46 | resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-1.1.0.tgz#4d025df7b0ba6ace8d6710079ed76013a4d26595" 47 | dependencies: 48 | recompose "^0.26.0 || ^0.27.0" 49 | 50 | "@types/jss@^9.5.3": 51 | version "9.5.4" 52 | resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.4.tgz#89a4ee32a14a8d2937187b1a7f443750e964a74d" 53 | dependencies: 54 | csstype "^2.0.0" 55 | indefinite-observable "^1.0.1" 56 | 57 | "@types/react-transition-group@^2.0.8": 58 | version "2.0.11" 59 | resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.0.11.tgz#feb274676a39383fffaa0dff710958d2251abefb" 60 | dependencies: 61 | "@types/react" "*" 62 | 63 | "@types/react@*": 64 | version "16.4.7" 65 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.7.tgz#f33f6d759a7e1833befa15224d68942d178a5a3f" 66 | dependencies: 67 | csstype "^2.2.0" 68 | 69 | JSV@^4.0.x: 70 | version "4.0.2" 71 | resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" 72 | 73 | abbrev@1: 74 | version "1.1.1" 75 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 76 | 77 | ansi-regex@^2.0.0: 78 | version "2.1.1" 79 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 80 | 81 | ansi-regex@^3.0.0: 82 | version "3.0.0" 83 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 84 | 85 | ansi-styles@^2.2.1: 86 | version "2.2.1" 87 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 88 | 89 | ansi-styles@^3.2.1: 90 | version "3.2.1" 91 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 92 | dependencies: 93 | color-convert "^1.9.0" 94 | 95 | ansi-styles@~1.0.0: 96 | version "1.0.0" 97 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" 98 | 99 | anymatch@^1.3.0: 100 | version "1.3.2" 101 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" 102 | dependencies: 103 | micromatch "^2.1.5" 104 | normalize-path "^2.0.0" 105 | 106 | aproba@^1.0.3: 107 | version "1.2.0" 108 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 109 | 110 | are-we-there-yet@~1.1.2: 111 | version "1.1.5" 112 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 113 | dependencies: 114 | delegates "^1.0.0" 115 | readable-stream "^2.0.6" 116 | 117 | arr-diff@^2.0.0: 118 | version "2.0.0" 119 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 120 | dependencies: 121 | arr-flatten "^1.0.1" 122 | 123 | arr-flatten@^1.0.1: 124 | version "1.1.0" 125 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 126 | 127 | array-unique@^0.2.1: 128 | version "0.2.1" 129 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 130 | 131 | asap@~2.0.3: 132 | version "2.0.6" 133 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 134 | 135 | async-each@^1.0.0: 136 | version "1.0.1" 137 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 138 | 139 | attr-accept@^1.0.3: 140 | version "1.1.3" 141 | resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.3.tgz#48230c79f93790ef2775fcec4f0db0f5db41ca52" 142 | dependencies: 143 | core-js "^2.5.0" 144 | 145 | autosuggest-highlight@^3.1.1: 146 | version "3.1.1" 147 | resolved "https://registry.yarnpkg.com/autosuggest-highlight/-/autosuggest-highlight-3.1.1.tgz#70bb4f9125fe8a849e85f825f7bb2a1a4806743d" 148 | dependencies: 149 | diacritic "0.0.2" 150 | 151 | babel-cli@^6.26.0: 152 | version "6.26.0" 153 | resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" 154 | dependencies: 155 | babel-core "^6.26.0" 156 | babel-polyfill "^6.26.0" 157 | babel-register "^6.26.0" 158 | babel-runtime "^6.26.0" 159 | commander "^2.11.0" 160 | convert-source-map "^1.5.0" 161 | fs-readdir-recursive "^1.0.0" 162 | glob "^7.1.2" 163 | lodash "^4.17.4" 164 | output-file-sync "^1.1.2" 165 | path-is-absolute "^1.0.1" 166 | slash "^1.0.0" 167 | source-map "^0.5.6" 168 | v8flags "^2.1.1" 169 | optionalDependencies: 170 | chokidar "^1.6.1" 171 | 172 | babel-code-frame@^6.26.0: 173 | version "6.26.0" 174 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 175 | dependencies: 176 | chalk "^1.1.3" 177 | esutils "^2.0.2" 178 | js-tokens "^3.0.2" 179 | 180 | babel-core@^6.26.0, babel-core@^6.26.3: 181 | version "6.26.3" 182 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" 183 | dependencies: 184 | babel-code-frame "^6.26.0" 185 | babel-generator "^6.26.0" 186 | babel-helpers "^6.24.1" 187 | babel-messages "^6.23.0" 188 | babel-register "^6.26.0" 189 | babel-runtime "^6.26.0" 190 | babel-template "^6.26.0" 191 | babel-traverse "^6.26.0" 192 | babel-types "^6.26.0" 193 | babylon "^6.18.0" 194 | convert-source-map "^1.5.1" 195 | debug "^2.6.9" 196 | json5 "^0.5.1" 197 | lodash "^4.17.4" 198 | minimatch "^3.0.4" 199 | path-is-absolute "^1.0.1" 200 | private "^0.1.8" 201 | slash "^1.0.0" 202 | source-map "^0.5.7" 203 | 204 | babel-generator@^6.26.0: 205 | version "6.26.1" 206 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 207 | dependencies: 208 | babel-messages "^6.23.0" 209 | babel-runtime "^6.26.0" 210 | babel-types "^6.26.0" 211 | detect-indent "^4.0.0" 212 | jsesc "^1.3.0" 213 | lodash "^4.17.4" 214 | source-map "^0.5.7" 215 | trim-right "^1.0.1" 216 | 217 | babel-helper-bindify-decorators@^6.24.1: 218 | version "6.24.1" 219 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" 220 | dependencies: 221 | babel-runtime "^6.22.0" 222 | babel-traverse "^6.24.1" 223 | babel-types "^6.24.1" 224 | 225 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: 226 | version "6.24.1" 227 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" 228 | dependencies: 229 | babel-helper-explode-assignable-expression "^6.24.1" 230 | babel-runtime "^6.22.0" 231 | babel-types "^6.24.1" 232 | 233 | babel-helper-builder-react-jsx@^6.24.1: 234 | version "6.26.0" 235 | resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" 236 | dependencies: 237 | babel-runtime "^6.26.0" 238 | babel-types "^6.26.0" 239 | esutils "^2.0.2" 240 | 241 | babel-helper-call-delegate@^6.24.1: 242 | version "6.24.1" 243 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" 244 | dependencies: 245 | babel-helper-hoist-variables "^6.24.1" 246 | babel-runtime "^6.22.0" 247 | babel-traverse "^6.24.1" 248 | babel-types "^6.24.1" 249 | 250 | babel-helper-define-map@^6.24.1: 251 | version "6.26.0" 252 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" 253 | dependencies: 254 | babel-helper-function-name "^6.24.1" 255 | babel-runtime "^6.26.0" 256 | babel-types "^6.26.0" 257 | lodash "^4.17.4" 258 | 259 | babel-helper-explode-assignable-expression@^6.24.1: 260 | version "6.24.1" 261 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" 262 | dependencies: 263 | babel-runtime "^6.22.0" 264 | babel-traverse "^6.24.1" 265 | babel-types "^6.24.1" 266 | 267 | babel-helper-explode-class@^6.24.1: 268 | version "6.24.1" 269 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" 270 | dependencies: 271 | babel-helper-bindify-decorators "^6.24.1" 272 | babel-runtime "^6.22.0" 273 | babel-traverse "^6.24.1" 274 | babel-types "^6.24.1" 275 | 276 | babel-helper-function-name@^6.24.1: 277 | version "6.24.1" 278 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" 279 | dependencies: 280 | babel-helper-get-function-arity "^6.24.1" 281 | babel-runtime "^6.22.0" 282 | babel-template "^6.24.1" 283 | babel-traverse "^6.24.1" 284 | babel-types "^6.24.1" 285 | 286 | babel-helper-get-function-arity@^6.24.1: 287 | version "6.24.1" 288 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" 289 | dependencies: 290 | babel-runtime "^6.22.0" 291 | babel-types "^6.24.1" 292 | 293 | babel-helper-hoist-variables@^6.24.1: 294 | version "6.24.1" 295 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" 296 | dependencies: 297 | babel-runtime "^6.22.0" 298 | babel-types "^6.24.1" 299 | 300 | babel-helper-optimise-call-expression@^6.24.1: 301 | version "6.24.1" 302 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" 303 | dependencies: 304 | babel-runtime "^6.22.0" 305 | babel-types "^6.24.1" 306 | 307 | babel-helper-regex@^6.24.1: 308 | version "6.26.0" 309 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" 310 | dependencies: 311 | babel-runtime "^6.26.0" 312 | babel-types "^6.26.0" 313 | lodash "^4.17.4" 314 | 315 | babel-helper-remap-async-to-generator@^6.24.1: 316 | version "6.24.1" 317 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" 318 | dependencies: 319 | babel-helper-function-name "^6.24.1" 320 | babel-runtime "^6.22.0" 321 | babel-template "^6.24.1" 322 | babel-traverse "^6.24.1" 323 | babel-types "^6.24.1" 324 | 325 | babel-helper-replace-supers@^6.24.1: 326 | version "6.24.1" 327 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" 328 | dependencies: 329 | babel-helper-optimise-call-expression "^6.24.1" 330 | babel-messages "^6.23.0" 331 | babel-runtime "^6.22.0" 332 | babel-template "^6.24.1" 333 | babel-traverse "^6.24.1" 334 | babel-types "^6.24.1" 335 | 336 | babel-helpers@^6.24.1: 337 | version "6.24.1" 338 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 339 | dependencies: 340 | babel-runtime "^6.22.0" 341 | babel-template "^6.24.1" 342 | 343 | babel-loader@^7.1.5: 344 | version "7.1.5" 345 | resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" 346 | dependencies: 347 | find-cache-dir "^1.0.0" 348 | loader-utils "^1.0.2" 349 | mkdirp "^0.5.1" 350 | 351 | babel-messages@^6.23.0: 352 | version "6.23.0" 353 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 354 | dependencies: 355 | babel-runtime "^6.22.0" 356 | 357 | babel-plugin-check-es2015-constants@^6.22.0: 358 | version "6.22.0" 359 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 360 | dependencies: 361 | babel-runtime "^6.22.0" 362 | 363 | babel-plugin-syntax-async-functions@^6.8.0: 364 | version "6.13.0" 365 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 366 | 367 | babel-plugin-syntax-async-generators@^6.5.0: 368 | version "6.13.0" 369 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" 370 | 371 | babel-plugin-syntax-class-constructor-call@^6.18.0: 372 | version "6.18.0" 373 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" 374 | 375 | babel-plugin-syntax-class-properties@^6.8.0: 376 | version "6.13.0" 377 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" 378 | 379 | babel-plugin-syntax-decorators@^6.13.0: 380 | version "6.13.0" 381 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" 382 | 383 | babel-plugin-syntax-do-expressions@^6.8.0: 384 | version "6.13.0" 385 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" 386 | 387 | babel-plugin-syntax-dynamic-import@^6.18.0: 388 | version "6.18.0" 389 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" 390 | 391 | babel-plugin-syntax-exponentiation-operator@^6.8.0: 392 | version "6.13.0" 393 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 394 | 395 | babel-plugin-syntax-export-extensions@^6.8.0: 396 | version "6.13.0" 397 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" 398 | 399 | babel-plugin-syntax-flow@^6.18.0: 400 | version "6.18.0" 401 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" 402 | 403 | babel-plugin-syntax-function-bind@^6.8.0: 404 | version "6.13.0" 405 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" 406 | 407 | babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: 408 | version "6.18.0" 409 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" 410 | 411 | babel-plugin-syntax-object-rest-spread@^6.8.0: 412 | version "6.13.0" 413 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 414 | 415 | babel-plugin-syntax-trailing-function-commas@^6.22.0: 416 | version "6.22.0" 417 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 418 | 419 | babel-plugin-transform-async-generator-functions@^6.24.1: 420 | version "6.24.1" 421 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" 422 | dependencies: 423 | babel-helper-remap-async-to-generator "^6.24.1" 424 | babel-plugin-syntax-async-generators "^6.5.0" 425 | babel-runtime "^6.22.0" 426 | 427 | babel-plugin-transform-async-to-generator@^6.24.1: 428 | version "6.24.1" 429 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" 430 | dependencies: 431 | babel-helper-remap-async-to-generator "^6.24.1" 432 | babel-plugin-syntax-async-functions "^6.8.0" 433 | babel-runtime "^6.22.0" 434 | 435 | babel-plugin-transform-class-constructor-call@^6.24.1: 436 | version "6.24.1" 437 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" 438 | dependencies: 439 | babel-plugin-syntax-class-constructor-call "^6.18.0" 440 | babel-runtime "^6.22.0" 441 | babel-template "^6.24.1" 442 | 443 | babel-plugin-transform-class-properties@^6.24.1: 444 | version "6.24.1" 445 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" 446 | dependencies: 447 | babel-helper-function-name "^6.24.1" 448 | babel-plugin-syntax-class-properties "^6.8.0" 449 | babel-runtime "^6.22.0" 450 | babel-template "^6.24.1" 451 | 452 | babel-plugin-transform-decorators@^6.24.1: 453 | version "6.24.1" 454 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" 455 | dependencies: 456 | babel-helper-explode-class "^6.24.1" 457 | babel-plugin-syntax-decorators "^6.13.0" 458 | babel-runtime "^6.22.0" 459 | babel-template "^6.24.1" 460 | babel-types "^6.24.1" 461 | 462 | babel-plugin-transform-do-expressions@^6.22.0: 463 | version "6.22.0" 464 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" 465 | dependencies: 466 | babel-plugin-syntax-do-expressions "^6.8.0" 467 | babel-runtime "^6.22.0" 468 | 469 | babel-plugin-transform-es2015-arrow-functions@^6.22.0: 470 | version "6.22.0" 471 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 472 | dependencies: 473 | babel-runtime "^6.22.0" 474 | 475 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: 476 | version "6.22.0" 477 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 478 | dependencies: 479 | babel-runtime "^6.22.0" 480 | 481 | babel-plugin-transform-es2015-block-scoping@^6.24.1: 482 | version "6.26.0" 483 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" 484 | dependencies: 485 | babel-runtime "^6.26.0" 486 | babel-template "^6.26.0" 487 | babel-traverse "^6.26.0" 488 | babel-types "^6.26.0" 489 | lodash "^4.17.4" 490 | 491 | babel-plugin-transform-es2015-classes@^6.24.1: 492 | version "6.24.1" 493 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" 494 | dependencies: 495 | babel-helper-define-map "^6.24.1" 496 | babel-helper-function-name "^6.24.1" 497 | babel-helper-optimise-call-expression "^6.24.1" 498 | babel-helper-replace-supers "^6.24.1" 499 | babel-messages "^6.23.0" 500 | babel-runtime "^6.22.0" 501 | babel-template "^6.24.1" 502 | babel-traverse "^6.24.1" 503 | babel-types "^6.24.1" 504 | 505 | babel-plugin-transform-es2015-computed-properties@^6.24.1: 506 | version "6.24.1" 507 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" 508 | dependencies: 509 | babel-runtime "^6.22.0" 510 | babel-template "^6.24.1" 511 | 512 | babel-plugin-transform-es2015-destructuring@^6.22.0: 513 | version "6.23.0" 514 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 515 | dependencies: 516 | babel-runtime "^6.22.0" 517 | 518 | babel-plugin-transform-es2015-duplicate-keys@^6.24.1: 519 | version "6.24.1" 520 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" 521 | dependencies: 522 | babel-runtime "^6.22.0" 523 | babel-types "^6.24.1" 524 | 525 | babel-plugin-transform-es2015-for-of@^6.22.0: 526 | version "6.23.0" 527 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 528 | dependencies: 529 | babel-runtime "^6.22.0" 530 | 531 | babel-plugin-transform-es2015-function-name@^6.24.1: 532 | version "6.24.1" 533 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" 534 | dependencies: 535 | babel-helper-function-name "^6.24.1" 536 | babel-runtime "^6.22.0" 537 | babel-types "^6.24.1" 538 | 539 | babel-plugin-transform-es2015-literals@^6.22.0: 540 | version "6.22.0" 541 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 542 | dependencies: 543 | babel-runtime "^6.22.0" 544 | 545 | babel-plugin-transform-es2015-modules-amd@^6.24.1: 546 | version "6.24.1" 547 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" 548 | dependencies: 549 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 550 | babel-runtime "^6.22.0" 551 | babel-template "^6.24.1" 552 | 553 | babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 554 | version "6.26.2" 555 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" 556 | dependencies: 557 | babel-plugin-transform-strict-mode "^6.24.1" 558 | babel-runtime "^6.26.0" 559 | babel-template "^6.26.0" 560 | babel-types "^6.26.0" 561 | 562 | babel-plugin-transform-es2015-modules-systemjs@^6.24.1: 563 | version "6.24.1" 564 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" 565 | dependencies: 566 | babel-helper-hoist-variables "^6.24.1" 567 | babel-runtime "^6.22.0" 568 | babel-template "^6.24.1" 569 | 570 | babel-plugin-transform-es2015-modules-umd@^6.24.1: 571 | version "6.24.1" 572 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" 573 | dependencies: 574 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 575 | babel-runtime "^6.22.0" 576 | babel-template "^6.24.1" 577 | 578 | babel-plugin-transform-es2015-object-super@^6.24.1: 579 | version "6.24.1" 580 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" 581 | dependencies: 582 | babel-helper-replace-supers "^6.24.1" 583 | babel-runtime "^6.22.0" 584 | 585 | babel-plugin-transform-es2015-parameters@^6.24.1: 586 | version "6.24.1" 587 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" 588 | dependencies: 589 | babel-helper-call-delegate "^6.24.1" 590 | babel-helper-get-function-arity "^6.24.1" 591 | babel-runtime "^6.22.0" 592 | babel-template "^6.24.1" 593 | babel-traverse "^6.24.1" 594 | babel-types "^6.24.1" 595 | 596 | babel-plugin-transform-es2015-shorthand-properties@^6.24.1: 597 | version "6.24.1" 598 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" 599 | dependencies: 600 | babel-runtime "^6.22.0" 601 | babel-types "^6.24.1" 602 | 603 | babel-plugin-transform-es2015-spread@^6.22.0: 604 | version "6.22.0" 605 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 606 | dependencies: 607 | babel-runtime "^6.22.0" 608 | 609 | babel-plugin-transform-es2015-sticky-regex@^6.24.1: 610 | version "6.24.1" 611 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" 612 | dependencies: 613 | babel-helper-regex "^6.24.1" 614 | babel-runtime "^6.22.0" 615 | babel-types "^6.24.1" 616 | 617 | babel-plugin-transform-es2015-template-literals@^6.22.0: 618 | version "6.22.0" 619 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 620 | dependencies: 621 | babel-runtime "^6.22.0" 622 | 623 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0: 624 | version "6.23.0" 625 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 626 | dependencies: 627 | babel-runtime "^6.22.0" 628 | 629 | babel-plugin-transform-es2015-unicode-regex@^6.24.1: 630 | version "6.24.1" 631 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" 632 | dependencies: 633 | babel-helper-regex "^6.24.1" 634 | babel-runtime "^6.22.0" 635 | regexpu-core "^2.0.0" 636 | 637 | babel-plugin-transform-exponentiation-operator@^6.24.1: 638 | version "6.24.1" 639 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" 640 | dependencies: 641 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" 642 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 643 | babel-runtime "^6.22.0" 644 | 645 | babel-plugin-transform-export-extensions@^6.22.0: 646 | version "6.22.0" 647 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" 648 | dependencies: 649 | babel-plugin-syntax-export-extensions "^6.8.0" 650 | babel-runtime "^6.22.0" 651 | 652 | babel-plugin-transform-flow-strip-types@^6.22.0: 653 | version "6.22.0" 654 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" 655 | dependencies: 656 | babel-plugin-syntax-flow "^6.18.0" 657 | babel-runtime "^6.22.0" 658 | 659 | babel-plugin-transform-function-bind@^6.22.0: 660 | version "6.22.0" 661 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" 662 | dependencies: 663 | babel-plugin-syntax-function-bind "^6.8.0" 664 | babel-runtime "^6.22.0" 665 | 666 | babel-plugin-transform-object-rest-spread@^6.22.0: 667 | version "6.26.0" 668 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" 669 | dependencies: 670 | babel-plugin-syntax-object-rest-spread "^6.8.0" 671 | babel-runtime "^6.26.0" 672 | 673 | babel-plugin-transform-react-display-name@^6.23.0: 674 | version "6.25.0" 675 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" 676 | dependencies: 677 | babel-runtime "^6.22.0" 678 | 679 | babel-plugin-transform-react-jsx-self@^6.22.0: 680 | version "6.22.0" 681 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" 682 | dependencies: 683 | babel-plugin-syntax-jsx "^6.8.0" 684 | babel-runtime "^6.22.0" 685 | 686 | babel-plugin-transform-react-jsx-source@^6.22.0: 687 | version "6.22.0" 688 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" 689 | dependencies: 690 | babel-plugin-syntax-jsx "^6.8.0" 691 | babel-runtime "^6.22.0" 692 | 693 | babel-plugin-transform-react-jsx@^6.24.1: 694 | version "6.24.1" 695 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" 696 | dependencies: 697 | babel-helper-builder-react-jsx "^6.24.1" 698 | babel-plugin-syntax-jsx "^6.8.0" 699 | babel-runtime "^6.22.0" 700 | 701 | babel-plugin-transform-regenerator@^6.24.1: 702 | version "6.26.0" 703 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" 704 | dependencies: 705 | regenerator-transform "^0.10.0" 706 | 707 | babel-plugin-transform-strict-mode@^6.24.1: 708 | version "6.24.1" 709 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 710 | dependencies: 711 | babel-runtime "^6.22.0" 712 | babel-types "^6.24.1" 713 | 714 | babel-polyfill@^6.26.0: 715 | version "6.26.0" 716 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" 717 | dependencies: 718 | babel-runtime "^6.26.0" 719 | core-js "^2.5.0" 720 | regenerator-runtime "^0.10.5" 721 | 722 | babel-preset-es2015@^6.24.1: 723 | version "6.24.1" 724 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" 725 | dependencies: 726 | babel-plugin-check-es2015-constants "^6.22.0" 727 | babel-plugin-transform-es2015-arrow-functions "^6.22.0" 728 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" 729 | babel-plugin-transform-es2015-block-scoping "^6.24.1" 730 | babel-plugin-transform-es2015-classes "^6.24.1" 731 | babel-plugin-transform-es2015-computed-properties "^6.24.1" 732 | babel-plugin-transform-es2015-destructuring "^6.22.0" 733 | babel-plugin-transform-es2015-duplicate-keys "^6.24.1" 734 | babel-plugin-transform-es2015-for-of "^6.22.0" 735 | babel-plugin-transform-es2015-function-name "^6.24.1" 736 | babel-plugin-transform-es2015-literals "^6.22.0" 737 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 738 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 739 | babel-plugin-transform-es2015-modules-systemjs "^6.24.1" 740 | babel-plugin-transform-es2015-modules-umd "^6.24.1" 741 | babel-plugin-transform-es2015-object-super "^6.24.1" 742 | babel-plugin-transform-es2015-parameters "^6.24.1" 743 | babel-plugin-transform-es2015-shorthand-properties "^6.24.1" 744 | babel-plugin-transform-es2015-spread "^6.22.0" 745 | babel-plugin-transform-es2015-sticky-regex "^6.24.1" 746 | babel-plugin-transform-es2015-template-literals "^6.22.0" 747 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0" 748 | babel-plugin-transform-es2015-unicode-regex "^6.24.1" 749 | babel-plugin-transform-regenerator "^6.24.1" 750 | 751 | babel-preset-flow@^6.23.0: 752 | version "6.23.0" 753 | resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" 754 | dependencies: 755 | babel-plugin-transform-flow-strip-types "^6.22.0" 756 | 757 | babel-preset-react@^6.24.1: 758 | version "6.24.1" 759 | resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" 760 | dependencies: 761 | babel-plugin-syntax-jsx "^6.3.13" 762 | babel-plugin-transform-react-display-name "^6.23.0" 763 | babel-plugin-transform-react-jsx "^6.24.1" 764 | babel-plugin-transform-react-jsx-self "^6.22.0" 765 | babel-plugin-transform-react-jsx-source "^6.22.0" 766 | babel-preset-flow "^6.23.0" 767 | 768 | babel-preset-stage-0@^6.24.1: 769 | version "6.24.1" 770 | resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" 771 | dependencies: 772 | babel-plugin-transform-do-expressions "^6.22.0" 773 | babel-plugin-transform-function-bind "^6.22.0" 774 | babel-preset-stage-1 "^6.24.1" 775 | 776 | babel-preset-stage-1@^6.24.1: 777 | version "6.24.1" 778 | resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" 779 | dependencies: 780 | babel-plugin-transform-class-constructor-call "^6.24.1" 781 | babel-plugin-transform-export-extensions "^6.22.0" 782 | babel-preset-stage-2 "^6.24.1" 783 | 784 | babel-preset-stage-2@^6.24.1: 785 | version "6.24.1" 786 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" 787 | dependencies: 788 | babel-plugin-syntax-dynamic-import "^6.18.0" 789 | babel-plugin-transform-class-properties "^6.24.1" 790 | babel-plugin-transform-decorators "^6.24.1" 791 | babel-preset-stage-3 "^6.24.1" 792 | 793 | babel-preset-stage-3@^6.24.1: 794 | version "6.24.1" 795 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" 796 | dependencies: 797 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 798 | babel-plugin-transform-async-generator-functions "^6.24.1" 799 | babel-plugin-transform-async-to-generator "^6.24.1" 800 | babel-plugin-transform-exponentiation-operator "^6.24.1" 801 | babel-plugin-transform-object-rest-spread "^6.22.0" 802 | 803 | babel-register@^6.26.0: 804 | version "6.26.0" 805 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 806 | dependencies: 807 | babel-core "^6.26.0" 808 | babel-runtime "^6.26.0" 809 | core-js "^2.5.0" 810 | home-or-tmp "^2.0.0" 811 | lodash "^4.17.4" 812 | mkdirp "^0.5.1" 813 | source-map-support "^0.4.15" 814 | 815 | babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@~6.26.0: 816 | version "6.26.0" 817 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 818 | dependencies: 819 | core-js "^2.4.0" 820 | regenerator-runtime "^0.11.0" 821 | 822 | babel-template@^6.24.1, babel-template@^6.26.0: 823 | version "6.26.0" 824 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 825 | dependencies: 826 | babel-runtime "^6.26.0" 827 | babel-traverse "^6.26.0" 828 | babel-types "^6.26.0" 829 | babylon "^6.18.0" 830 | lodash "^4.17.4" 831 | 832 | babel-traverse@^6.24.1, babel-traverse@^6.26.0: 833 | version "6.26.0" 834 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 835 | dependencies: 836 | babel-code-frame "^6.26.0" 837 | babel-messages "^6.23.0" 838 | babel-runtime "^6.26.0" 839 | babel-types "^6.26.0" 840 | babylon "^6.18.0" 841 | debug "^2.6.8" 842 | globals "^9.18.0" 843 | invariant "^2.2.2" 844 | lodash "^4.17.4" 845 | 846 | babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: 847 | version "6.26.0" 848 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 849 | dependencies: 850 | babel-runtime "^6.26.0" 851 | esutils "^2.0.2" 852 | lodash "^4.17.4" 853 | to-fast-properties "^1.0.3" 854 | 855 | babylon@^6.18.0: 856 | version "6.18.0" 857 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 858 | 859 | balanced-match@^1.0.0: 860 | version "1.0.0" 861 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 862 | 863 | big.js@^3.1.3: 864 | version "3.2.0" 865 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" 866 | 867 | binary-extensions@^1.0.0: 868 | version "1.11.0" 869 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" 870 | 871 | brace-expansion@^1.1.7: 872 | version "1.1.11" 873 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 874 | dependencies: 875 | balanced-match "^1.0.0" 876 | concat-map "0.0.1" 877 | 878 | braces@^1.8.2: 879 | version "1.8.5" 880 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 881 | dependencies: 882 | expand-range "^1.8.1" 883 | preserve "^0.2.0" 884 | repeat-element "^1.1.2" 885 | 886 | brcast@^3.0.1: 887 | version "3.0.1" 888 | resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd" 889 | 890 | chalk@^1.1.3: 891 | version "1.1.3" 892 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 893 | dependencies: 894 | ansi-styles "^2.2.1" 895 | escape-string-regexp "^1.0.2" 896 | has-ansi "^2.0.0" 897 | strip-ansi "^3.0.0" 898 | supports-color "^2.0.0" 899 | 900 | chalk@^2.4.1: 901 | version "2.4.1" 902 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 903 | dependencies: 904 | ansi-styles "^3.2.1" 905 | escape-string-regexp "^1.0.5" 906 | supports-color "^5.3.0" 907 | 908 | chalk@~0.4.0: 909 | version "0.4.0" 910 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" 911 | dependencies: 912 | ansi-styles "~1.0.0" 913 | has-color "~0.1.0" 914 | strip-ansi "~0.1.0" 915 | 916 | change-emitter@^0.1.2: 917 | version "0.1.6" 918 | resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" 919 | 920 | chokidar@^1.6.1: 921 | version "1.7.0" 922 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 923 | dependencies: 924 | anymatch "^1.3.0" 925 | async-each "^1.0.0" 926 | glob-parent "^2.0.0" 927 | inherits "^2.0.1" 928 | is-binary-path "^1.0.0" 929 | is-glob "^2.0.0" 930 | path-is-absolute "^1.0.0" 931 | readdirp "^2.0.0" 932 | optionalDependencies: 933 | fsevents "^1.0.0" 934 | 935 | chownr@^1.0.1: 936 | version "1.0.1" 937 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 938 | 939 | classnames@^2.2.5, classnames@~2.2.5: 940 | version "2.2.6" 941 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" 942 | 943 | code-point-at@^1.0.0: 944 | version "1.1.0" 945 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 946 | 947 | color-convert@^1.9.0: 948 | version "1.9.2" 949 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" 950 | dependencies: 951 | color-name "1.1.1" 952 | 953 | color-name@1.1.1: 954 | version "1.1.1" 955 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" 956 | 957 | commander@^2.11.0: 958 | version "2.16.0" 959 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" 960 | 961 | commondir@^1.0.1: 962 | version "1.0.1" 963 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 964 | 965 | concat-map@0.0.1: 966 | version "0.0.1" 967 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 968 | 969 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 970 | version "1.1.0" 971 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 972 | 973 | convert-source-map@^1.5.0, convert-source-map@^1.5.1: 974 | version "1.5.1" 975 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 976 | 977 | core-js@^1.0.0: 978 | version "1.2.7" 979 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" 980 | 981 | core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: 982 | version "2.5.7" 983 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" 984 | 985 | core-util-is@~1.0.0: 986 | version "1.0.2" 987 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 988 | 989 | css-vendor@^0.3.8: 990 | version "0.3.8" 991 | resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-0.3.8.tgz#6421cfd3034ce664fe7673972fd0119fc28941fa" 992 | dependencies: 993 | is-in-browser "^1.0.2" 994 | 995 | csstype@^2.0.0, csstype@^2.2.0, csstype@^2.5.2: 996 | version "2.5.6" 997 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.6.tgz#2ae1db2319642d8b80a668d2d025c6196071e788" 998 | 999 | debounce@^1.1.0: 1000 | version "1.1.0" 1001 | resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.1.0.tgz#6a1a4ee2a9dc4b7c24bb012558dbcdb05b37f408" 1002 | 1003 | debug@^2.1.2, debug@^2.6.8, debug@^2.6.9: 1004 | version "2.6.9" 1005 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1006 | dependencies: 1007 | ms "2.0.0" 1008 | 1009 | decode-uri-component@^0.2.0: 1010 | version "0.2.0" 1011 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 1012 | 1013 | deep-equal@^1.0.1: 1014 | version "1.0.1" 1015 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 1016 | 1017 | deep-extend@^0.6.0: 1018 | version "0.6.0" 1019 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 1020 | 1021 | deepmerge@^2.0.1: 1022 | version "2.1.1" 1023 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.1.tgz#e862b4e45ea0555072bf51e7fd0d9845170ae768" 1024 | 1025 | define-properties@^1.1.2: 1026 | version "1.1.2" 1027 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 1028 | dependencies: 1029 | foreach "^2.0.5" 1030 | object-keys "^1.0.8" 1031 | 1032 | delegates@^1.0.0: 1033 | version "1.0.0" 1034 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1035 | 1036 | detect-indent@^4.0.0: 1037 | version "4.0.0" 1038 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1039 | dependencies: 1040 | repeating "^2.0.0" 1041 | 1042 | detect-indent@^5.0.0: 1043 | version "5.0.0" 1044 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" 1045 | 1046 | detect-libc@^1.0.2: 1047 | version "1.0.3" 1048 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 1049 | 1050 | diacritic@0.0.2: 1051 | version "0.0.2" 1052 | resolved "https://registry.yarnpkg.com/diacritic/-/diacritic-0.0.2.tgz#fc2a887b5a5bc0a0a854fb614c7c2f209061ee04" 1053 | 1054 | dom-helpers@^3.2.1, dom-helpers@^3.3.1: 1055 | version "3.3.1" 1056 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" 1057 | 1058 | emojis-list@^2.0.0: 1059 | version "2.1.0" 1060 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 1061 | 1062 | encoding@^0.1.11: 1063 | version "0.1.12" 1064 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" 1065 | dependencies: 1066 | iconv-lite "~0.4.13" 1067 | 1068 | es-abstract@^1.5.0: 1069 | version "1.12.0" 1070 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" 1071 | dependencies: 1072 | es-to-primitive "^1.1.1" 1073 | function-bind "^1.1.1" 1074 | has "^1.0.1" 1075 | is-callable "^1.1.3" 1076 | is-regex "^1.0.4" 1077 | 1078 | es-to-primitive@^1.1.1: 1079 | version "1.1.1" 1080 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 1081 | dependencies: 1082 | is-callable "^1.1.1" 1083 | is-date-object "^1.0.1" 1084 | is-symbol "^1.0.1" 1085 | 1086 | es6-error@^4.1.1: 1087 | version "4.1.1" 1088 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 1089 | 1090 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 1091 | version "1.0.5" 1092 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1093 | 1094 | esutils@^2.0.2: 1095 | version "2.0.2" 1096 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1097 | 1098 | expand-brackets@^0.1.4: 1099 | version "0.1.5" 1100 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1101 | dependencies: 1102 | is-posix-bracket "^0.1.0" 1103 | 1104 | expand-range@^1.8.1: 1105 | version "1.8.2" 1106 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1107 | dependencies: 1108 | fill-range "^2.1.0" 1109 | 1110 | extglob@^0.3.1: 1111 | version "0.3.2" 1112 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1113 | dependencies: 1114 | is-extglob "^1.0.0" 1115 | 1116 | fbjs@^0.8.1, fbjs@^0.8.16: 1117 | version "0.8.17" 1118 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" 1119 | dependencies: 1120 | core-js "^1.0.0" 1121 | isomorphic-fetch "^2.1.1" 1122 | loose-envify "^1.0.0" 1123 | object-assign "^4.1.0" 1124 | promise "^7.1.1" 1125 | setimmediate "^1.0.5" 1126 | ua-parser-js "^0.7.18" 1127 | 1128 | filename-regex@^2.0.0: 1129 | version "2.0.1" 1130 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1131 | 1132 | fill-range@^2.1.0: 1133 | version "2.2.4" 1134 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 1135 | dependencies: 1136 | is-number "^2.1.0" 1137 | isobject "^2.0.0" 1138 | randomatic "^3.0.0" 1139 | repeat-element "^1.1.2" 1140 | repeat-string "^1.5.2" 1141 | 1142 | find-cache-dir@^1.0.0: 1143 | version "1.0.0" 1144 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" 1145 | dependencies: 1146 | commondir "^1.0.1" 1147 | make-dir "^1.0.0" 1148 | pkg-dir "^2.0.0" 1149 | 1150 | find-cache-dir@^2.0.0: 1151 | version "2.0.0" 1152 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" 1153 | dependencies: 1154 | commondir "^1.0.1" 1155 | make-dir "^1.0.0" 1156 | pkg-dir "^3.0.0" 1157 | 1158 | find-up@^2.1.0: 1159 | version "2.1.0" 1160 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1161 | dependencies: 1162 | locate-path "^2.0.0" 1163 | 1164 | find-up@^3.0.0: 1165 | version "3.0.0" 1166 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1167 | dependencies: 1168 | locate-path "^3.0.0" 1169 | 1170 | for-each@^0.3.2: 1171 | version "0.3.3" 1172 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 1173 | dependencies: 1174 | is-callable "^1.1.3" 1175 | 1176 | for-in@^1.0.1: 1177 | version "1.0.2" 1178 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1179 | 1180 | for-own@^0.1.4: 1181 | version "0.1.5" 1182 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1183 | dependencies: 1184 | for-in "^1.0.1" 1185 | 1186 | foreach@^2.0.5: 1187 | version "2.0.5" 1188 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 1189 | 1190 | fs-minipass@^1.2.5: 1191 | version "1.2.5" 1192 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 1193 | dependencies: 1194 | minipass "^2.2.1" 1195 | 1196 | fs-readdir-recursive@^1.0.0: 1197 | version "1.1.0" 1198 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" 1199 | 1200 | fs.realpath@^1.0.0: 1201 | version "1.0.0" 1202 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1203 | 1204 | fsevents@^1.0.0: 1205 | version "1.2.4" 1206 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 1207 | dependencies: 1208 | nan "^2.9.2" 1209 | node-pre-gyp "^0.10.0" 1210 | 1211 | function-bind@^1.0.2, function-bind@^1.1.1: 1212 | version "1.1.1" 1213 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1214 | 1215 | gauge@~2.7.3: 1216 | version "2.7.4" 1217 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1218 | dependencies: 1219 | aproba "^1.0.3" 1220 | console-control-strings "^1.0.0" 1221 | has-unicode "^2.0.0" 1222 | object-assign "^4.1.0" 1223 | signal-exit "^3.0.0" 1224 | string-width "^1.0.1" 1225 | strip-ansi "^3.0.1" 1226 | wide-align "^1.1.0" 1227 | 1228 | glob-base@^0.3.0: 1229 | version "0.3.0" 1230 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1231 | dependencies: 1232 | glob-parent "^2.0.0" 1233 | is-glob "^2.0.0" 1234 | 1235 | glob-parent@^2.0.0: 1236 | version "2.0.0" 1237 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1238 | dependencies: 1239 | is-glob "^2.0.0" 1240 | 1241 | glob@^7.0.5, glob@^7.1.2: 1242 | version "7.1.2" 1243 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1244 | dependencies: 1245 | fs.realpath "^1.0.0" 1246 | inflight "^1.0.4" 1247 | inherits "2" 1248 | minimatch "^3.0.4" 1249 | once "^1.3.0" 1250 | path-is-absolute "^1.0.0" 1251 | 1252 | globals@^9.18.0: 1253 | version "9.18.0" 1254 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1255 | 1256 | graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: 1257 | version "4.1.11" 1258 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1259 | 1260 | hard-source-webpack-plugin@^0.11.1: 1261 | version "0.11.1" 1262 | resolved "https://registry.yarnpkg.com/hard-source-webpack-plugin/-/hard-source-webpack-plugin-0.11.1.tgz#3b2355776a5b7a430a36554f278b51a63f6f4eb9" 1263 | dependencies: 1264 | chalk "^2.4.1" 1265 | find-cache-dir "^2.0.0" 1266 | jsonlint "^1.6.3" 1267 | lodash "^4.15.0" 1268 | mkdirp "^0.5.1" 1269 | node-object-hash "^1.2.0" 1270 | pkg-dir "^3.0.0" 1271 | rimraf "^2.6.2" 1272 | tapable "^1.0.0-beta.5" 1273 | webpack-sources "^1.0.1" 1274 | write-json-file "^2.3.0" 1275 | 1276 | has-ansi@^2.0.0: 1277 | version "2.0.0" 1278 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1279 | dependencies: 1280 | ansi-regex "^2.0.0" 1281 | 1282 | has-color@~0.1.0: 1283 | version "0.1.7" 1284 | resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" 1285 | 1286 | has-flag@^3.0.0: 1287 | version "3.0.0" 1288 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1289 | 1290 | has-unicode@^2.0.0: 1291 | version "2.0.1" 1292 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1293 | 1294 | has@^1.0.1: 1295 | version "1.0.3" 1296 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1297 | dependencies: 1298 | function-bind "^1.1.1" 1299 | 1300 | history@^4.7.2: 1301 | version "4.7.2" 1302 | resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" 1303 | dependencies: 1304 | invariant "^2.2.1" 1305 | loose-envify "^1.2.0" 1306 | resolve-pathname "^2.2.0" 1307 | value-equal "^0.4.0" 1308 | warning "^3.0.0" 1309 | 1310 | hoist-non-react-statics@^2.3.0, hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: 1311 | version "2.5.5" 1312 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" 1313 | 1314 | home-or-tmp@^2.0.0: 1315 | version "2.0.0" 1316 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1317 | dependencies: 1318 | os-homedir "^1.0.0" 1319 | os-tmpdir "^1.0.1" 1320 | 1321 | hyphenate-style-name@^1.0.2: 1322 | version "1.0.2" 1323 | resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" 1324 | 1325 | iconv-lite@^0.4.4, iconv-lite@~0.4.13: 1326 | version "0.4.23" 1327 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" 1328 | dependencies: 1329 | safer-buffer ">= 2.1.2 < 3" 1330 | 1331 | ignore-walk@^3.0.1: 1332 | version "3.0.1" 1333 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1334 | dependencies: 1335 | minimatch "^3.0.4" 1336 | 1337 | imurmurhash@^0.1.4: 1338 | version "0.1.4" 1339 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1340 | 1341 | indefinite-observable@^1.0.1: 1342 | version "1.0.1" 1343 | resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-1.0.1.tgz#09915423cc8d6f7eb1cb7882ad134633c9a6edc3" 1344 | dependencies: 1345 | symbol-observable "1.0.4" 1346 | 1347 | inflection@~1.12.0: 1348 | version "1.12.0" 1349 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" 1350 | 1351 | inflight@^1.0.4: 1352 | version "1.0.6" 1353 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1354 | dependencies: 1355 | once "^1.3.0" 1356 | wrappy "1" 1357 | 1358 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1359 | version "2.0.3" 1360 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1361 | 1362 | ini@~1.3.0: 1363 | version "1.3.5" 1364 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1365 | 1366 | invariant@^2.0.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: 1367 | version "2.2.4" 1368 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1369 | dependencies: 1370 | loose-envify "^1.0.0" 1371 | 1372 | is-binary-path@^1.0.0: 1373 | version "1.0.1" 1374 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1375 | dependencies: 1376 | binary-extensions "^1.0.0" 1377 | 1378 | is-buffer@^1.1.5: 1379 | version "1.1.6" 1380 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1381 | 1382 | is-callable@^1.1.1, is-callable@^1.1.3: 1383 | version "1.1.4" 1384 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1385 | 1386 | is-date-object@^1.0.1: 1387 | version "1.0.1" 1388 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1389 | 1390 | is-dotfile@^1.0.0: 1391 | version "1.0.3" 1392 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1393 | 1394 | is-equal-shallow@^0.1.3: 1395 | version "0.1.3" 1396 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1397 | dependencies: 1398 | is-primitive "^2.0.0" 1399 | 1400 | is-extendable@^0.1.1: 1401 | version "0.1.1" 1402 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1403 | 1404 | is-extglob@^1.0.0: 1405 | version "1.0.0" 1406 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1407 | 1408 | is-finite@^1.0.0: 1409 | version "1.0.2" 1410 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1411 | dependencies: 1412 | number-is-nan "^1.0.0" 1413 | 1414 | is-fullwidth-code-point@^1.0.0: 1415 | version "1.0.0" 1416 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1417 | dependencies: 1418 | number-is-nan "^1.0.0" 1419 | 1420 | is-fullwidth-code-point@^2.0.0: 1421 | version "2.0.0" 1422 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1423 | 1424 | is-function@^1.0.1: 1425 | version "1.0.1" 1426 | resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" 1427 | 1428 | is-glob@^2.0.0, is-glob@^2.0.1: 1429 | version "2.0.1" 1430 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1431 | dependencies: 1432 | is-extglob "^1.0.0" 1433 | 1434 | is-in-browser@^1.0.2, is-in-browser@^1.1.3: 1435 | version "1.1.3" 1436 | resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" 1437 | 1438 | is-number@^2.1.0: 1439 | version "2.1.0" 1440 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1441 | dependencies: 1442 | kind-of "^3.0.2" 1443 | 1444 | is-number@^4.0.0: 1445 | version "4.0.0" 1446 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 1447 | 1448 | is-plain-obj@^1.0.0: 1449 | version "1.1.0" 1450 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1451 | 1452 | is-plain-object@^2.0.1, is-plain-object@^2.0.4: 1453 | version "2.0.4" 1454 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1455 | dependencies: 1456 | isobject "^3.0.1" 1457 | 1458 | is-posix-bracket@^0.1.0: 1459 | version "0.1.1" 1460 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1461 | 1462 | is-primitive@^2.0.0: 1463 | version "2.0.0" 1464 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1465 | 1466 | is-promise@^2.1.0: 1467 | version "2.1.0" 1468 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1469 | 1470 | is-regex@^1.0.4: 1471 | version "1.0.4" 1472 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1473 | dependencies: 1474 | has "^1.0.1" 1475 | 1476 | is-stream@^1.0.1: 1477 | version "1.1.0" 1478 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1479 | 1480 | is-symbol@^1.0.1: 1481 | version "1.0.1" 1482 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 1483 | 1484 | isarray@0.0.1: 1485 | version "0.0.1" 1486 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1487 | 1488 | isarray@1.0.0, isarray@~1.0.0: 1489 | version "1.0.0" 1490 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1491 | 1492 | isobject@^2.0.0: 1493 | version "2.1.0" 1494 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1495 | dependencies: 1496 | isarray "1.0.0" 1497 | 1498 | isobject@^3.0.1: 1499 | version "3.0.1" 1500 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1501 | 1502 | isomorphic-fetch@^2.1.1: 1503 | version "2.2.1" 1504 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" 1505 | dependencies: 1506 | node-fetch "^1.0.1" 1507 | whatwg-fetch ">=0.10.0" 1508 | 1509 | "js-tokens@^3.0.0 || ^4.0.0": 1510 | version "4.0.0" 1511 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1512 | 1513 | js-tokens@^3.0.2: 1514 | version "3.0.2" 1515 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1516 | 1517 | jsesc@^1.3.0: 1518 | version "1.3.0" 1519 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1520 | 1521 | jsesc@~0.5.0: 1522 | version "0.5.0" 1523 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1524 | 1525 | json5@^0.5.0, json5@^0.5.1: 1526 | version "0.5.1" 1527 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1528 | 1529 | jsonlint@^1.6.3: 1530 | version "1.6.3" 1531 | resolved "https://registry.yarnpkg.com/jsonlint/-/jsonlint-1.6.3.tgz#cb5e31efc0b78291d0d862fbef05900adf212988" 1532 | dependencies: 1533 | JSV "^4.0.x" 1534 | nomnom "^1.5.x" 1535 | 1536 | jss-camel-case@^6.0.0, jss-camel-case@^6.1.0: 1537 | version "6.1.0" 1538 | resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" 1539 | dependencies: 1540 | hyphenate-style-name "^1.0.2" 1541 | 1542 | jss-compose@^5.0.0: 1543 | version "5.0.0" 1544 | resolved "https://registry.yarnpkg.com/jss-compose/-/jss-compose-5.0.0.tgz#ce01b2e4521d65c37ea42cf49116e5f7ab596484" 1545 | dependencies: 1546 | warning "^3.0.0" 1547 | 1548 | jss-default-unit@^8.0.2: 1549 | version "8.0.2" 1550 | resolved "https://registry.yarnpkg.com/jss-default-unit/-/jss-default-unit-8.0.2.tgz#cc1e889bae4c0b9419327b314ab1c8e2826890e6" 1551 | 1552 | jss-expand@^5.3.0: 1553 | version "5.3.0" 1554 | resolved "https://registry.yarnpkg.com/jss-expand/-/jss-expand-5.3.0.tgz#02be076efe650125c842f5bb6fb68786fe441ed6" 1555 | 1556 | jss-extend@^6.2.0: 1557 | version "6.2.0" 1558 | resolved "https://registry.yarnpkg.com/jss-extend/-/jss-extend-6.2.0.tgz#4af09d0b72fb98ee229970f8ca852fec1ca2a8dc" 1559 | dependencies: 1560 | warning "^3.0.0" 1561 | 1562 | jss-global@^3.0.0: 1563 | version "3.0.0" 1564 | resolved "https://registry.yarnpkg.com/jss-global/-/jss-global-3.0.0.tgz#e19e5c91ab2b96353c227e30aa2cbd938cdaafa2" 1565 | 1566 | jss-nested@^6.0.1: 1567 | version "6.0.1" 1568 | resolved "https://registry.yarnpkg.com/jss-nested/-/jss-nested-6.0.1.tgz#ef992b79d6e8f63d939c4397b9d99b5cbbe824ca" 1569 | dependencies: 1570 | warning "^3.0.0" 1571 | 1572 | jss-preset-default@^4.3.0: 1573 | version "4.5.0" 1574 | resolved "https://registry.yarnpkg.com/jss-preset-default/-/jss-preset-default-4.5.0.tgz#d3a457012ccd7a551312014e394c23c4b301cadd" 1575 | dependencies: 1576 | jss-camel-case "^6.1.0" 1577 | jss-compose "^5.0.0" 1578 | jss-default-unit "^8.0.2" 1579 | jss-expand "^5.3.0" 1580 | jss-extend "^6.2.0" 1581 | jss-global "^3.0.0" 1582 | jss-nested "^6.0.1" 1583 | jss-props-sort "^6.0.0" 1584 | jss-template "^1.0.1" 1585 | jss-vendor-prefixer "^7.0.0" 1586 | 1587 | jss-props-sort@^6.0.0: 1588 | version "6.0.0" 1589 | resolved "https://registry.yarnpkg.com/jss-props-sort/-/jss-props-sort-6.0.0.tgz#9105101a3b5071fab61e2d85ea74cc22e9b16323" 1590 | 1591 | jss-template@^1.0.1: 1592 | version "1.0.1" 1593 | resolved "https://registry.yarnpkg.com/jss-template/-/jss-template-1.0.1.tgz#09aed9d86cc547b07f53ef355d7e1777f7da430a" 1594 | dependencies: 1595 | warning "^3.0.0" 1596 | 1597 | jss-vendor-prefixer@^7.0.0: 1598 | version "7.0.0" 1599 | resolved "https://registry.yarnpkg.com/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz#0166729650015ef19d9f02437c73667231605c71" 1600 | dependencies: 1601 | css-vendor "^0.3.8" 1602 | 1603 | jss@^9.3.3, jss@^9.7.0: 1604 | version "9.8.7" 1605 | resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.7.tgz#ed9763fc0f2f0260fc8260dac657af61e622ce05" 1606 | dependencies: 1607 | is-in-browser "^1.1.3" 1608 | symbol-observable "^1.1.0" 1609 | warning "^3.0.0" 1610 | 1611 | keycode@^2.1.9: 1612 | version "2.2.0" 1613 | resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" 1614 | 1615 | kind-of@^3.0.2: 1616 | version "3.2.2" 1617 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1618 | dependencies: 1619 | is-buffer "^1.1.5" 1620 | 1621 | kind-of@^6.0.0: 1622 | version "6.0.2" 1623 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1624 | 1625 | loader-utils@^1.0.2: 1626 | version "1.1.0" 1627 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 1628 | dependencies: 1629 | big.js "^3.1.3" 1630 | emojis-list "^2.0.0" 1631 | json5 "^0.5.0" 1632 | 1633 | locate-path@^2.0.0: 1634 | version "2.0.0" 1635 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1636 | dependencies: 1637 | p-locate "^2.0.0" 1638 | path-exists "^3.0.0" 1639 | 1640 | locate-path@^3.0.0: 1641 | version "3.0.0" 1642 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1643 | dependencies: 1644 | p-locate "^3.0.0" 1645 | path-exists "^3.0.0" 1646 | 1647 | lodash-es@^4.17.5, lodash-es@^4.2.1: 1648 | version "4.17.10" 1649 | resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05" 1650 | 1651 | lodash@^4.15.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.5: 1652 | version "4.17.10" 1653 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 1654 | 1655 | loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: 1656 | version "1.4.0" 1657 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1658 | dependencies: 1659 | js-tokens "^3.0.0 || ^4.0.0" 1660 | 1661 | make-dir@^1.0.0: 1662 | version "1.3.0" 1663 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1664 | dependencies: 1665 | pify "^3.0.0" 1666 | 1667 | math-random@^1.0.1: 1668 | version "1.0.1" 1669 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" 1670 | 1671 | micromatch@^2.1.5: 1672 | version "2.3.11" 1673 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1674 | dependencies: 1675 | arr-diff "^2.0.0" 1676 | array-unique "^0.2.1" 1677 | braces "^1.8.2" 1678 | expand-brackets "^0.1.4" 1679 | extglob "^0.3.1" 1680 | filename-regex "^2.0.0" 1681 | is-extglob "^1.0.0" 1682 | is-glob "^2.0.1" 1683 | kind-of "^3.0.2" 1684 | normalize-path "^2.0.1" 1685 | object.omit "^2.0.0" 1686 | parse-glob "^3.0.4" 1687 | regex-cache "^0.4.2" 1688 | 1689 | minimatch@^3.0.2, minimatch@^3.0.4: 1690 | version "3.0.4" 1691 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1692 | dependencies: 1693 | brace-expansion "^1.1.7" 1694 | 1695 | minimist@0.0.8: 1696 | version "0.0.8" 1697 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1698 | 1699 | minimist@^1.2.0: 1700 | version "1.2.0" 1701 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1702 | 1703 | minipass@^2.2.1, minipass@^2.3.3: 1704 | version "2.3.3" 1705 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" 1706 | dependencies: 1707 | safe-buffer "^5.1.2" 1708 | yallist "^3.0.0" 1709 | 1710 | minizlib@^1.1.0: 1711 | version "1.1.0" 1712 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" 1713 | dependencies: 1714 | minipass "^2.2.1" 1715 | 1716 | mkdirp@^0.5.0, mkdirp@^0.5.1: 1717 | version "0.5.1" 1718 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1719 | dependencies: 1720 | minimist "0.0.8" 1721 | 1722 | ms@2.0.0: 1723 | version "2.0.0" 1724 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1725 | 1726 | nan@^2.9.2: 1727 | version "2.10.0" 1728 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" 1729 | 1730 | needle@^2.2.1: 1731 | version "2.2.1" 1732 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" 1733 | dependencies: 1734 | debug "^2.1.2" 1735 | iconv-lite "^0.4.4" 1736 | sax "^1.2.4" 1737 | 1738 | node-fetch@^1.0.1: 1739 | version "1.7.3" 1740 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 1741 | dependencies: 1742 | encoding "^0.1.11" 1743 | is-stream "^1.0.1" 1744 | 1745 | node-object-hash@^1.2.0: 1746 | version "1.4.1" 1747 | resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-1.4.1.tgz#de968492e20c493b8bbc25ad2ee828265fd60934" 1748 | 1749 | node-polyglot@2.2.2: 1750 | version "2.2.2" 1751 | resolved "https://registry.yarnpkg.com/node-polyglot/-/node-polyglot-2.2.2.tgz#1a3f76d7392f836ea0823836ede817e6ea6ec26c" 1752 | dependencies: 1753 | for-each "^0.3.2" 1754 | has "^1.0.1" 1755 | string.prototype.trim "^1.1.2" 1756 | warning "^3.0.0" 1757 | 1758 | node-pre-gyp@^0.10.0: 1759 | version "0.10.3" 1760 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" 1761 | dependencies: 1762 | detect-libc "^1.0.2" 1763 | mkdirp "^0.5.1" 1764 | needle "^2.2.1" 1765 | nopt "^4.0.1" 1766 | npm-packlist "^1.1.6" 1767 | npmlog "^4.0.2" 1768 | rc "^1.2.7" 1769 | rimraf "^2.6.1" 1770 | semver "^5.3.0" 1771 | tar "^4" 1772 | 1773 | nomnom@^1.5.x: 1774 | version "1.8.1" 1775 | resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" 1776 | dependencies: 1777 | chalk "~0.4.0" 1778 | underscore "~1.6.0" 1779 | 1780 | nopt@^4.0.1: 1781 | version "4.0.1" 1782 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1783 | dependencies: 1784 | abbrev "1" 1785 | osenv "^0.1.4" 1786 | 1787 | normalize-path@^2.0.0, normalize-path@^2.0.1: 1788 | version "2.1.1" 1789 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1790 | dependencies: 1791 | remove-trailing-separator "^1.0.1" 1792 | 1793 | normalize-scroll-left@^0.1.2: 1794 | version "0.1.2" 1795 | resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz#6b79691ba79eb5fb107fa5edfbdc06b55caee2aa" 1796 | 1797 | npm-bundled@^1.0.1: 1798 | version "1.0.3" 1799 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" 1800 | 1801 | npm-packlist@^1.1.6: 1802 | version "1.1.10" 1803 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" 1804 | dependencies: 1805 | ignore-walk "^3.0.1" 1806 | npm-bundled "^1.0.1" 1807 | 1808 | npmlog@^4.0.2: 1809 | version "4.1.2" 1810 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1811 | dependencies: 1812 | are-we-there-yet "~1.1.2" 1813 | console-control-strings "~1.1.0" 1814 | gauge "~2.7.3" 1815 | set-blocking "~2.0.0" 1816 | 1817 | number-is-nan@^1.0.0: 1818 | version "1.0.1" 1819 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1820 | 1821 | object-assign@^3.0.0: 1822 | version "3.0.0" 1823 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" 1824 | 1825 | object-assign@^4.1.0, object-assign@^4.1.1: 1826 | version "4.1.1" 1827 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1828 | 1829 | object-keys@^1.0.8: 1830 | version "1.0.12" 1831 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" 1832 | 1833 | object.omit@^2.0.0: 1834 | version "2.0.1" 1835 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1836 | dependencies: 1837 | for-own "^0.1.4" 1838 | is-extendable "^0.1.1" 1839 | 1840 | once@^1.3.0: 1841 | version "1.4.0" 1842 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1843 | dependencies: 1844 | wrappy "1" 1845 | 1846 | os-homedir@^1.0.0: 1847 | version "1.0.2" 1848 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1849 | 1850 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 1851 | version "1.0.2" 1852 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1853 | 1854 | osenv@^0.1.4: 1855 | version "0.1.5" 1856 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1857 | dependencies: 1858 | os-homedir "^1.0.0" 1859 | os-tmpdir "^1.0.0" 1860 | 1861 | output-file-sync@^1.1.2: 1862 | version "1.1.2" 1863 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" 1864 | dependencies: 1865 | graceful-fs "^4.1.4" 1866 | mkdirp "^0.5.1" 1867 | object-assign "^4.1.0" 1868 | 1869 | p-limit@^1.1.0: 1870 | version "1.3.0" 1871 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1872 | dependencies: 1873 | p-try "^1.0.0" 1874 | 1875 | p-limit@^2.0.0: 1876 | version "2.0.0" 1877 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" 1878 | dependencies: 1879 | p-try "^2.0.0" 1880 | 1881 | p-locate@^2.0.0: 1882 | version "2.0.0" 1883 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1884 | dependencies: 1885 | p-limit "^1.1.0" 1886 | 1887 | p-locate@^3.0.0: 1888 | version "3.0.0" 1889 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1890 | dependencies: 1891 | p-limit "^2.0.0" 1892 | 1893 | p-try@^1.0.0: 1894 | version "1.0.0" 1895 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1896 | 1897 | p-try@^2.0.0: 1898 | version "2.0.0" 1899 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" 1900 | 1901 | parse-glob@^3.0.4: 1902 | version "3.0.4" 1903 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1904 | dependencies: 1905 | glob-base "^0.3.0" 1906 | is-dotfile "^1.0.0" 1907 | is-extglob "^1.0.0" 1908 | is-glob "^2.0.0" 1909 | 1910 | path-exists@^3.0.0: 1911 | version "3.0.0" 1912 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1913 | 1914 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 1915 | version "1.0.1" 1916 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1917 | 1918 | path-to-regexp@^1.7.0: 1919 | version "1.7.0" 1920 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" 1921 | dependencies: 1922 | isarray "0.0.1" 1923 | 1924 | pify@^3.0.0: 1925 | version "3.0.0" 1926 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1927 | 1928 | pkg-dir@^2.0.0: 1929 | version "2.0.0" 1930 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1931 | dependencies: 1932 | find-up "^2.1.0" 1933 | 1934 | pkg-dir@^3.0.0: 1935 | version "3.0.0" 1936 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 1937 | dependencies: 1938 | find-up "^3.0.0" 1939 | 1940 | popper.js@^1.14.1: 1941 | version "1.14.3" 1942 | resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" 1943 | 1944 | preserve@^0.2.0: 1945 | version "0.2.0" 1946 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1947 | 1948 | prettier@^1.13.7: 1949 | version "1.13.7" 1950 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" 1951 | 1952 | private@^0.1.6, private@^0.1.8: 1953 | version "0.1.8" 1954 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 1955 | 1956 | process-nextick-args@~2.0.0: 1957 | version "2.0.0" 1958 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1959 | 1960 | promise@^7.1.1: 1961 | version "7.3.1" 1962 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 1963 | dependencies: 1964 | asap "~2.0.3" 1965 | 1966 | prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@~15.6.1: 1967 | version "15.6.2" 1968 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" 1969 | dependencies: 1970 | loose-envify "^1.3.1" 1971 | object-assign "^4.1.1" 1972 | 1973 | query-string@~5.1.1: 1974 | version "5.1.1" 1975 | resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" 1976 | dependencies: 1977 | decode-uri-component "^0.2.0" 1978 | object-assign "^4.1.0" 1979 | strict-uri-encode "^1.0.0" 1980 | 1981 | ra-core@^2.1.3: 1982 | version "2.1.3" 1983 | resolved "https://registry.yarnpkg.com/ra-core/-/ra-core-2.1.3.tgz#602d09e80fb4340fadd41de148d189114b17d19f" 1984 | dependencies: 1985 | babel-runtime "~6.26.0" 1986 | classnames "~2.2.5" 1987 | inflection "~1.12.0" 1988 | lodash "~4.17.5" 1989 | node-polyglot "2.2.2" 1990 | prop-types "~15.6.1" 1991 | query-string "~5.1.1" 1992 | ra-language-english "^2.1.3" 1993 | react-redux "~5.0.7" 1994 | react-router "~4.2.0" 1995 | react-router-dom "~4.2.2" 1996 | react-router-redux "~5.0.0-alpha.9" 1997 | recompose "~0.26.0" 1998 | redux "~3.7.2" 1999 | redux-form "~7.3.0" 2000 | redux-saga "~0.16.0" 2001 | reselect "~3.0.0" 2002 | warning "~3.0.0" 2003 | 2004 | ra-language-english@^2.1.3: 2005 | version "2.1.3" 2006 | resolved "https://registry.yarnpkg.com/ra-language-english/-/ra-language-english-2.1.3.tgz#c34e280f4052b35210e812d41c7c12f223ed7377" 2007 | 2008 | ra-ui-materialui@^2.1.4: 2009 | version "2.1.4" 2010 | resolved "https://registry.yarnpkg.com/ra-ui-materialui/-/ra-ui-materialui-2.1.4.tgz#ad6b045379566164f1573c09f64c42d1d3e7ab92" 2011 | dependencies: 2012 | "@material-ui/core" "^1.0.0" 2013 | "@material-ui/icons" "^1.0.0" 2014 | autosuggest-highlight "^3.1.1" 2015 | classnames "~2.2.5" 2016 | inflection "~1.12.0" 2017 | lodash "~4.17.5" 2018 | prop-types "~15.6.1" 2019 | ra-core "^2.1.3" 2020 | react-autosuggest "^9.3.2" 2021 | react-dropzone "~4.0.1" 2022 | react-redux "~5.0.7" 2023 | react-router-dom "~4.2.2" 2024 | react-transition-group "^2.2.1" 2025 | recompose "~0.26.0" 2026 | redux "~3.7.2" 2027 | redux-form "~7.3.0" 2028 | 2029 | randomatic@^3.0.0: 2030 | version "3.0.0" 2031 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" 2032 | dependencies: 2033 | is-number "^4.0.0" 2034 | kind-of "^6.0.0" 2035 | math-random "^1.0.1" 2036 | 2037 | rc@^1.2.7: 2038 | version "1.2.8" 2039 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2040 | dependencies: 2041 | deep-extend "^0.6.0" 2042 | ini "~1.3.0" 2043 | minimist "^1.2.0" 2044 | strip-json-comments "~2.0.1" 2045 | 2046 | react-admin@^2.1.1: 2047 | version "2.1.4" 2048 | resolved "https://registry.yarnpkg.com/react-admin/-/react-admin-2.1.4.tgz#9832da48a88277f85e4ae63ba90ea27fb3b3f089" 2049 | dependencies: 2050 | ra-core "^2.1.3" 2051 | ra-language-english "^2.1.3" 2052 | ra-ui-materialui "^2.1.4" 2053 | 2054 | react-autosuggest@^9.3.2: 2055 | version "9.3.4" 2056 | resolved "https://registry.yarnpkg.com/react-autosuggest/-/react-autosuggest-9.3.4.tgz#e47ff800081b2f7c678165bfb7cc84b07f462336" 2057 | dependencies: 2058 | prop-types "^15.5.10" 2059 | react-autowhatever "^10.1.0" 2060 | shallow-equal "^1.0.0" 2061 | 2062 | react-autowhatever@^10.1.0: 2063 | version "10.1.2" 2064 | resolved "https://registry.yarnpkg.com/react-autowhatever/-/react-autowhatever-10.1.2.tgz#200ffc41373b2189e3f6140ac7bdb82363a79fd3" 2065 | dependencies: 2066 | prop-types "^15.5.8" 2067 | react-themeable "^1.1.0" 2068 | section-iterator "^2.0.0" 2069 | 2070 | react-dom@^16.4.1: 2071 | version "16.4.1" 2072 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6" 2073 | dependencies: 2074 | fbjs "^0.8.16" 2075 | loose-envify "^1.1.0" 2076 | object-assign "^4.1.1" 2077 | prop-types "^15.6.0" 2078 | 2079 | react-dropzone@~4.0.1: 2080 | version "4.0.1" 2081 | resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.0.1.tgz#4d71d6f0fc5d7ac8a50dfa46582c96fe35ae3ca4" 2082 | dependencies: 2083 | attr-accept "^1.0.3" 2084 | prop-types "^15.5.7" 2085 | 2086 | react-event-listener@^0.6.0: 2087 | version "0.6.1" 2088 | resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.1.tgz#41c7a80a66b398c27dd511e22712b02f3d4eccca" 2089 | dependencies: 2090 | "@babel/runtime" "^7.0.0-beta.42" 2091 | prop-types "^15.6.0" 2092 | warning "^4.0.1" 2093 | 2094 | react-jss@^8.1.0: 2095 | version "8.6.1" 2096 | resolved "https://registry.yarnpkg.com/react-jss/-/react-jss-8.6.1.tgz#a06e2e1d2c4d91b4d11befda865e6c07fbd75252" 2097 | dependencies: 2098 | hoist-non-react-statics "^2.5.0" 2099 | jss "^9.7.0" 2100 | jss-preset-default "^4.3.0" 2101 | prop-types "^15.6.0" 2102 | theming "^1.3.0" 2103 | 2104 | react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: 2105 | version "3.0.4" 2106 | resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" 2107 | 2108 | react-redux@~5.0.7: 2109 | version "5.0.7" 2110 | resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8" 2111 | dependencies: 2112 | hoist-non-react-statics "^2.5.0" 2113 | invariant "^2.0.0" 2114 | lodash "^4.17.5" 2115 | lodash-es "^4.17.5" 2116 | loose-envify "^1.1.0" 2117 | prop-types "^15.6.0" 2118 | 2119 | react-router-dom@~4.2.2: 2120 | version "4.2.2" 2121 | resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d" 2122 | dependencies: 2123 | history "^4.7.2" 2124 | invariant "^2.2.2" 2125 | loose-envify "^1.3.1" 2126 | prop-types "^15.5.4" 2127 | react-router "^4.2.0" 2128 | warning "^3.0.0" 2129 | 2130 | react-router-redux@~5.0.0-alpha.9: 2131 | version "5.0.0-alpha.9" 2132 | resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz#825431516e0e6f1fd93b8807f6bd595e23ec3d10" 2133 | dependencies: 2134 | history "^4.7.2" 2135 | prop-types "^15.6.0" 2136 | react-router "^4.2.0" 2137 | 2138 | react-router@^4.2.0: 2139 | version "4.3.1" 2140 | resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" 2141 | dependencies: 2142 | history "^4.7.2" 2143 | hoist-non-react-statics "^2.5.0" 2144 | invariant "^2.2.4" 2145 | loose-envify "^1.3.1" 2146 | path-to-regexp "^1.7.0" 2147 | prop-types "^15.6.1" 2148 | warning "^4.0.1" 2149 | 2150 | react-router@~4.2.0: 2151 | version "4.2.0" 2152 | resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986" 2153 | dependencies: 2154 | history "^4.7.2" 2155 | hoist-non-react-statics "^2.3.0" 2156 | invariant "^2.2.2" 2157 | loose-envify "^1.3.1" 2158 | path-to-regexp "^1.7.0" 2159 | prop-types "^15.5.4" 2160 | warning "^3.0.0" 2161 | 2162 | react-themeable@^1.1.0: 2163 | version "1.1.0" 2164 | resolved "https://registry.yarnpkg.com/react-themeable/-/react-themeable-1.1.0.tgz#7d4466dd9b2b5fa75058727825e9f152ba379a0e" 2165 | dependencies: 2166 | object-assign "^3.0.0" 2167 | 2168 | react-transition-group@^2.2.1: 2169 | version "2.4.0" 2170 | resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a" 2171 | dependencies: 2172 | dom-helpers "^3.3.1" 2173 | loose-envify "^1.3.1" 2174 | prop-types "^15.6.2" 2175 | react-lifecycles-compat "^3.0.4" 2176 | 2177 | react@^16.4.1: 2178 | version "16.4.1" 2179 | resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32" 2180 | dependencies: 2181 | fbjs "^0.8.16" 2182 | loose-envify "^1.1.0" 2183 | object-assign "^4.1.1" 2184 | prop-types "^15.6.0" 2185 | 2186 | readable-stream@^2.0.2, readable-stream@^2.0.6: 2187 | version "2.3.6" 2188 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2189 | dependencies: 2190 | core-util-is "~1.0.0" 2191 | inherits "~2.0.3" 2192 | isarray "~1.0.0" 2193 | process-nextick-args "~2.0.0" 2194 | safe-buffer "~5.1.1" 2195 | string_decoder "~1.1.1" 2196 | util-deprecate "~1.0.1" 2197 | 2198 | readdirp@^2.0.0: 2199 | version "2.1.0" 2200 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2201 | dependencies: 2202 | graceful-fs "^4.1.2" 2203 | minimatch "^3.0.2" 2204 | readable-stream "^2.0.2" 2205 | set-immediate-shim "^1.0.1" 2206 | 2207 | "recompose@^0.26.0 || ^0.27.0", recompose@^0.27.0: 2208 | version "0.27.1" 2209 | resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.27.1.tgz#1a49e931f183634516633bbb4f4edbfd3f38a7ba" 2210 | dependencies: 2211 | babel-runtime "^6.26.0" 2212 | change-emitter "^0.1.2" 2213 | fbjs "^0.8.1" 2214 | hoist-non-react-statics "^2.3.1" 2215 | react-lifecycles-compat "^3.0.2" 2216 | symbol-observable "^1.0.4" 2217 | 2218 | recompose@~0.26.0: 2219 | version "0.26.0" 2220 | resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.26.0.tgz#9babff039cb72ba5bd17366d55d7232fbdfb2d30" 2221 | dependencies: 2222 | change-emitter "^0.1.2" 2223 | fbjs "^0.8.1" 2224 | hoist-non-react-statics "^2.3.1" 2225 | symbol-observable "^1.0.4" 2226 | 2227 | redux-form@~7.3.0: 2228 | version "7.3.0" 2229 | resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-7.3.0.tgz#b92ef1639c86a6009b0821aacfc80ad8b5ac8c05" 2230 | dependencies: 2231 | deep-equal "^1.0.1" 2232 | es6-error "^4.1.1" 2233 | hoist-non-react-statics "^2.5.0" 2234 | invariant "^2.2.3" 2235 | is-promise "^2.1.0" 2236 | lodash "^4.17.5" 2237 | lodash-es "^4.17.5" 2238 | prop-types "^15.6.1" 2239 | 2240 | redux-saga@~0.16.0: 2241 | version "0.16.0" 2242 | resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-0.16.0.tgz#0a231db0a1489301dd980f6f2f88d8ced418f724" 2243 | 2244 | redux@~3.7.2: 2245 | version "3.7.2" 2246 | resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" 2247 | dependencies: 2248 | lodash "^4.2.1" 2249 | lodash-es "^4.2.1" 2250 | loose-envify "^1.1.0" 2251 | symbol-observable "^1.0.3" 2252 | 2253 | regenerate@^1.2.1: 2254 | version "1.4.0" 2255 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 2256 | 2257 | regenerator-runtime@^0.10.5: 2258 | version "0.10.5" 2259 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" 2260 | 2261 | regenerator-runtime@^0.11.0: 2262 | version "0.11.1" 2263 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 2264 | 2265 | regenerator-runtime@^0.12.0: 2266 | version "0.12.0" 2267 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.0.tgz#8052ac952d85b10f3425192cd0c53f45cf65c6cb" 2268 | 2269 | regenerator-transform@^0.10.0: 2270 | version "0.10.1" 2271 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" 2272 | dependencies: 2273 | babel-runtime "^6.18.0" 2274 | babel-types "^6.19.0" 2275 | private "^0.1.6" 2276 | 2277 | regex-cache@^0.4.2: 2278 | version "0.4.4" 2279 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 2280 | dependencies: 2281 | is-equal-shallow "^0.1.3" 2282 | 2283 | regexpu-core@^2.0.0: 2284 | version "2.0.0" 2285 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 2286 | dependencies: 2287 | regenerate "^1.2.1" 2288 | regjsgen "^0.2.0" 2289 | regjsparser "^0.1.4" 2290 | 2291 | regjsgen@^0.2.0: 2292 | version "0.2.0" 2293 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 2294 | 2295 | regjsparser@^0.1.4: 2296 | version "0.1.5" 2297 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 2298 | dependencies: 2299 | jsesc "~0.5.0" 2300 | 2301 | remove-trailing-separator@^1.0.1: 2302 | version "1.1.0" 2303 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2304 | 2305 | repeat-element@^1.1.2: 2306 | version "1.1.2" 2307 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2308 | 2309 | repeat-string@^1.5.2: 2310 | version "1.6.1" 2311 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2312 | 2313 | repeating@^2.0.0: 2314 | version "2.0.1" 2315 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2316 | dependencies: 2317 | is-finite "^1.0.0" 2318 | 2319 | reselect@~3.0.0: 2320 | version "3.0.1" 2321 | resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" 2322 | 2323 | resolve-pathname@^2.2.0: 2324 | version "2.2.0" 2325 | resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" 2326 | 2327 | rimraf@^2.6.1, rimraf@^2.6.2: 2328 | version "2.6.2" 2329 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2330 | dependencies: 2331 | glob "^7.0.5" 2332 | 2333 | safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2334 | version "5.1.2" 2335 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2336 | 2337 | "safer-buffer@>= 2.1.2 < 3": 2338 | version "2.1.2" 2339 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2340 | 2341 | sax@^1.2.4: 2342 | version "1.2.4" 2343 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2344 | 2345 | section-iterator@^2.0.0: 2346 | version "2.0.0" 2347 | resolved "https://registry.yarnpkg.com/section-iterator/-/section-iterator-2.0.0.tgz#bf444d7afeeb94ad43c39ad2fb26151627ccba2a" 2348 | 2349 | semver@^5.3.0: 2350 | version "5.5.0" 2351 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 2352 | 2353 | set-blocking@~2.0.0: 2354 | version "2.0.0" 2355 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2356 | 2357 | set-immediate-shim@^1.0.1: 2358 | version "1.0.1" 2359 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2360 | 2361 | setimmediate@^1.0.5: 2362 | version "1.0.5" 2363 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 2364 | 2365 | shallow-equal@^1.0.0: 2366 | version "1.0.0" 2367 | resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.0.0.tgz#508d1838b3de590ab8757b011b25e430900945f7" 2368 | 2369 | signal-exit@^3.0.0, signal-exit@^3.0.2: 2370 | version "3.0.2" 2371 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2372 | 2373 | slash@^1.0.0: 2374 | version "1.0.0" 2375 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 2376 | 2377 | sort-keys@^2.0.0: 2378 | version "2.0.0" 2379 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" 2380 | dependencies: 2381 | is-plain-obj "^1.0.0" 2382 | 2383 | source-list-map@^2.0.0: 2384 | version "2.0.0" 2385 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" 2386 | 2387 | source-map-support@^0.4.15: 2388 | version "0.4.18" 2389 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 2390 | dependencies: 2391 | source-map "^0.5.6" 2392 | 2393 | source-map@^0.5.6, source-map@^0.5.7: 2394 | version "0.5.7" 2395 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2396 | 2397 | source-map@~0.6.1: 2398 | version "0.6.1" 2399 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2400 | 2401 | strict-uri-encode@^1.0.0: 2402 | version "1.1.0" 2403 | resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" 2404 | 2405 | string-width@^1.0.1: 2406 | version "1.0.2" 2407 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2408 | dependencies: 2409 | code-point-at "^1.0.0" 2410 | is-fullwidth-code-point "^1.0.0" 2411 | strip-ansi "^3.0.0" 2412 | 2413 | "string-width@^1.0.2 || 2": 2414 | version "2.1.1" 2415 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2416 | dependencies: 2417 | is-fullwidth-code-point "^2.0.0" 2418 | strip-ansi "^4.0.0" 2419 | 2420 | string.prototype.trim@^1.1.2: 2421 | version "1.1.2" 2422 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" 2423 | dependencies: 2424 | define-properties "^1.1.2" 2425 | es-abstract "^1.5.0" 2426 | function-bind "^1.0.2" 2427 | 2428 | string_decoder@~1.1.1: 2429 | version "1.1.1" 2430 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2431 | dependencies: 2432 | safe-buffer "~5.1.0" 2433 | 2434 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2435 | version "3.0.1" 2436 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2437 | dependencies: 2438 | ansi-regex "^2.0.0" 2439 | 2440 | strip-ansi@^4.0.0: 2441 | version "4.0.0" 2442 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2443 | dependencies: 2444 | ansi-regex "^3.0.0" 2445 | 2446 | strip-ansi@~0.1.0: 2447 | version "0.1.1" 2448 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" 2449 | 2450 | strip-json-comments@~2.0.1: 2451 | version "2.0.1" 2452 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2453 | 2454 | supports-color@^2.0.0: 2455 | version "2.0.0" 2456 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2457 | 2458 | supports-color@^5.3.0: 2459 | version "5.4.0" 2460 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 2461 | dependencies: 2462 | has-flag "^3.0.0" 2463 | 2464 | symbol-observable@1.0.4: 2465 | version "1.0.4" 2466 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" 2467 | 2468 | symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.1.0: 2469 | version "1.2.0" 2470 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" 2471 | 2472 | tapable@^1.0.0-beta.5: 2473 | version "1.0.0" 2474 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" 2475 | 2476 | tar@^4: 2477 | version "4.4.4" 2478 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" 2479 | dependencies: 2480 | chownr "^1.0.1" 2481 | fs-minipass "^1.2.5" 2482 | minipass "^2.3.3" 2483 | minizlib "^1.1.0" 2484 | mkdirp "^0.5.0" 2485 | safe-buffer "^5.1.2" 2486 | yallist "^3.0.2" 2487 | 2488 | theming@^1.3.0: 2489 | version "1.3.0" 2490 | resolved "https://registry.yarnpkg.com/theming/-/theming-1.3.0.tgz#286d5bae80be890d0adc645e5ca0498723725bdc" 2491 | dependencies: 2492 | brcast "^3.0.1" 2493 | is-function "^1.0.1" 2494 | is-plain-object "^2.0.1" 2495 | prop-types "^15.5.8" 2496 | 2497 | to-fast-properties@^1.0.3: 2498 | version "1.0.3" 2499 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 2500 | 2501 | trim-right@^1.0.1: 2502 | version "1.0.1" 2503 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2504 | 2505 | ua-parser-js@^0.7.18: 2506 | version "0.7.18" 2507 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed" 2508 | 2509 | underscore@~1.6.0: 2510 | version "1.6.0" 2511 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" 2512 | 2513 | user-home@^1.1.1: 2514 | version "1.1.1" 2515 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" 2516 | 2517 | util-deprecate@~1.0.1: 2518 | version "1.0.2" 2519 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2520 | 2521 | v8flags@^2.1.1: 2522 | version "2.1.1" 2523 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" 2524 | dependencies: 2525 | user-home "^1.1.1" 2526 | 2527 | value-equal@^0.4.0: 2528 | version "0.4.0" 2529 | resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" 2530 | 2531 | warning@^3.0.0, warning@~3.0.0: 2532 | version "3.0.0" 2533 | resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" 2534 | dependencies: 2535 | loose-envify "^1.0.0" 2536 | 2537 | warning@^4.0.1: 2538 | version "4.0.1" 2539 | resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.1.tgz#66ce376b7fbfe8a887c22bdf0e7349d73d397745" 2540 | dependencies: 2541 | loose-envify "^1.0.0" 2542 | 2543 | webpack-sources@^1.0.1: 2544 | version "1.1.0" 2545 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" 2546 | dependencies: 2547 | source-list-map "^2.0.0" 2548 | source-map "~0.6.1" 2549 | 2550 | whatwg-fetch@>=0.10.0: 2551 | version "2.0.4" 2552 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" 2553 | 2554 | wide-align@^1.1.0: 2555 | version "1.1.3" 2556 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2557 | dependencies: 2558 | string-width "^1.0.2 || 2" 2559 | 2560 | wrappy@1: 2561 | version "1.0.2" 2562 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2563 | 2564 | write-file-atomic@^2.0.0: 2565 | version "2.3.0" 2566 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" 2567 | dependencies: 2568 | graceful-fs "^4.1.11" 2569 | imurmurhash "^0.1.4" 2570 | signal-exit "^3.0.2" 2571 | 2572 | write-json-file@^2.3.0: 2573 | version "2.3.0" 2574 | resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" 2575 | dependencies: 2576 | detect-indent "^5.0.0" 2577 | graceful-fs "^4.1.2" 2578 | make-dir "^1.0.0" 2579 | pify "^3.0.0" 2580 | sort-keys "^2.0.0" 2581 | write-file-atomic "^2.0.0" 2582 | 2583 | yallist@^3.0.0, yallist@^3.0.2: 2584 | version "3.0.2" 2585 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 2586 | --------------------------------------------------------------------------------