diff --git a/README.md b/README.md index 1747af34..b6a7a39c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# React Emoji Picker +# React Emoji Picker V2.0.0 [![Greenkeeper badge](https://badges.greenkeeper.io/ealush/emoji-picker.svg)](https://greenkeeper.io/) [![npm version](https://badge.fury.io/js/emoji-picker-react.svg)](https://badge.fury.io/js/emoji-picker-react) [![Build Status](https://travis-ci.org/ealush/emoji-picker-react.svg?branch=master)](https://travis-ci.org/ealush/emoji-picker-react) @@ -6,14 +6,20 @@ ![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/recording.gif) +## V2 Changes +* Updated UI +* Removed customization props, moved to SASS variables +* Improved filtering performance + + ``` npm i emoji-picker-react --save ``` An easy to use React Emoji Picker Module. -For easy integration with your app, you should consider using the companion package: [React Text field components with emoji picker](https://www.npmjs.com/package/emoji-picker-textfield). -![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/1.png) + +![skin tones](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/1.png) ## Usage: @@ -32,22 +38,38 @@ class MyComponent extends Component { ``` -## Customization +## UI Customization +You can use custom CSS to modify each part of the picker's visibility. +**COMPATABILITY NOTE** +The markup of the picker is guaranteed to stay unchanged through each major version (with the exception of bugfixes), meaning you can safely assume the markup stays the same until version 3 gets released. -## Modifying the picker's height and width -By default the picker is 240px wide and ~315px tall (depending on the position of the categories panel). To change the width and height of the picker, simply: +### Customizatio via SCSS variables +If your project uses SCSS, you can more easily customize your picker's visibility using the predefined [SASS variables](https://github.com/ealush/emoji-picker-react/blob/master/src/base.scss) (click to see all variables). +To customize the picker using these variables, you will need to import the picker in two parts - js and css. ```js - - // width will default to 240 - // height will default to 240 +// MyComponent.js +import EmojiPicker from 'emoji-picker-react'; +import 'emoji-picker-react/dist/universal/style.scss'; // or any other way you consume scss files + +class MyComponent { +// ... +} ``` -If you chose a width that cannot fit a whole emoji at the end of each row (when you only leave room for 6.5 emojis, for example), the line will end at the last fully visible emoji, possibly leaving some empty space on the right. To resolve that, just increase or decrease the width of the picker to reach a perfect fit. +Then you will need to import the stylesheet file from your own stylesheet, and override the default variables with your own. -A word on height: The height you determine by the height property, is of the emoji-list only, the search and categories panel are added to the height you specify. +```scss +// style.scss +$size_emoji: 10px; +$width_picker: 300px; +$height_picker: 350px; +$bg_picker: #f1f1f1; +@import './node_modules/emoji-picker-react/dist/universal/style.scss'; // relative path to your node modules -![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/5.png) +``` + +![categories](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/5.png) ## Using custom category titles If you want to modify the currently existing category names, simply pass a mapping object with the names you would like to replace, for example: @@ -69,7 +91,7 @@ Here is the list of all category names, accepted by customCategoryNames: ## Disabling the diversity picker -![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/4.png) +![diverse emojis](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/4.png) The per emoji diversity gets triggered on hover or long click by default. By passing the prop `disableDiversityPicker` to the picker, it will be disabled and not get triggered. @@ -77,14 +99,6 @@ The per emoji diversity gets triggered on hover or long click by default. By pas ``` -## Moving the categories panel around - -```js - // default. no need to pass nav="top" - - -``` - ## Preloading all images By default, each emoji category is loaded when first viewing it to reduce initial load time and improve perceived performance. This can sometimes take a while. In some cases you would want to load all images at once, for example, when lazy loading the picker in the background regardless of user interaction. @@ -140,7 +154,7 @@ and then, in your onEmojiClick callback: jsemoji.replace_colons(`:${emojiName}:`); ``` -![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/2.png) +![filtering](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/2.png) # Image hosting ## CDN @@ -164,14 +178,14 @@ The picker will internally construct the image urls to appear like this: `http://example.com/emojis/64/1f448-1f3fd.png` (`1f448-1f3fd.png` is an emoji filename + extension) -![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/3.png) +![img](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/3.png) # Cool stuff ## Per Emoji diversity picker Long clicking on diversity (skin-tone) enabled Emojies (mostly the hand Emojis), will open a list of all skin tones for this Emoji. -![alt tag](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/4.png) +![img](https://raw.githubusercontent.com/ealush/emoji-picker/master/screenshots/4.png) # Attributions You can use this **picker**, free of charge, no attribution is needed. The emojis have their own license. diff --git a/dist/index.js b/dist/index.js index 664536d3..5ff9ea89 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,6 +1,7 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("react"),require("throttle-debounce")):"function"==typeof define&&define.amd?define(["react","throttle-debounce"],n):"object"==typeof exports?exports.EmojiPicker=n(require("react"),require("throttle-debounce")):e.EmojiPicker=n(e.react,e["throttle-debounce"])}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(f){if(o[f])return o[f].exports;var t=o[f]={i:f,l:!1,exports:{}};return e[f].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var o={};return n.m=e,n.c=o,n.d=function(e,o,f){n.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:f})},n.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(o,"a",o),o},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=64)}([function(e,n){var o=e.exports={version:"2.5.1"};"number"==typeof __e&&(__e=o)},function(e,n,o){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.skinTones=n.keywords=n.modifiers=n.categories=n.emojis=void 0;var f=o(115);n.emojis=f.emojis,n.categories=f.categories,n.modifiers=f.modifiers,n.keywords=f.keywords,n.skinTones=f.skinTones},function(e,n,o){"use strict";function f(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.KEYWORDS_SINGLE=n.ALL_KEYWORDS=n.DEFAULT_IMAGE_RESOLUTION=n.DEFAULT_CDN_PATH=n.FILTER_UPDATE_DEBOUNCE=n.HIDE_SCROLL_DEBOUNCE=n.OPEN_DIVERSITIES_TIMEOUT=n.MIN_SCROLLBAR_HEIGHT_PADDED=n.EMOJI_PADDING=n.EMOJI_BG_SIZE=n.PICKER_HEIGHT=n.PICKER_WIDTH=n.HEADER_HEIGHT=void 0;var t=o(15),r=f(t),c=o(1),i=o(133),a=f(i);n.HEADER_HEIGHT=25,n.PICKER_WIDTH=240,n.PICKER_HEIGHT=240,n.EMOJI_BG_SIZE=20,n.EMOJI_PADDING=7,n.MIN_SCROLLBAR_HEIGHT_PADDED=15,n.OPEN_DIVERSITIES_TIMEOUT=1e3,n.HIDE_SCROLL_DEBOUNCE=550,n.FILTER_UPDATE_DEBOUNCE=200,n.DEFAULT_CDN_PATH="https://cdn.jsdelivr.net/emojione/assets/3.0/png",n.DEFAULT_IMAGE_RESOLUTION="32",n.ALL_KEYWORDS=(0,r.default)(c.keywords),n.KEYWORDS_SINGLE=a.default},function(n,o){n.exports=e},function(e,n,o){if("production"!==process.env.NODE_ENV){var f="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,t=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===f};e.exports=o(110)(t,!0)}else e.exports=o(113)()},function(e,n){function o(e,n){var o=e[1]||"",t=e[3];if(!t)return o;if(n&&"function"==typeof btoa){var r=f(t);return[o].concat(t.sources.map(function(e){return"/*# sourceURL="+t.sourceRoot+e+" */"})).concat([r]).join("\n")}return[o].join("\n")}function f(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var n=[];return n.toString=function(){return this.map(function(n){var f=o(n,e);return n[2]?"@media "+n[2]+"{"+f+"}":f}).join("")},n.i=function(e,o){"string"==typeof e&&(e=[[null,e,""]]);for(var f={},t=0;t=0&&v.splice(n,1)}function i(e){var n=document.createElement("style");return e.attrs.type="text/css",u(n,e.attrs),r(e,n),n}function a(e){var n=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",u(n,e.attrs),r(e,n),n}function u(e,n){Object.keys(n).forEach(function(o){e.setAttribute(o,n[o])})}function s(e,n){var o,f,t,r;if(n.transform&&e.css){if(!(r=n.transform(e.css)))return function(){};e.css=r}if(n.singleton){var u=_++;o=b||(b=i(n)),f=l.bind(null,o,u,!1),t=l.bind(null,o,u,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(o=a(n),f=p.bind(null,o,n),t=function(){c(o),o.href&&URL.revokeObjectURL(o.href)}):(o=i(n),f=d.bind(null,o),t=function(){c(o)});return f(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;f(e=n)}else t()}}function l(e,n,o,f){var t=o?"":f.css;if(e.styleSheet)e.styleSheet.cssText=k(n,t);else{var r=document.createTextNode(t),c=e.childNodes;c[n]&&e.removeChild(c[n]),c.length?e.insertBefore(r,c[n]):e.appendChild(r)}}function d(e,n){var o=n.css,f=n.media;if(f&&e.setAttribute("media",f),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}function p(e,n,o){var f=o.css,t=o.sourceMap,r=void 0===n.convertToAbsoluteUrls&&t;(n.convertToAbsoluteUrls||r)&&(f=y(f)),t&&(f+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */");var c=new Blob([f],{type:"text/css"}),i=e.href;e.href=URL.createObjectURL(c),i&&URL.revokeObjectURL(i)}var h={},g=function(e){var n;return function(){return void 0===n&&(n=e.apply(this,arguments)),n}}(function(){return window&&document&&document.all&&!window.atob}),m=function(e){var n={};return function(o){if(void 0===n[o]){var f=e.call(this,o);if(f instanceof window.HTMLIFrameElement)try{f=f.contentDocument.head}catch(e){f=null}n[o]=f}return n[o]}}(function(e){return document.querySelector(e)}),b=null,_=0,v=[],y=o(118);e.exports=function(e,n){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");n=n||{},n.attrs="object"==typeof n.attrs?n.attrs:{},n.singleton||"boolean"==typeof n.singleton||(n.singleton=g()),n.insertInto||(n.insertInto="head"),n.insertAt||(n.insertAt="bottom");var o=t(e,n);return f(o,n),function(e){for(var r=[],c=0;c0?f:o)(e)}},function(e,n,o){var f=o(34)("keys"),t=o(26);e.exports=function(e){return f[e]||(f[e]=t(e))}},function(e,n,o){var f=o(8),t=f["__core-js_shared__"]||(f["__core-js_shared__"]={});e.exports=function(e){return t[e]||(t[e]={})}},function(e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,n){n.f=Object.getOwnPropertySymbols},function(e,n){e.exports=!0},function(e,n){e.exports={}},function(e,n,o){var f=o(17),t=o(87),r=o(35),c=o(33)("IE_PROTO"),i=function(){},a=function(){var e,n=o(49)("iframe"),f=r.length;for(n.style.display="none",o(88).appendChild(n),n.src="javascript:",e=n.contentWindow.document,e.open(),e.write(" + diff --git a/docs/index.html b/docs/index.html index 820dbfa2..227830cf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,7 +3,7 @@ - + Storybook \ No newline at end of file diff --git a/svg/flags.svg b/svg/flags.svg new file mode 100644 index 00000000..cb33636b --- /dev/null +++ b/svg/flags.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/foods.svg b/svg/foods.svg new file mode 100644 index 00000000..2d7c23fb --- /dev/null +++ b/svg/foods.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/nature.svg b/svg/nature.svg new file mode 100644 index 00000000..b2a037e5 --- /dev/null +++ b/svg/nature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/objects.svg b/svg/objects.svg new file mode 100644 index 00000000..9ae3371c --- /dev/null +++ b/svg/objects.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/people.svg b/svg/people.svg new file mode 100644 index 00000000..5a8d84b7 --- /dev/null +++ b/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/places.svg b/svg/places.svg new file mode 100644 index 00000000..b589fdee --- /dev/null +++ b/svg/places.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/symbols.svg b/svg/symbols.svg new file mode 100644 index 00000000..4e83a7ea --- /dev/null +++ b/svg/symbols.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index f6e436b9..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,40 +0,0 @@ -const path = require('path'), - webpack = require('webpack'); - -module.exports = { - entry: { - index: ['./src/index.js'] - }, - externals: { - 'react': 'react', - 'throttle-debounce': 'throttle-debounce' - }, - target: 'node', - output: { - path: path.join(__dirname, 'dist'), - filename: '[name].js', - library: 'EmojiPicker', - libraryTarget: 'umd' - }, - module: { - loaders: [{ - test: /\.svg/, - loaders: ['svg-url-loader'] - - }, - { - test: /\.scss$/, - loaders: ['style-loader', 'css-loader', 'sass-loader'], - include: path.resolve(__dirname, '../') - }, - { - test: /\.(js|jsx)$/, - exclude: /node_modules/, - use: ['babel-loader'] - } - ] - }, - plugins: [ - new webpack.optimize.UglifyJsPlugin() - ] -}; \ No newline at end of file diff --git a/webpack.config.prod.js b/webpack.config.prod.js index f6e436b9..40a8cb04 100644 --- a/webpack.config.prod.js +++ b/webpack.config.prod.js @@ -2,9 +2,8 @@ const path = require('path'), webpack = require('webpack'); module.exports = { - entry: { - index: ['./src/index.js'] - }, + entry: './src/index.js', + devtool: 'source-map', externals: { 'react': 'react', 'throttle-debounce': 'throttle-debounce' @@ -12,7 +11,7 @@ module.exports = { target: 'node', output: { path: path.join(__dirname, 'dist'), - filename: '[name].js', + filename: 'index.js', library: 'EmojiPicker', libraryTarget: 'umd' }, @@ -35,6 +34,9 @@ module.exports = { ] }, plugins: [ - new webpack.optimize.UglifyJsPlugin() + new webpack.optimize.UglifyJsPlugin({ + minimize: true, + sourceMap: true + }) ] }; \ No newline at end of file diff --git a/webpack.config.universal.js b/webpack.config.universal.js index 7f91a67a..69f05e7a 100644 --- a/webpack.config.universal.js +++ b/webpack.config.universal.js @@ -2,10 +2,11 @@ const path = require('path'), webpack = require('webpack'), ExtractTextPlugin = require('extract-text-webpack-plugin'); +const extractScss = new ExtractTextPlugin('style.scss'); + module.exports = { - entry: { - index: ['./src/index.js'] - }, + entry: './src/index.js', + devtool: 'source-map', externals: { 'react': 'react', 'throttle-debounce': 'throttle-debounce' @@ -13,7 +14,7 @@ module.exports = { target: 'node', output: { path: path.join(__dirname, 'dist/universal'), - filename: '[name].js', + filename: 'index.js', library: 'EmojiPicker', libraryTarget: 'umd' }, @@ -25,8 +26,8 @@ module.exports = { }, { test: /\.scss$/, - use:ExtractTextPlugin.extract({fallback:'style-loader', use:['css-loader', 'sass-loader']}), - include: path.resolve(__dirname, '../') + use: extractScss.extract({fallback:'style-loader', use:['css-loader']}), + exclude: /dist/ }, { test: /\.(js|jsx)$/, @@ -36,7 +37,10 @@ module.exports = { ] }, plugins: [ - new webpack.optimize.UglifyJsPlugin(), - new ExtractTextPlugin('style.css') + new webpack.optimize.UglifyJsPlugin({ + minimize: true, + sourceMap: true + }), + extractScss ] }; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ecd69a35..2be6cccf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,8 +1,8 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -"@storybook/addon-actions@^3.3.3", "@storybook/addon-actions@3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.3.3.tgz#468e3426eb8f109825d9b41bf77f206711fa74b3" +"@storybook/addon-actions@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.3.10.tgz#f3e4b538d8260364c55a3ba1e301a2fab9d8d3f2" dependencies: deep-equal "^1.0.1" global "^4.3.2" @@ -11,37 +11,48 @@ react-inspector "^2.2.2" uuid "^3.1.0" -"@storybook/addon-links@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.3.3.tgz#b5fe29f3aa3d5fe812aa9d47240846bf4d040ad1" +"@storybook/addon-actions@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.3.4.tgz#54671477f6b867d14ff45bc20b054f6a0d853b62" dependencies: - "@storybook/components" "^3.3.3" + deep-equal "^1.0.1" + global "^4.3.2" + make-error "^1.3.2" + prop-types "^15.6.0" + react-inspector "^2.2.2" + uuid "^3.1.0" + +"@storybook/addon-links@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.3.10.tgz#4e6c1a0b0bf5b18101bc5001b858b33202ae8209" + dependencies: + "@storybook/components" "^3.3.10" global "^4.3.2" prop-types "^15.5.10" -"@storybook/addons@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/addons/-/addons-3.3.3.tgz#968d98a61957bc30db642b43924c3332dbaec40e" +"@storybook/addons@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-3.3.10.tgz#8753007d872013d2376ba71b14396eef3159673b" -"@storybook/channel-postmessage@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.3.3.tgz#d3c1a6da0b9bb111eb410419788d2609924f894b" +"@storybook/channel-postmessage@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.3.10.tgz#4f22b5a665d3c95eb61cf41bbb06872009ace7b5" dependencies: - "@storybook/channels" "^3.3.3" + "@storybook/channels" "^3.3.10" global "^4.3.2" json-stringify-safe "^5.0.1" -"@storybook/channels@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/channels/-/channels-3.3.3.tgz#ee9a496f984a41c0b12b523a1375d21e1f05eb7d" +"@storybook/channels@^3.3.10": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-3.3.10.tgz#0b15d47c2ea0cb1c7b735955d74e9d3ca99cdc42" -"@storybook/client-logger@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.3.3.tgz#3fd2a8dc243d9d3d2f171f7a02f58c805c409385" +"@storybook/client-logger@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.3.10.tgz#6f8b85c3dfad229794fee88f930df59b163ee144" -"@storybook/components@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/components/-/components-3.3.3.tgz#a01adb8eb065a9e9627d85d7268deb270b57d2de" +"@storybook/components@^3.3.10": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/components/-/components-3.3.10.tgz#f213a129ed49de33cdaf116da2c2b662b8eb3ea0" dependencies: glamor "^2.20.40" glamorous "^4.11.2" @@ -55,9 +66,9 @@ "@storybook/react-simple-di" "^1.2.1" babel-runtime "6.x.x" -"@storybook/node-logger@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.3.3.tgz#e22e29a27fc440ea58134e36a85d5a38eca2ee6e" +"@storybook/node-logger@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.3.10.tgz#d9c09a622713ec4726cdd292e798aa98c0503c15" dependencies: chalk "^2.3.0" npmlog "^4.1.2" @@ -85,17 +96,17 @@ dependencies: babel-runtime "^6.5.0" -"@storybook/react@3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/react/-/react-3.3.3.tgz#fd7f41fa897b82af09bb4026cfbad9684901cbe1" - dependencies: - "@storybook/addon-actions" "^3.3.3" - "@storybook/addon-links" "^3.3.3" - "@storybook/addons" "^3.3.3" - "@storybook/channel-postmessage" "^3.3.3" - "@storybook/client-logger" "^3.3.3" - "@storybook/node-logger" "^3.3.3" - "@storybook/ui" "^3.3.3" +"@storybook/react@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@storybook/react/-/react-3.3.4.tgz#362aa7d4bde9ca8e45834df0736370f4dfc04e35" + dependencies: + "@storybook/addon-actions" "^3.3.4" + "@storybook/addon-links" "^3.3.4" + "@storybook/addons" "^3.3.4" + "@storybook/channel-postmessage" "^3.3.4" + "@storybook/client-logger" "^3.3.4" + "@storybook/node-logger" "^3.3.4" + "@storybook/ui" "^3.3.4" airbnb-js-shims "^1.4.0" autoprefixer "^7.2.3" babel-loader "^7.1.2" @@ -114,7 +125,7 @@ common-tags "^1.6.0" configstore "^3.1.1" core-js "^2.5.3" - css-loader "^0.28.7" + css-loader "^0.28.8" dotenv-webpack "^1.5.4" express "^4.16.2" file-loader "^1.1.6" @@ -122,7 +133,7 @@ glamor "^2.20.40" glamorous "^4.11.2" global "^4.3.2" - html-loader "^0.5.1" + html-loader "^0.5.4" html-webpack-plugin "^2.30.1" json-loader "^0.5.7" json-stringify-safe "^5.0.1" @@ -139,7 +150,7 @@ serve-favicon "^2.4.5" shelljs "^0.7.8" style-loader "^0.19.1" - uglifyjs-webpack-plugin "^1.1.5" + uglifyjs-webpack-plugin "^1.1.6" url-loader "^0.6.2" util-deprecate "^1.0.2" uuid "^3.1.0" @@ -147,11 +158,11 @@ webpack-dev-middleware "^1.12.2" webpack-hot-middleware "^2.21.0" -"@storybook/ui@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@storybook/ui/-/ui-3.3.3.tgz#c8eb95a1734c654e082d3909f665ae00ad472d94" +"@storybook/ui@^3.3.4": + version "3.3.10" + resolved "https://registry.npmjs.org/@storybook/ui/-/ui-3.3.10.tgz#99a83b988b01cde1df61b87a58227a50ed196dd1" dependencies: - "@storybook/components" "^3.3.3" + "@storybook/components" "^3.3.10" "@storybook/mantra-core" "^1.7.2" "@storybook/react-komposer" "^2.0.3" babel-runtime "^6.26.0" @@ -251,6 +262,10 @@ ajv-keywords@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + ajv@^4.7.0: version "4.11.8" resolved "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -1699,6 +1714,24 @@ cacache@^10.0.0: unique-filename "^1.1.0" y18n "^3.2.1" +cacache@^10.0.1: + version "10.0.2" + resolved "https://registry.npmjs.org/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^5.0.0" + unique-filename "^1.1.0" + y18n "^3.2.1" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1988,6 +2021,10 @@ commander@^2.12.2, commander@~2.12.1, commander@2.12.x: version "2.12.2" resolved "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + common-tags@^1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.6.0.tgz#788e4bcc582f16993e5b2c92f76b1ccb80731537" @@ -2196,6 +2233,25 @@ css-loader@^0.28.7: postcss-value-parser "^3.3.0" source-list-map "^2.0.0" +css-loader@^0.28.8: + version "0.28.9" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95" + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + cssnano "^3.10.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.1.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + css-select@^1.1.0, css-select@~1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -2221,7 +2277,7 @@ cssesc@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" -"cssnano@>=2.6.1 <4": +cssnano@^3.10.0, "cssnano@>=2.6.1 <4": version "3.10.0" resolved "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" dependencies: @@ -2708,7 +2764,7 @@ es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1, es6-symb d "1" es5-ext "~0.10.14" -es6-templates@^0.2.2: +es6-templates@^0.2.3: version "0.2.3" resolved "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" dependencies: @@ -2761,9 +2817,9 @@ eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" -eslint@4.14.0: - version "4.14.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-4.14.0.tgz#96609768d1dd23304faba2d94b7fefe5a5447a82" +eslint@4.15.0: + version "4.15.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-4.15.0.tgz#89ab38c12713eec3d13afac14e4a89e75ef08145" dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" @@ -3498,17 +3554,17 @@ html-entities@^1.2.0: version "1.2.1" resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" -html-loader@^0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz#4f1e8396a1ea6ab42bedc987dfac058070861ebe" +html-loader@^0.5.4: + version "0.5.5" + resolved "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" dependencies: - es6-templates "^0.2.2" + es6-templates "^0.2.3" fastparse "^1.1.1" - html-minifier "^3.0.1" - loader-utils "^1.0.2" - object-assign "^4.1.0" + html-minifier "^3.5.8" + loader-utils "^1.1.0" + object-assign "^4.1.1" -html-minifier@^3.0.1, html-minifier@^3.2.3: +html-minifier@^3.2.3, html-minifier@^3.5.8: version "3.5.8" resolved "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700" dependencies: @@ -4413,9 +4469,9 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1, mk dependencies: minimist "0.0.8" -mocha@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b" +mocha@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-5.0.0.tgz#cccac988b0bc5477119cba0e43de7af6d6ad8f4e" dependencies: browser-stdout "1.3.0" commander "2.11.0" @@ -5112,27 +5168,27 @@ postcss-minify-selectors@^2.0.4: postcss "^5.0.14" postcss-selector-parser "^2.0.0" -postcss-modules-extract-imports@^1.0.0: +postcss-modules-extract-imports@^1.0.0, postcss-modules-extract-imports@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" dependencies: postcss "^6.0.1" -postcss-modules-local-by-default@^1.0.1: +postcss-modules-local-by-default@^1.0.1, postcss-modules-local-by-default@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" -postcss-modules-scope@^1.0.0: +postcss-modules-scope@^1.0.0, postcss-modules-scope@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" -postcss-modules-values@^1.1.0: +postcss-modules-values@^1.1.0, postcss-modules-values@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" dependencies: @@ -5981,6 +6037,13 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" +schema-utils@^0.4.2: + version "0.4.3" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz#e2a594d3395834d5e15da22b48be13517859458e" + dependencies: + ajv "^5.0.0" + ajv-keywords "^2.1.0" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -6537,6 +6600,13 @@ ua-parser-js@^0.7.9: version "0.7.14" resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" +uglify-es@^3.3.4: + version "3.3.7" + resolved "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.7.tgz#d1249af668666aba7cb1163e277455be9eb393cf" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + uglify-es@3.2.2: version "3.2.2" resolved "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.2.tgz#15c62b7775002c81b7987a1c49ecd3f126cace73" @@ -6572,7 +6642,7 @@ uglifyjs-webpack-plugin@^0.4.6: uglify-js "^2.8.29" webpack-sources "^1.0.1" -uglifyjs-webpack-plugin@^1.0.0-beta.3, uglifyjs-webpack-plugin@^1.1.5: +uglifyjs-webpack-plugin@^1.0.0-beta.3: version "1.1.5" resolved "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.5.tgz#5ec4a16da0fd10c96538f715caed10dbdb180875" dependencies: @@ -6585,6 +6655,19 @@ uglifyjs-webpack-plugin@^1.0.0-beta.3, uglifyjs-webpack-plugin@^1.1.5: webpack-sources "^1.0.1" worker-farm "^1.4.1" +uglifyjs-webpack-plugin@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz#f4ba8449edcf17835c18ba6ae99b9d610857fb19" + dependencies: + cacache "^10.0.1" + find-cache-dir "^1.0.0" + schema-utils "^0.4.2" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + uid-number@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -6766,6 +6849,13 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" +webpack-sources@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + webpack@^3.10.0: version "3.10.0" resolved "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" @@ -6833,7 +6923,7 @@ wordwrap@0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" -worker-farm@^1.4.1: +worker-farm@^1.4.1, worker-farm@^1.5.2: version "1.5.2" resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" dependencies: