diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ee5d7f936bcf9..aeed91ebf7028 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -15,21 +15,24 @@ # users just like we do for commit author emails. # docs/ docs@example.com +#### Core build stuff +scripts/ @dzearing + #### Apps # component-demo/ # fabric-website/ # ssr-tests/ -# test-bundle-button/ +# test-bundle-button/ @dzearing # todo-app/ #### Packages # packages/example-app-base/ -packages/file-type-icons/ @KatherineThayerMicrosoft @jahnp +packages/file-type-icons/ @KatherineThayerMicrosoft @jahnp @bigbadcapers # packages/icons/ # packages/jest-serializer-merge-styles/ # packages/merge-styles/ # packages/office-ui-fabric-react-tslint/ -packages/styling/ @dzearing +packages/styling/ @dzearing packages/styling/src/interfaces/ @phkuo packages/styling/src/styles/ @phkuo # packages/utilities/ diff --git a/.npmrc b/.npmrc index 825c83e09df4d..1df2a6d8579b7 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ registry=https://registry.npmjs.org/ - +package-lock=false diff --git a/apps/fabric-website/CHANGELOG.json b/apps/fabric-website/CHANGELOG.json index b7b6161fbe4ac..6a04f853aa244 100644 --- a/apps/fabric-website/CHANGELOG.json +++ b/apps/fabric-website/CHANGELOG.json @@ -1,6 +1,96 @@ { "name": "@uifabric/fabric-website", "entries": [ + { + "version": "5.4.0", + "tag": "@uifabric/fabric-website_v5.4.0", + "date": "Wed, 14 Mar 2018 10:28:26 GMT", + "comments": { + "minor": [ + { + "author": "lynamemi ", + "commit": "8b1625290f6a775f6c64b30617a2593576aacb34", + "comment": "Theme generator: exposing to the website." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.64.0 <6.0.0` to `>=5.64.1 <6.0.0`" + } + ] + } + }, + { + "version": "5.3.4", + "tag": "@uifabric/fabric-website_v5.3.4", + "date": "Tue, 13 Mar 2018 20:00:06 GMT", + "comments": { + "patch": [ + { + "author": "lynamemi ", + "commit": "0904a98019ac935ed975f6188624cc68df477a25", + "comment": "Hide left nav on mobile." + } + ] + } + }, + { + "version": "5.3.3", + "tag": "@uifabric/fabric-website_v5.3.3", + "date": "Fri, 09 Mar 2018 11:13:58 GMT", + "comments": { + "patch": [ + { + "author": "lynamemi ", + "commit": "e67bcbe68c55f057a10c3c51d923554bae81524d", + "comment": "Fixed in page nav so that the left nav links will display properly." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.61.0 <6.0.0` to `>=5.62.0 <6.0.0`" + } + ] + } + }, + { + "version": "5.3.2", + "tag": "@uifabric/fabric-website_v5.3.2", + "date": "Thu, 01 Mar 2018 00:05:10 GMT", + "comments": { + "patch": [ + { + "author": "lynamemi ", + "commit": "8370f6f5c822189fbd84e13fb285df83b102a308", + "comment": "Improved left nav scroll behavior and added fix to webpack so that we can load component pages from our local machines with the UHF." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.56.0 <6.0.0` to `>=5.56.1 <6.0.0`" + } + ] + } + }, + { + "version": "5.3.1", + "tag": "@uifabric/fabric-website_v5.3.1", + "date": "Fri, 16 Feb 2018 11:23:29 GMT", + "comments": { + "patch": [ + { + "author": "lynamemi ", + "commit": "97593b0e0ff8c69cafbaefe40a3ba6834572eddf", + "comment": "Left nav: Less jittery and component pages load in full height." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.50.0 <6.0.0` to `>=5.51.0 <6.0.0`" + } + ] + } + }, { "version": "5.3.0", "tag": "@uifabric/fabric-website_v5.3.0", diff --git a/apps/fabric-website/CHANGELOG.md b/apps/fabric-website/CHANGELOG.md index 5f789e2e71bb9..251c264c012b0 100644 --- a/apps/fabric-website/CHANGELOG.md +++ b/apps/fabric-website/CHANGELOG.md @@ -1,6 +1,41 @@ # Change Log - @uifabric/fabric-website -This log was last generated on Mon, 22 Jan 2018 11:14:27 GMT and should not be manually modified. +This log was last generated on Wed, 14 Mar 2018 10:28:26 GMT and should not be manually modified. + +## 5.4.0 +Wed, 14 Mar 2018 10:28:26 GMT + +### Minor changes + +- Theme generator: exposing to the website. + +## 5.3.4 +Tue, 13 Mar 2018 20:00:06 GMT + +### Patches + +- Hide left nav on mobile. + +## 5.3.3 +Fri, 09 Mar 2018 11:13:58 GMT + +### Patches + +- Fixed in page nav so that the left nav links will display properly. + +## 5.3.2 +Thu, 01 Mar 2018 00:05:10 GMT + +### Patches + +- Improved left nav scroll behavior and added fix to webpack so that we can load component pages from our local machines with the UHF. + +## 5.3.1 +Fri, 16 Feb 2018 11:23:29 GMT + +### Patches + +- Left nav: Less jittery and component pages load in full height. ## 5.3.0 Mon, 22 Jan 2018 11:14:27 GMT diff --git a/apps/fabric-website/package.json b/apps/fabric-website/package.json index fb05e91dcafa9..831e3c845ebe2 100644 --- a/apps/fabric-website/package.json +++ b/apps/fabric-website/package.json @@ -1,6 +1,6 @@ { "name": "@uifabric/fabric-website", - "version": "5.3.0", + "version": "5.4.0", "description": "Reusable React components for building experiences for Office 365.", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -39,7 +39,7 @@ "@microsoft/load-themed-styles": "^1.7.13", "color-functions": "1.1.0", "json-loader": "^0.5.7", - "office-ui-fabric-react": ">=5.45.1 <6.0.0", + "office-ui-fabric-react": ">=5.64.3 <6.0.0", "tslib": "^1.7.1" } } \ No newline at end of file diff --git a/apps/fabric-website/src/components/App/App.scss b/apps/fabric-website/src/components/App/App.scss index 088921c759926..247d3048affa8 100644 --- a/apps/fabric-website/src/components/App/App.scss +++ b/apps/fabric-website/src/components/App/App.scss @@ -4,31 +4,30 @@ :global { // Element that wraps everything except for the header .App-wrapper { - display: flex; - flex-direction: column; margin: 0 auto; max-width: $App-maximumWidth; + position: relative; } // Nav is hidden off screen by default .App-nav { -webkit-overflow-scrolling: touch; // Improves scrolling performance overflow-y: auto; - position: fixed; - top: $Header-height; + max-height: 100vh; + height: 100vh; // fallback height if not set in JS style attribute width: $Nav-width; @include ms-float(left); - z-index: $ms-zIndex-1; + z-index: 999; // This z-index needs to be high to prevent jittery scrolling in Edge. } .App-content { @include contentPadding(); background-color: $ms-color-neutralLighter; - flex-grow: 1; left: 0; overflow: hidden; position: relative; transition: all $ms-animation-duration-2 $ms-animation-ease-1; + min-height: calc(100vh - #{$Header-height-full-uhf}); @include high-contrast { border-right: 1px solid WindowText; @@ -46,19 +45,14 @@ @include ms-padding-left($App-padding-left-lg); } - .App-wrapper { - flex-direction: row; - } - .App-nav { - top: $Header-height*2; + top: 0; bottom: 0; overflow-y: auto; overflow-x: hidden; } .App-content { - flex-grow: unset; max-width: calc(100% - #{$Nav-width}); // IE needs max-width, it was ignoring width width: calc(100% - #{$Nav-width}); @include ms-left($Nav-width); diff --git a/apps/fabric-website/src/components/App/App.tsx b/apps/fabric-website/src/components/App/App.tsx index 5611b0d616a57..e8f2ddcc33876 100644 --- a/apps/fabric-website/src/components/App/App.tsx +++ b/apps/fabric-website/src/components/App/App.tsx @@ -43,12 +43,10 @@ export class App extends React.Component { public render() { let { navHeight } = this.state; - let appContentTop = this._appContentRect ? this._appContentRect.top : 100; - // Using appContentTop as a reference to match instead of 'unset' because it does not work in IE. - let navTop: string = this.state.isAttached ? '0' : appContentTop.toString(); + let navPosition: 'fixed' | 'absolute' = this.state.isAttached ? 'fixed' : 'absolute'; let navStyle = { - top: navTop, - height: navHeight + height: navHeight, + position: navPosition }; return ( @@ -80,7 +78,7 @@ export class App extends React.Component { @autobind private _handleNavPositioning() { let { isAttached, navHeight } = this.state; - this._appContentRect = this._appContent.getBoundingClientRect(); + this._appContentRect = this._appContent && this._appContent.getBoundingClientRect(); const viewPortHeight = window.innerHeight; isAttached = AttachedScrollUtility.shouldComponentAttach(isAttached, this._attachedScrollThreshold); navHeight = this._calculateNavHeight(viewPortHeight, this._appContentRect, navHeight); diff --git a/apps/fabric-website/src/components/App/AppState.tsx b/apps/fabric-website/src/components/App/AppState.tsx index 4037e4e10691f..e27d0c9e6c9bc 100644 --- a/apps/fabric-website/src/components/App/AppState.tsx +++ b/apps/fabric-website/src/components/App/AppState.tsx @@ -10,11 +10,22 @@ export interface IAppState { pages: INavPage[]; } +// Giving the loading component a height so that the left nav loads in full screen and there is less flashing as the component page loads. +const loadingPageHeight: string = 'calc(100vh - 100px)'; const LoadingComponent = (props: any): JSX.Element => { return ( - - - +
+ + + +
+ ); +}; +const StylesLoadingComponent = (props: any): JSX.Element => { + return ( +
+ +
); }; @@ -46,47 +57,55 @@ export const AppState: IAppState = { { title: 'Animations', url: '#/styles/animations', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/AnimationsPage/AnimationsPage').AnimationsPage)) }, { title: 'Brand icons', url: '#/styles/brand-icons', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/BrandIconsPage/BrandIconsPage').BrandIconsPage)) }, { title: 'Colors', url: '#/styles/colors', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/ColorsPage/ColorsPage').ColorsPage)) }, { title: 'Icons', url: '#/styles/icons', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/IconsPage/IconsPage').IconsPage)) }, { title: 'Layout', url: '#/styles/layout', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/LayoutPage/LayoutPage').LayoutPage)) }, { title: 'Localization', url: '#/styles/localization', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/LocalizationPage/LocalizationPage').LocalizationPage)) }, { - title: 'Beta Theme Generator', - url: '#/styles/themeGenerator', - isHiddenFromMainNav: true, + title: 'Theme generator', + url: '#/styles/themegenerator', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/ThemeGeneratorToolPage/ThemeGeneratorToolPage').ThemeGeneratorToolPage)) }, { title: 'Typography', url: '#/styles/typography', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/TypographyPage/TypographyPage').TypographyPage)) }, { title: 'Utilities', url: '#/styles/utilities', + component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Styles/UtilitiesPage/UtilitiesPage').UtilitiesPage)) } ] @@ -134,6 +153,12 @@ export const AppState: IAppState = { component: () => , getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Components/CheckboxComponentPage').CheckboxComponentPage)) }, + { + title: 'Coachmark', + url: '#/components/coachmark', + component: () => , + getComponent: cb => require.ensure([], (require) => cb(require('../../pages/Components/CoachmarkComponentPage').CoachmarkComponentPage)) + }, { title: 'ChoiceGroup', url: '#/components/choicegroup', diff --git a/apps/fabric-website/src/components/IconGrid/IconGrid.tsx b/apps/fabric-website/src/components/IconGrid/IconGrid.tsx index ece39ae5f5700..08879b64d9e0d 100644 --- a/apps/fabric-website/src/components/IconGrid/IconGrid.tsx +++ b/apps/fabric-website/src/components/IconGrid/IconGrid.tsx @@ -32,7 +32,7 @@ export class IconGrid extends React.Component { return (
- +
    { icons .filter(icon => icon.name.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1) diff --git a/apps/fabric-website/src/components/Nav/Nav.module.scss b/apps/fabric-website/src/components/Nav/Nav.module.scss index f6aa96b879caf..24ec50dcca26c 100644 --- a/apps/fabric-website/src/components/Nav/Nav.module.scss +++ b/apps/fabric-website/src/components/Nav/Nav.module.scss @@ -96,3 +96,9 @@ $nav-group-header-height: 40px; } } } + +@media only screen and (max-width: $uhf-screen-max-mobile) { + .nav { + display: none; + } +} \ No newline at end of file diff --git a/apps/fabric-website/src/components/Nav/Nav.tsx b/apps/fabric-website/src/components/Nav/Nav.tsx index 1ca61b4a5c929..df836511d6eab 100644 --- a/apps/fabric-website/src/components/Nav/Nav.tsx +++ b/apps/fabric-website/src/components/Nav/Nav.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { css } from 'office-ui-fabric-react/lib/Utilities'; import { FocusZone } from 'office-ui-fabric-react/lib/FocusZone'; +import { getPathMinusLastHash } from '../../utilities/pageroute'; import * as stylesImport from './Nav.module.scss'; const styles: any = stylesImport; import { @@ -69,7 +70,7 @@ export class Nav extends React.Component { const links: React.ReactElement<{}>[] = pages .filter(page => !page.hasOwnProperty('isHiddenFromMainNav')) .map( - (page: INavPage, linkIndex: number) => this._renderLink(page, linkIndex) + (page: INavPage, linkIndex: number) => this._renderLink(page, linkIndex) ); return ( @@ -91,25 +92,19 @@ function _isPageActive(page: INavPage): boolean { } _urlResolver.href = page.url || ''; const target: string = _urlResolver.href; + let path = location.href; if (location.protocol + '//' + location.host + location.pathname === target) { return true; } - if (location.href === target) { - return true; + const hashCount = path.split('#').length - 1; + if (hashCount > 1) { + path = getPathMinusLastHash(path); } - if (location.hash) { - // Match the hash to the url. - if (location.hash === page.url) { - return true; - } - - // Match a rebased url. (e.g. #foo becomes http://hostname/foo) - _urlResolver.href = location.hash.substring(1); - - return _urlResolver.href === target; + if (path === target) { + return true; } return false; diff --git a/apps/fabric-website/src/components/PageHeader/PageHeader.tsx b/apps/fabric-website/src/components/PageHeader/PageHeader.tsx index 51833d676efc5..bafc2d4ce182d 100644 --- a/apps/fabric-website/src/components/PageHeader/PageHeader.tsx +++ b/apps/fabric-website/src/components/PageHeader/PageHeader.tsx @@ -2,8 +2,8 @@ import * as React from 'react'; import { css, BaseComponent, IBaseProps } from 'office-ui-fabric-react/lib/Utilities'; import * as stylesImport from './PageHeader.module.scss'; const styles: any = stylesImport; -import { getPageRouteFromState } from '../../utilities/pageroute'; import AttachedScrollUtility from '../../utilities/AttachedScrollUtility'; +import { getPathMinusLastHash } from '../../utilities/pageroute'; import { PageHeaderLink } from '../../components/PageHeaderLink/PageHeaderLink'; import { FocusZone } from 'office-ui-fabric-react/lib/FocusZone'; @@ -84,9 +84,6 @@ export class PageHeader extends BaseComponent { links.map((link, linkIndex) => (
  • - +
  • )) }
@@ -143,4 +140,12 @@ export class PageHeader extends BaseComponent { + public render() { + return ( +
+ + + + +
+ ); + } +} diff --git a/apps/fabric-website/src/pages/ResourcesPage/ResourcesPage.tsx b/apps/fabric-website/src/pages/ResourcesPage/ResourcesPage.tsx index a898a09daa306..3a3629c0ff2d8 100644 --- a/apps/fabric-website/src/pages/ResourcesPage/ResourcesPage.tsx +++ b/apps/fabric-website/src/pages/ResourcesPage/ResourcesPage.tsx @@ -59,6 +59,12 @@ export class ResourcesPage extends React.Component {
  • Segoe UI and Fabric MDL2 icon font
  • Segoe UI and Fabric MDL2 icon font (Microsoft employees)
  • + +

    Theme generator

    +

    This tool helps you easily create all the shades and slots for a custom theme.

    +
    diff --git a/apps/fabric-website/src/pages/Styles/ColorsPage/ColorsPage.tsx b/apps/fabric-website/src/pages/Styles/ColorsPage/ColorsPage.tsx index e92d5cfaa5d8d..62125bd95e092 100644 --- a/apps/fabric-website/src/pages/Styles/ColorsPage/ColorsPage.tsx +++ b/apps/fabric-website/src/pages/Styles/ColorsPage/ColorsPage.tsx @@ -38,7 +38,7 @@ export class ColorsPage extends React.Component { />

    Overview

    -

    Fabric includes 9 theme colors and 11 neutral colors. Each has helper classes for text, background, border, and hover states. When selecting colors, refer to the color accessibility guidance (PDF) to ensure that your text can be ready by everyone.

    +

    Fabric includes 9 theme colors and 11 neutral colors. Each has helper classes for text, background, border, and hover states. When selecting colors, refer to the color accessibility guidance (PDF) to ensure that your text can be ready by everyone. If you need to customize your theme, see the Theme generator.

    Implementation

    Colors can be applied to text, backgrounds, or borders using the following class name conventions:

    diff --git a/apps/fabric-website/src/pages/Styles/ThemeGeneratorToolPage/ThemeGeneratorToolPage.tsx b/apps/fabric-website/src/pages/Styles/ThemeGeneratorToolPage/ThemeGeneratorToolPage.tsx index 54a960c3bd44c..e69897d0ad143 100644 --- a/apps/fabric-website/src/pages/Styles/ThemeGeneratorToolPage/ThemeGeneratorToolPage.tsx +++ b/apps/fabric-website/src/pages/Styles/ThemeGeneratorToolPage/ThemeGeneratorToolPage.tsx @@ -1,15 +1,41 @@ import * as React from 'react'; import { PageHeader } from '../../../components/PageHeader/PageHeader'; - import { ThemeGeneratorPage } from 'office-ui-fabric-react/lib/components/ThemeGenerator/ThemeGeneratorPage'; +const pageStyles: any = require('../../PageStyles.module.scss'); export class ThemeGeneratorToolPage extends React.Component { public render() { return ( -
    +
    diff --git a/apps/fabric-website/src/styles/_variables.scss b/apps/fabric-website/src/styles/_variables.scss index bff860e6ce658..c1860a81bec57 100644 --- a/apps/fabric-website/src/styles/_variables.scss +++ b/apps/fabric-website/src/styles/_variables.scss @@ -59,6 +59,7 @@ $CodeBlock-toggleButtonHeight: 28px; $Header-backgroundColor: $ms-color-black; $Header-height: 50px; +$Header-height-full-uhf: $Header-height*2; $Nav-width: 208px; diff --git a/apps/fabric-website/src/utilities/pageroute.ts b/apps/fabric-website/src/utilities/pageroute.ts index 62c04a1498bfd..1e19957463ec6 100644 --- a/apps/fabric-website/src/utilities/pageroute.ts +++ b/apps/fabric-website/src/utilities/pageroute.ts @@ -1,7 +1,11 @@ /* - Retreive the route URL for a page in a group from the the AppState + Retreive the route URL for a page without the string after the last hash. */ -export function getPageRouteFromState(pageName: string): string { - return ''; +export function getPathMinusLastHash(path: string): string { + const hashIndex = path.lastIndexOf('#'); + if (hashIndex > 0) { + path = path.substr(0, hashIndex); + } + return path; } \ No newline at end of file diff --git a/apps/fabric-website/tslint.json b/apps/fabric-website/tslint.json index c1579f8b41531..150bae09e1c3e 100644 --- a/apps/fabric-website/tslint.json +++ b/apps/fabric-website/tslint.json @@ -14,6 +14,7 @@ "jsx-alignment": false, "jsx-ban-props": false, "jsx-no-string-ref": false, - "jsx-no-bind": false + "jsx-no-bind": false, + "prefer-const": false } } \ No newline at end of file diff --git a/apps/fabric-website/webpack.uhf.serve.config.js b/apps/fabric-website/webpack.uhf.serve.config.js index 4e0fa2d8a562c..a88cccf14be92 100644 --- a/apps/fabric-website/webpack.uhf.serve.config.js +++ b/apps/fabric-website/webpack.uhf.serve.config.js @@ -14,20 +14,22 @@ const version = require('./package.json').version; const isProduction = process.argv.indexOf('--production') > -1; const minFileNamePart = isProduction ? '.min' : ''; const entryPointFilename = 'fabric-sitev5'; +const devServer = { + host: HOST_NAME, + disableHostCheck: true, + port: 4324 +} module.exports = resources.createServeConfig({ entry: './src/root.tsx', output: { filename: entryPointFilename + '.js', path: path.join(__dirname, 'dist'), - publicPath: '/dist/', + publicPath: 'http://'+ HOST_NAME +':' + devServer.port + '/dist/', chunkFilename: `${entryPointFilename}-${version}-[name]${minFileNamePart}.js` }, - devServer: { - host: HOST_NAME, - disableHostCheck: true - }, + devServer: devServer, externals: { 'react': 'React', diff --git a/apps/ssr-tests/CHANGELOG.json b/apps/ssr-tests/CHANGELOG.json new file mode 100644 index 0000000000000..a7493db923324 --- /dev/null +++ b/apps/ssr-tests/CHANGELOG.json @@ -0,0 +1,17 @@ +{ + "name": "ssr-tests", + "entries": [ + { + "version": "5.0.1", + "tag": "ssr-tests_v5.0.1", + "date": "Mon, 12 Mar 2018 06:29:20 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.62.1 <6.0.0` to `>=5.63.0 <6.0.0`" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/apps/ssr-tests/CHANGELOG.md b/apps/ssr-tests/CHANGELOG.md new file mode 100644 index 0000000000000..00e6e7475291d --- /dev/null +++ b/apps/ssr-tests/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change Log - ssr-tests + +This log was last generated on Mon, 12 Mar 2018 06:29:20 GMT and should not be manually modified. + +## 5.0.1 +Mon, 12 Mar 2018 06:29:20 GMT + +*Initial release* + diff --git a/apps/ssr-tests/package.json b/apps/ssr-tests/package.json index d93a62255b90c..2d14e8a95200a 100644 --- a/apps/ssr-tests/package.json +++ b/apps/ssr-tests/package.json @@ -21,7 +21,7 @@ "@types/mocha": "2.2.39", "@types/webpack-env": "1.13.0", "mocha": "^3.3.0", - "office-ui-fabric-react": ">=5.45.1 <6.0.0", + "office-ui-fabric-react": ">=5.64.3 <6.0.0", "raw-loader": "^0.5.1", "react": "^16.2.0", "react-dom": "^16.2.0", diff --git a/apps/test-bundle-button/CHANGELOG.json b/apps/test-bundle-button/CHANGELOG.json new file mode 100644 index 0000000000000..685744c0f8f93 --- /dev/null +++ b/apps/test-bundle-button/CHANGELOG.json @@ -0,0 +1,17 @@ +{ + "name": "test-bundle-button", + "entries": [ + { + "version": "5.0.1", + "tag": "test-bundle-button_v5.0.1", + "date": "Mon, 12 Mar 2018 06:29:20 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.62.1 <6.0.0` to `>=5.63.0 <6.0.0`" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/apps/test-bundle-button/CHANGELOG.md b/apps/test-bundle-button/CHANGELOG.md new file mode 100644 index 0000000000000..00ae70f82d049 --- /dev/null +++ b/apps/test-bundle-button/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change Log - test-bundle-button + +This log was last generated on Mon, 12 Mar 2018 06:29:20 GMT and should not be manually modified. + +## 5.0.1 +Mon, 12 Mar 2018 06:29:20 GMT + +*Initial release* + diff --git a/apps/test-bundle-button/package.json b/apps/test-bundle-button/package.json index 423e47748dc17..40d2365aa19f0 100644 --- a/apps/test-bundle-button/package.json +++ b/apps/test-bundle-button/package.json @@ -25,7 +25,7 @@ "dependencies": { "react": "^0.14 || ^15.0.1-0 || ^16.0.0-0", "react-dom": "^0.14 || ^15.0.1-0 || ^16.0.0-0", - "office-ui-fabric-react": ">=5.45.1 <6.0.0", + "office-ui-fabric-react": ">=5.64.3 <6.0.0", "tslib": "^1.7.1" } } \ No newline at end of file diff --git a/apps/test-bundle-button/tsconfig.json b/apps/test-bundle-button/tsconfig.json index 39d960a137572..ae0d33a8e9be2 100644 --- a/apps/test-bundle-button/tsconfig.json +++ b/apps/test-bundle-button/tsconfig.json @@ -11,7 +11,7 @@ "importHelpers": true, "forceConsistentCasingInFileNames": true, "moduleResolution": "node", - "preserveConstEnums": true, + "preserveConstEnums": false, "types": [ "webpack-env" ], diff --git a/apps/todo-app/CHANGELOG.json b/apps/todo-app/CHANGELOG.json new file mode 100644 index 0000000000000..a74c6bfd883d1 --- /dev/null +++ b/apps/todo-app/CHANGELOG.json @@ -0,0 +1,17 @@ +{ + "name": "todo-app", + "entries": [ + { + "version": "5.0.1", + "tag": "todo-app_v5.0.1", + "date": "Mon, 12 Mar 2018 06:29:20 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.62.1 <6.0.0` to `>=5.63.0 <6.0.0`" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/apps/todo-app/CHANGELOG.md b/apps/todo-app/CHANGELOG.md new file mode 100644 index 0000000000000..9248491dc4d8d --- /dev/null +++ b/apps/todo-app/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change Log - todo-app + +This log was last generated on Mon, 12 Mar 2018 06:29:20 GMT and should not be manually modified. + +## 5.0.1 +Mon, 12 Mar 2018 06:29:20 GMT + +*Initial release* + diff --git a/apps/todo-app/package.json b/apps/todo-app/package.json index 86563e4c8da56..49b3155b3d942 100644 --- a/apps/todo-app/package.json +++ b/apps/todo-app/package.json @@ -19,10 +19,10 @@ "@microsoft/load-themed-styles": "^1.7.13", "es6-promise": "^4.1.0", "immutability-helper": "^2.6.4", - "office-ui-fabric-react": ">=5.45.1 <6.0.0", + "office-ui-fabric-react": ">=5.64.3 <6.0.0", "react": "^16.2.0", "react-dom": "^16.2.0", - "typescript": "2.6.2", + "typescript": "2.7.2", "tslib": "^1.7.1" } } \ No newline at end of file diff --git a/apps/todo-app/src/DataProvider.ts b/apps/todo-app/src/DataProvider.ts index 630f1a4278f06..368a058c4c009 100644 --- a/apps/todo-app/src/DataProvider.ts +++ b/apps/todo-app/src/DataProvider.ts @@ -110,7 +110,7 @@ export default class DataProvider implements IDataProvider { */ public toggleComplete(item: ITodoItem): Promise { // Create a new Item in which the PercentComplete value has been changed. - const newItem: ITodoItem = update(item, { + const newItem: ITodoItem = (update as any)(item, { isComplete: { $set: item.isComplete === true ? false : true } }); diff --git a/apps/todo-app/src/components/TodoForm.tsx b/apps/todo-app/src/components/TodoForm.tsx index 72b714bc40964..f2c71d9439c07 100644 --- a/apps/todo-app/src/components/TodoForm.tsx +++ b/apps/todo-app/src/components/TodoForm.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { autobind, BaseComponent, IBaseProps } from 'office-ui-fabric-react/lib/Utilities'; +import { autobind, BaseComponent, IBaseProps, createRef } from 'office-ui-fabric-react/lib/Utilities'; import { PrimaryButton } from 'office-ui-fabric-react/lib/Button'; import { TextField, ITextField } from 'office-ui-fabric-react/lib/TextField'; import * as stylesImport from './Todo.scss'; @@ -42,7 +42,7 @@ export interface ITodoFormState { * Button: https://fabricreact.azurewebsites.net/fabric-react/master/#/examples/button */ export default class TodoForm extends BaseComponent { - private _textField: ITextField; + private _textField = createRef(); constructor(props: ITodoFormProps) { super(props); @@ -62,7 +62,7 @@ export default class TodoForm extends BaseComponent): void { event.preventDefault(); - if (!this._getTitleErrorMessage(this._textField.value || '')) { + const { value: textField } = this._textField; + if (!textField) { + return; + } + + if (!this._getTitleErrorMessage(textField.value || '')) { this.setState({ inputValue: '' } as ITodoFormState); - this.props.onSubmit(this._textField.value || ''); + this.props.onSubmit(textField.value || ''); } else { this.setState({ errorMessage: this._getTitleErrorMessage(this.state.inputValue) } as ITodoFormState); - this._textField.focus(); + textField.focus(); } } diff --git a/apps/todo-app/src/components/TodoItem.tsx b/apps/todo-app/src/components/TodoItem.tsx index dbb215e6ab296..79e4ec8bcd066 100644 --- a/apps/todo-app/src/components/TodoItem.tsx +++ b/apps/todo-app/src/components/TodoItem.tsx @@ -20,8 +20,8 @@ import strings from './../strings'; export default class TodoItem extends React.Component { private static ANIMATION_TIMEOUT = 200; - private _animationTimeoutId: number; - private _rowItem: HTMLDivElement; + private _animationTimeoutId!: number; + private _rowItem!: HTMLDivElement; constructor(props: ITodoItemProps) { super(props); diff --git a/apps/todo-app/tslint.json b/apps/todo-app/tslint.json index cd3b575b4545f..640af822902da 100644 --- a/apps/todo-app/tslint.json +++ b/apps/todo-app/tslint.json @@ -6,6 +6,7 @@ "no-any": false, "typedef": [ false - ] + ], + "prefer-const": false } } \ No newline at end of file diff --git a/apps/vr-tests/CHANGELOG.json b/apps/vr-tests/CHANGELOG.json new file mode 100644 index 0000000000000..235caca4618d0 --- /dev/null +++ b/apps/vr-tests/CHANGELOG.json @@ -0,0 +1,17 @@ +{ + "name": "vr-tests", + "entries": [ + { + "version": "5.0.1", + "tag": "vr-tests_v5.0.1", + "date": "Mon, 12 Mar 2018 06:29:20 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"office-ui-fabric-react\" from `>=5.62.1 <6.0.0` to `>=5.63.0 <6.0.0`" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/apps/vr-tests/CHANGELOG.md b/apps/vr-tests/CHANGELOG.md new file mode 100644 index 0000000000000..e0559aaa4ce10 --- /dev/null +++ b/apps/vr-tests/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change Log - vr-tests + +This log was last generated on Mon, 12 Mar 2018 06:29:20 GMT and should not be manually modified. + +## 5.0.1 +Mon, 12 Mar 2018 06:29:20 GMT + +*Initial release* + diff --git a/apps/vr-tests/package.json b/apps/vr-tests/package.json index 87619aa70d8f7..0a56de76ce057 100644 --- a/apps/vr-tests/package.json +++ b/apps/vr-tests/package.json @@ -23,15 +23,15 @@ "style-loader": "^0.19.0", "awesome-typescript-loader": "^3.2.3", "office-ui-fabric-react-tslint": ">=5.0.0 <6.0.0", - "screener-storybook": "^0.9.2", + "screener-storybook": "^0.11.1", "screener-runner": "^0.6.19", "storybook-readme": "=3.0.6" }, "dependencies": { - "office-ui-fabric-react": ">=5.45.1 <6.0.0", + "office-ui-fabric-react": ">=5.64.3 <6.0.0", "react": "^16.2.0", "react-dom": "^16.2.0", - "typescript": "2.6.2", + "typescript": "2.7.2", "tslib": "^1.7.1" } } \ No newline at end of file diff --git a/apps/vr-tests/src/stories/Button.stories.tsx b/apps/vr-tests/src/stories/Button.stories.tsx index 00748de83e905..ce9b0125a0087 100644 --- a/apps/vr-tests/src/stories/Button.stories.tsx +++ b/apps/vr-tests/src/stories/Button.stories.tsx @@ -22,12 +22,16 @@ const commandProps: IButtonProps = { { key: 'emailMessage', name: 'Email message', - icon: 'Mail' + iconProps: { + iconName: 'Mail' + } }, { key: 'calendarEvent', name: 'Calendar event', - icon: 'Calendar' + iconProps: { + iconName: 'Calendar' + } } ] } @@ -137,6 +141,7 @@ storiesOf('Button Split', module) .mouseDown('.ms-Button:nth-child(1)') .snapshot('pressed main', { cropTo: '.testWrapper' }) .hover('.ms-Button') // reset mouseDown + .mouseUp('.ms-Button:nth-child(2)') .mouseDown('.ms-Button:nth-child(2)') .snapshot('pressed split', { cropTo: '.testWrapper' }) .click('.ms-Button:nth-child(2)') diff --git a/apps/vr-tests/src/stories/ChoiceGroup.stories.tsx b/apps/vr-tests/src/stories/ChoiceGroup.stories.tsx index b3facd8fe5b42..21fa7b976c834 100644 --- a/apps/vr-tests/src/stories/ChoiceGroup.stories.tsx +++ b/apps/vr-tests/src/stories/ChoiceGroup.stories.tsx @@ -29,9 +29,12 @@ storiesOf('ChoiceGroup', module) steps={ new Screener.Steps() .snapshot('default', { cropTo: '.testWrapper' }) .hover('div.ms-ChoiceField:nth-of-type(1)') - .snapshot('hover selected', { cropTo: '.testWrapper' }) - .hover('div.ms-ChoiceField:nth-of-type(2)') .snapshot('hover unselected', { cropTo: '.testWrapper' }) + .click('div.ms-ChoiceField:nth-of-type(1)') + .snapshot('selected', { cropTo: '.testWrapper' }) + .click('div.ms-ChoiceField:nth-of-type(1)') + .hover('div.ms-ChoiceField:nth-of-type(1)') + .snapshot('hover selected', { cropTo: '.testWrapper' }) .end() } > @@ -40,14 +43,12 @@ storiesOf('ChoiceGroup', module) )) .add('Root', () => ( )) .add('Required', () => ( ( )) - .add('With images', () => ( + .add('With default size images', () => ( + )) + .add('With large size images', () => ( + ( ({ ...item, icon: '' })) } - farItems={ farItems.map(item => ({ ...item, icon: '' })) } + items={ items.map(item => ({ ...item, iconProps: undefined })) } + farItems={ farItems.map(item => ({ ...item, iconProps: undefined })) } /> )) .add('Icons only', () => ( diff --git a/apps/vr-tests/src/stories/Icon.stories.tsx b/apps/vr-tests/src/stories/Icon.stories.tsx index 07ae7372a7795..98c0d82dc3e00 100644 --- a/apps/vr-tests/src/stories/Icon.stories.tsx +++ b/apps/vr-tests/src/stories/Icon.stories.tsx @@ -4,8 +4,16 @@ import Screener, { Steps } from 'screener-storybook/src/screener'; import { storiesOf } from '@storybook/react'; import { FabricDecorator } from '../utilities'; import { Icon, IconType, getIconClassName } from 'office-ui-fabric-react'; +import * as IconNames from '../../../../packages/icons/src/IconNames'; + import { TestImages } from '../common/TestImages'; +// Rendering allIcons tests that the icon package can initialize all icons from the cdn +let allIcons: JSX.Element[] = []; +for (let iconName in (IconNames as any)['IconNames']) { + allIcons.push(); +} + storiesOf('Icon', module) .addDecorator(FabricDecorator) .addDecorator(story => ( @@ -20,9 +28,7 @@ storiesOf('Icon', module) )).add('Root', () => (
    - - - + { allIcons }
    diff --git a/apps/vr-tests/src/stories/Image.css b/apps/vr-tests/src/stories/Image.css deleted file mode 100644 index 8e2860d398bec..0000000000000 --- a/apps/vr-tests/src/stories/Image.css +++ /dev/null @@ -1,4 +0,0 @@ -.ms-Image { - border: 2px solid #aaa; - margin-bottom: 20px; -} \ No newline at end of file diff --git a/apps/vr-tests/src/stories/Image.stories.tsx b/apps/vr-tests/src/stories/Image.stories.tsx index 3263598b35319..c9950f1725517 100644 --- a/apps/vr-tests/src/stories/Image.stories.tsx +++ b/apps/vr-tests/src/stories/Image.stories.tsx @@ -5,8 +5,6 @@ import { storiesOf } from '@storybook/react'; import { FabricDecorator } from '../utilities'; import { Image, ImageFit, Label, Layer } from 'office-ui-fabric-react'; -import './Image.css'; - const img350x150 = 'http://placehold.it/350x150'; let imagePropsFitNone = { diff --git a/apps/vr-tests/src/stories/SearchBox.stories.tsx b/apps/vr-tests/src/stories/SearchBox.stories.tsx index 242d606fab3f6..9e44c3fd5f4aa 100644 --- a/apps/vr-tests/src/stories/SearchBox.stories.tsx +++ b/apps/vr-tests/src/stories/SearchBox.stories.tsx @@ -26,11 +26,11 @@ storiesOf('SearchBox', module) )).add('Root', () => (
    - +
    )).add('Full', () => ( - + )); \ No newline at end of file diff --git a/common/changes/@uifabric/example-app-base/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json b/common/changes/@uifabric/example-app-base/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json deleted file mode 100644 index 9401437d55539..0000000000000 --- a/common/changes/@uifabric/example-app-base/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "", - "packageName": "@uifabric/example-app-base", - "type": "none" - } - ], - "packageName": "@uifabric/example-app-base", - "email": "jolore@microsoft.com" -} \ No newline at end of file diff --git a/common/changes/@uifabric/fabric-website/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json b/common/changes/@uifabric/fabric-website/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json deleted file mode 100644 index 6218fcd512b73..0000000000000 --- a/common/changes/@uifabric/fabric-website/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "", - "packageName": "@uifabric/fabric-website", - "type": "none" - } - ], - "packageName": "@uifabric/fabric-website", - "email": "jolore@microsoft.com" -} \ No newline at end of file diff --git a/common/changes/@uifabric/file-type-icons/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json b/common/changes/@uifabric/file-type-icons/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json deleted file mode 100644 index b8195d1db67c5..0000000000000 --- a/common/changes/@uifabric/file-type-icons/jolore-addingWorkWeekDateRange_2018-01-24-01-39.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "", - "packageName": "@uifabric/file-type-icons", - "type": "none" - } - ], - "packageName": "@uifabric/file-type-icons", - "email": "jolore@microsoft.com" -} \ No newline at end of file diff --git a/common/changes/@uifabric/icons/srideshpande-icon-config-update2_2018-01-31-22-05.json b/common/changes/@uifabric/icons/srideshpande-icon-config-update2_2018-01-31-22-05.json deleted file mode 100644 index 4ce5961009bea..0000000000000 --- a/common/changes/@uifabric/icons/srideshpande-icon-config-update2_2018-01-31-22-05.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "packageName": "@uifabric/icons", - "comment": "updating config files in @uifabric/icons package", - "type": "patch" - } - ], - "packageName": "@uifabric/icons", - "email": "srdeshpa@microsoft.com" -} \ No newline at end of file diff --git a/common/changes/@uifabric/icons/srideshpande-icon-update_2018-01-24-23-44.json b/common/changes/@uifabric/icons/srideshpande-icon-update_2018-01-24-23-44.json deleted file mode 100644 index 6fcb96111e0eb..0000000000000 --- a/common/changes/@uifabric/icons/srideshpande-icon-update_2018-01-24-23-44.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "packageName": "@uifabric/icons", - "comment": "Updating fabric icons in office-ui-fabric-react's @uifabric/icons package", - "type": "patch" - } - ], - "packageName": "@uifabric/icons", - "email": "srdeshpa@microsoft.com" -} \ No newline at end of file diff --git a/common/changes/office-ui-fabric-react/-1350-controlled-textfield_2018-01-24-23-29.json b/common/changes/office-ui-fabric-react/-1350-controlled-textfield_2018-01-24-23-29.json deleted file mode 100644 index 7a07c28b30bbc..0000000000000 --- a/common/changes/office-ui-fabric-react/-1350-controlled-textfield_2018-01-24-23-29.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "packageName": "office-ui-fabric-react", - "comment": "Adds the _isControlled flag to the TextField component that disabled onChange if the value prop is set, which follows developer expectations with React inputs.", - "type": "patch" - } - ], - "packageName": "office-ui-fabric-react", - "email": "v-jojanz@microsoft.com" -} \ No newline at end of file diff --git a/common/changes/office-ui-fabric-react/basebutton-description-props_2018-03-15-14-54.json b/common/changes/office-ui-fabric-react/basebutton-description-props_2018-03-15-14-54.json new file mode 100644 index 0000000000000..efd3b5ba2a758 --- /dev/null +++ b/common/changes/office-ui-fabric-react/basebutton-description-props_2018-03-15-14-54.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "office-ui-fabric-react", + "comment": "Button: fixed bug causes by onRenderDescription pulling from this.props instead of passed in props", + "type": "patch" + } + ], + "packageName": "office-ui-fabric-react", + "email": "mgodbolt@microsoft.com" +} \ No newline at end of file diff --git a/common/changes/office-ui-fabric-react/stick-bgc-3776_2018-01-29-23-43.json b/common/changes/office-ui-fabric-react/detailslist-dataselectionfix-4077_2018-03-15-17-58.json similarity index 58% rename from common/changes/office-ui-fabric-react/stick-bgc-3776_2018-01-29-23-43.json rename to common/changes/office-ui-fabric-react/detailslist-dataselectionfix-4077_2018-03-15-17-58.json index de7f060b2fb53..077f693e0967d 100644 --- a/common/changes/office-ui-fabric-react/stick-bgc-3776_2018-01-29-23-43.json +++ b/common/changes/office-ui-fabric-react/detailslist-dataselectionfix-4077_2018-03-15-17-58.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "office-ui-fabric-react", - "comment": "added return default when reaching the html tag in while loop inside _getBackground() inside Sticky component.", + "comment": "Added _isSelectionDisabled check in SelectionZone's onMouseDown event handler", "type": "patch" } ], diff --git a/common/changes/office-ui-fabric-react/selection-modal_2018-01-30-15-24.json b/common/changes/office-ui-fabric-react/magellan-nullPickersItem_2018-03-14-23-46.json similarity index 60% rename from common/changes/office-ui-fabric-react/selection-modal_2018-01-30-15-24.json rename to common/changes/office-ui-fabric-react/magellan-nullPickersItem_2018-03-14-23-46.json index 8c3438eeae852..f84444314565c 100644 --- a/common/changes/office-ui-fabric-react/selection-modal_2018-01-30-15-24.json +++ b/common/changes/office-ui-fabric-react/magellan-nullPickersItem_2018-03-14-23-46.json @@ -2,10 +2,10 @@ "changes": [ { "packageName": "office-ui-fabric-react", - "comment": "Fix bug in modal selection handling", + "comment": "Pickers: Allow onItemSelected to return null", "type": "patch" } ], "packageName": "office-ui-fabric-react", - "email": "tmichon@microsoft.com" + "email": "law@microsoft.com" } \ No newline at end of file diff --git a/common/changes/office-ui-fabric-react/users-demarcey-anchorMenuItems_2018-03-06-21-28.json b/common/changes/office-ui-fabric-react/users-demarcey-anchorMenuItems_2018-03-06-21-28.json new file mode 100644 index 0000000000000..93a460742b19c --- /dev/null +++ b/common/changes/office-ui-fabric-react/users-demarcey-anchorMenuItems_2018-03-06-21-28.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "office-ui-fabric-react", + "comment": "ContextualMenu: Allow anchor menu items to have sub menus. Added prop for sub menu hover delay.", + "type": "patch" + } + ], + "packageName": "office-ui-fabric-react", + "email": "demarcey@microsoft.com" +} diff --git a/common/config/rush/npm-shrinkwrap.json b/common/config/rush/npm-shrinkwrap.json index 2abaf9ca0411e..bad9b61a44a68 100644 --- a/common/config/rush/npm-shrinkwrap.json +++ b/common/config/rush/npm-shrinkwrap.json @@ -4,18 +4,13 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@hypnosphi/fuse.js": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@hypnosphi/fuse.js/-/fuse.js-3.0.9.tgz", - "integrity": "sha1-6pn2EhtKjwZbTHH4VZXbJxRJiAc=" - }, "@microsoft/api-extractor": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-4.3.4.tgz", - "integrity": "sha1-YLgRx/KPIVPpM2qS26p06RWiA/Q=", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-4.3.7.tgz", + "integrity": "sha1-lwkA2yt7qjbQxTzmS6eZfMAri3o=", "requires": { - "@microsoft/node-core-library": "0.3.21", - "@microsoft/ts-command-line": "2.2.9", + "@microsoft/node-core-library": "0.3.24", + "@microsoft/ts-command-line": "2.2.12", "@types/fs-extra": "0.0.37", "@types/node": "6.0.88", "@types/z-schema": "3.16.31", @@ -40,23 +35,23 @@ } }, "@microsoft/load-themed-styles": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.7.14.tgz", - "integrity": "sha1-94a/GDCgjx4973fPHgd7WbX1K0A=" + "version": "1.7.35", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.7.35.tgz", + "integrity": "sha1-R0hnGj9ENnN0vZ+i3mUIg5/DXG0=" }, "@microsoft/loader-load-themed-styles": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@microsoft/loader-load-themed-styles/-/loader-load-themed-styles-1.6.9.tgz", - "integrity": "sha1-y/ydLav1P8tnNcGogtMLURPtiWg=", + "version": "1.7.16", + "resolved": "https://registry.npmjs.org/@microsoft/loader-load-themed-styles/-/loader-load-themed-styles-1.7.16.tgz", + "integrity": "sha1-D9UEsZp7iY+xfMQwS80OxviQzZA=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "loader-utils": "1.1.0" } }, "@microsoft/node-core-library": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/@microsoft/node-core-library/-/node-core-library-0.3.21.tgz", - "integrity": "sha1-jBt2IAW65+7DK3jw0LksdCAgTXI=", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/@microsoft/node-core-library/-/node-core-library-0.3.24.tgz", + "integrity": "sha1-GnbISyDF+kgnmFJIphmvEHmMqyw=", "requires": { "@types/fs-extra": "0.0.37", "@types/node": "6.0.88", @@ -74,13 +69,13 @@ } }, "@microsoft/ts-command-line": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/@microsoft/ts-command-line/-/ts-command-line-2.2.9.tgz", - "integrity": "sha1-lKiqVYrXQFqBp10oARbspgw9Tuo=", + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@microsoft/ts-command-line/-/ts-command-line-2.2.12.tgz", + "integrity": "sha1-bNvP8KxY9DUsKRXnNeQKtviRBrA=", "requires": { "@types/argparse": "1.0.33", "@types/node": "6.0.88", - "argparse": "1.0.9", + "argparse": "1.0.10", "colors": "1.1.2" }, "dependencies": { @@ -93,18 +88,18 @@ }, "@rush-temp/build": { "version": "file:projects/build.tgz", - "integrity": "sha1-w/7BKfX9iJm7TQC9hTv5Dzugs7o=", + "integrity": "sha1-Ver5mhBaDTlt7Y5nDUvWPDdQhPI=", "requires": { - "@microsoft/api-extractor": "4.3.4", - "@microsoft/load-themed-styles": "1.7.14", - "@microsoft/loader-load-themed-styles": "1.6.9", - "autoprefixer": "7.2.3", - "awesome-typescript-loader": "3.4.1", + "@microsoft/api-extractor": "4.3.7", + "@microsoft/load-themed-styles": "1.7.35", + "@microsoft/loader-load-themed-styles": "1.7.16", + "autoprefixer": "7.2.6", + "awesome-typescript-loader": "3.5.0", "bundlesize": "0.15.3", - "chalk": "2.3.0", + "chalk": "2.3.1", "command-line-args": "4.0.7", "cpx": "1.5.0", - "css-loader": "0.28.7", + "css-loader": "0.28.10", "github": "7.3.2", "glob": "7.1.2", "gzip-size": "3.0.0", @@ -113,8 +108,8 @@ "mustache": "2.3.0", "node-sass": "4.7.2", "open": "0.0.5", - "postcss": "6.0.14", - "postcss-loader": "2.0.9", + "postcss": "6.0.19", + "postcss-loader": "2.1.1", "postcss-modules": "0.8.0", "raf": "3.4.0", "raw-loader": "0.5.1", @@ -122,20 +117,20 @@ "source-map-loader": "0.2.3", "style-loader": "0.19.1", "ts-jest": "21.2.4", - "tslint": "5.8.0", - "tslint-microsoft-contrib": "5.0.1", - "typescript": "2.6.2", + "tslint": "5.9.1", + "tslint-microsoft-contrib": "5.0.3", + "typescript": "2.7.2", "uglifyjs-webpack-plugin": "0.4.6", - "webpack": "3.10.0", - "webpack-bundle-analyzer": "2.9.1", - "webpack-dev-server": "2.9.7", - "webpack-notifier": "1.5.0", + "webpack": "3.11.0", + "webpack-bundle-analyzer": "2.11.0", + "webpack-dev-server": "2.11.2", + "webpack-notifier": "1.5.1", "yargs": "6.6.0" } }, "@rush-temp/example-app-base": { "version": "file:projects/example-app-base.tgz", - "integrity": "sha1-yv/gcJU5bSKdZDTXrlZiwqyhgOc=", + "integrity": "sha1-9dFwsZXpye1aVKCC4clouHgGnBE=", "requires": { "@types/es6-promise": "0.0.32", "@types/highlight.js": "9.12.2", @@ -143,20 +138,20 @@ "@types/react-dom": "16.0.3", "@types/webpack-env": "1.13.0", "es6-map": "0.1.5", - "es6-promise": "4.1.1", + "es6-promise": "4.2.4", "es6-weak-map": "2.0.2", "highlight.js": "9.12.0", - "office-ui-fabric-react": "5.33.1", + "office-ui-fabric-react": "5.56.0", "react": "16.2.0", "react-dom": "16.2.0", - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@rush-temp/experiments": { "version": "file:projects/experiments.tgz", - "integrity": "sha1-YEUlDKp26ZYNmnnZ98ZjxkfyfcU=", + "integrity": "sha1-DN9S5Fs/j/ZkpFT0xo2wzGt34+I=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/enzyme": "3.1.5", "@types/enzyme-adapter-react-16": "1.0.1", "@types/es6-promise": "0.0.32", @@ -165,27 +160,27 @@ "@types/react": "16.0.25", "@types/react-addons-test-utils": "0.14.18", "@types/react-dom": "16.0.3", - "@types/react-test-renderer": "16.0.0", + "@types/react-test-renderer": "16.0.1", "@types/resemblejs": "1.3.28", "@types/sinon": "2.2.2", "@types/webpack-env": "1.13.0", - "enzyme": "3.2.0", - "enzyme-adapter-react-16": "1.1.0", + "enzyme": "3.3.0", + "enzyme-adapter-react-16": "1.1.1", "es6-weak-map": "2.0.2", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "react": "16.2.0", "react-dom": "16.2.0", "react-highlight": "0.10.0", "react-test-renderer": "16.2.0", - "sinon": "4.1.3", - "tslib": "1.8.1" + "sinon": "4.4.2", + "tslib": "1.9.0" } }, "@rush-temp/fabric-website": { "version": "file:projects/fabric-website.tgz", - "integrity": "sha1-gYsXsKWTmM+W9uqrQeIiMpcSjIY=", + "integrity": "sha1-ZiTAxKp6omRHIlx54OVhUZsnloo=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/es6-promise": "0.0.32", "@types/node": "8.0.26", "@types/prop-types": "15.5.2", @@ -194,56 +189,56 @@ "@types/resemblejs": "1.3.28", "@types/webpack-env": "1.13.0", "color-functions": "1.1.0", - "es6-promise": "4.1.1", + "es6-promise": "4.2.4", "es6-weak-map": "2.0.2", "highlight.js": "9.12.0", "json-loader": "0.5.7", - "office-ui-fabric-core": "9.3.0", + "office-ui-fabric-core": "9.4.0", "react": "16.2.0", "react-dom": "16.2.0", "react-highlight": "0.10.0", - "tslib": "1.8.1", + "tslib": "1.9.0", "write-file-webpack-plugin": "4.2.0" } }, "@rush-temp/file-type-icons": { "version": "file:projects/file-type-icons.tgz", - "integrity": "sha1-iodhc0X0kWDVfFEa1EXIbJlBAkg=", + "integrity": "sha1-4G9oT36P2AYqCpjXHfSm2Nlt2PI=", "requires": { "@types/react": "16.0.25", "@types/react-dom": "16.0.3", "react": "16.2.0", "react-dom": "16.2.0", - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@rush-temp/icons": { "version": "file:projects/icons.tgz", - "integrity": "sha1-h1sg1jJD+9BQBWnTZGky86SthHU=", + "integrity": "sha1-DnOJqyGa3UW80sWtP83EaHf3cGM=", "requires": { - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@rush-temp/jest-serializer-merge-styles": { "version": "file:projects/jest-serializer-merge-styles.tgz", - "integrity": "sha1-7yqvQu+aqWCLHvTvFA9SKYaTAIM=", + "integrity": "sha1-kit2DYaoDkGt01iWhFQnsRGFoTc=", "requires": { "@types/jest": "21.1.8" } }, "@rush-temp/merge-styles": { "version": "file:projects/merge-styles.tgz", - "integrity": "sha1-wrp/z/fR48MjQ7UM2pHEM4fZJpg=", + "integrity": "sha1-N4mnfc8Hv2i6QE1IvJxt4gi9AuY=", "requires": { "@types/jest": "21.1.8", - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@rush-temp/office-ui-fabric-react": { "version": "file:projects/office-ui-fabric-react.tgz", - "integrity": "sha1-OQC5rWWFkJt2uAakLsUkrdaoUAk=", + "integrity": "sha1-ADTTmStgRKaou3YbaCqOSn0awyU=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/enzyme": "3.1.5", "@types/enzyme-adapter-react-16": "1.0.1", "@types/es6-promise": "0.0.32", @@ -251,56 +246,56 @@ "@types/prop-types": "15.5.2", "@types/react": "16.0.25", "@types/react-dom": "16.0.3", - "@types/react-test-renderer": "16.0.0", + "@types/react-test-renderer": "16.0.1", "@types/resemblejs": "1.3.28", "@types/sinon": "2.2.2", "@types/webpack-env": "1.13.0", - "enzyme": "3.2.0", - "enzyme-adapter-react-16": "1.1.0", + "enzyme": "3.3.0", + "enzyme-adapter-react-16": "1.1.1", "es6-map": "0.1.5", - "es6-promise": "4.1.1", + "es6-promise": "4.2.4", "es6-weak-map": "2.0.2", "highlight.js": "9.12.0", - "office-ui-fabric-core": "9.3.0", - "prop-types": "15.6.0", + "office-ui-fabric-core": "9.4.0", + "prop-types": "15.6.1", "react": "16.2.0", "react-dom": "16.2.0", "react-highlight": "0.10.0", "react-test-renderer": "16.2.0", "resemblejs": "2.2.6", - "sinon": "4.1.3", - "tslib": "1.8.1" + "sinon": "4.4.2", + "tslib": "1.9.0" } }, "@rush-temp/office-ui-fabric-react-tslint": { "version": "file:projects/office-ui-fabric-react-tslint.tgz", - "integrity": "sha1-WhVDndm+8A91sOhaSJP4DoVcWUs=", + "integrity": "sha1-RqQY3nSg/9snfOzrcQNVR41UiP8=", "requires": { - "tslint-react": "3.2.0" + "tslint-react": "3.5.1" } }, "@rush-temp/ssr-tests": { "version": "file:projects/ssr-tests.tgz", - "integrity": "sha1-lTlFe2tuN/0ZkkB9qZcy+hcoMP0=", + "integrity": "sha1-/RiZyyAIm4YIGMN/gmh0EFB/2Jw=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/es6-promise": "0.0.32", "@types/mocha": "2.2.39", "@types/webpack-env": "1.13.0", - "es6-promise": "4.1.1", + "es6-promise": "4.2.4", "mocha": "3.5.3", "raw-loader": "0.5.1", "react": "16.2.0", "react-dom": "16.2.0", - "tslib": "1.8.1", - "webpack": "3.10.0" + "tslib": "1.9.0", + "webpack": "3.11.0" } }, "@rush-temp/styling": { "version": "file:projects/styling.tgz", - "integrity": "sha1-5ZFIqOTdmEnfFV4YvdtxwfzZgoo=", + "integrity": "sha1-yooDPN6j4bEXiRcw/nKoruCTENM=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/jest": "21.1.8", "@types/react": "16.0.25", "@types/webpack-env": "1.13.0", @@ -308,12 +303,12 @@ "es6-weak-map": "2.0.2", "react": "16.2.0", "react-dom": "16.2.0", - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@rush-temp/test-bundle-button": { "version": "file:projects/test-bundle-button.tgz", - "integrity": "sha1-Y2JNJ5HZUs1pH2q6Xui4Sz4IMy0=", + "integrity": "sha1-hHSH1ybHvJHL39pq1wIYc+s71lU=", "requires": { "@types/prop-types": "15.5.2", "@types/react": "16.0.25", @@ -321,31 +316,31 @@ "@types/webpack-env": "1.13.0", "react": "16.2.0", "react-dom": "16.2.0", - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@rush-temp/todo-app": { "version": "file:projects/todo-app.tgz", - "integrity": "sha1-Iqd75WQ6efvycKDtaFlYUU465eA=", + "integrity": "sha1-TgRNk3WpedPAxOPIzAAWpZWU69I=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/es6-promise": "0.0.32", "@types/react": "16.0.25", "@types/react-dom": "16.0.3", "@types/webpack-env": "1.13.0", - "es6-promise": "4.1.1", - "immutability-helper": "2.6.4", + "es6-promise": "4.2.4", + "immutability-helper": "2.6.5", "react": "16.2.0", "react-dom": "16.2.0", - "tslib": "1.8.1", - "typescript": "2.6.2" + "tslib": "1.9.0", + "typescript": "2.7.2" } }, "@rush-temp/utilities": { "version": "file:projects/utilities.tgz", - "integrity": "sha1-luCc+RU7XhQ8TdzZ/AIuHYh9Or4=", + "integrity": "sha1-PEyJRbuw/Ha4QmT2cGhecacPKEs=", "requires": { - "@microsoft/load-themed-styles": "1.7.14", + "@microsoft/load-themed-styles": "1.7.35", "@types/enzyme": "3.1.5", "@types/enzyme-adapter-react-16": "1.0.1", "@types/jest": "21.1.8", @@ -353,58 +348,76 @@ "@types/react": "16.0.25", "@types/react-dom": "16.0.3", "@types/sinon": "2.2.2", - "enzyme": "3.2.0", - "enzyme-adapter-react-16": "1.1.0", - "prop-types": "15.6.0", + "enzyme": "3.3.0", + "enzyme-adapter-react-16": "1.1.1", + "prop-types": "15.6.1", "react": "16.2.0", "react-dom": "16.2.0", - "sinon": "4.1.3", - "tslib": "1.8.1" + "sinon": "4.4.2", + "tslib": "1.9.0" + } + }, + "@rush-temp/variants": { + "version": "file:projects/variants.tgz", + "integrity": "sha1-vxbJXzxQp+9DbiRutWD7vAQX7ew=", + "requires": { + "@types/jest": "21.1.8", + "tslib": "1.9.0" } }, "@rush-temp/vr-tests": { "version": "file:projects/vr-tests.tgz", - "integrity": "sha1-ZBRZ+Dnb2VRC5EVyPHdbe7DcQ4E=", + "integrity": "sha1-NzAoR+bMCugFFdIuBZSNjwY5yXM=", "requires": { "@storybook/addon-options": "3.2.3", - "@storybook/react": "3.2.17", + "@storybook/react": "3.3.14", "@types/react": "16.0.25", "@types/react-dom": "16.0.3", "@types/storybook__react": "3.0.5", - "awesome-typescript-loader": "3.4.1", - "css-loader": "0.28.7", + "awesome-typescript-loader": "3.5.0", + "css-loader": "0.28.10", "file-loader": "0.11.2", - "postcss-loader": "2.0.9", + "postcss-loader": "2.1.1", "raw-loader": "0.5.1", "react": "16.2.0", "react-dom": "16.2.0", "screener-runner": "0.6.19", - "screener-storybook": "0.9.15", + "screener-storybook": "0.11.3", "storybook-readme": "3.0.6", "style-loader": "0.19.1", - "tslib": "1.8.1", - "typescript": "2.6.2" + "tslib": "1.9.0", + "typescript": "2.7.2" + } + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "requires": { + "samsam": "1.3.0" } }, "@storybook/addon-actions": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.2.17.tgz", - "integrity": "sha512-B4++4+p6zWTeTBzqe9lgzT8J0onaMfSZsBRJpa5URoDo3d4kTq+DTDs2qHhhTKJb2Drtu24/JlEgJG7lv0Fb0w==", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.3.14.tgz", + "integrity": "sha512-MU+Sz80hlC3+VJW15yoa9y7mzsNechtd9X7WvugIB1Pg6AwY2IYNZoagy2dXwdBD6+sUTj1zWt0c7P7y5A/EAg==", "requires": { - "@storybook/addons": "3.2.17", "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "prop-types": "15.6.0", + "global": "4.3.2", + "make-error": "1.3.4", + "prop-types": "15.6.1", "react-inspector": "2.2.2", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "@storybook/addon-links": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.2.17.tgz", - "integrity": "sha512-AdCH9DsbOfiMDv42/l0Zfk2yhiBrlWuzHk7ubhSwqF3/61sXr+BWFv+SlOx2oFfSWAT7zfg2sC7Wr+us8gs7GQ==", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.3.14.tgz", + "integrity": "sha512-pD+/aOpGPcDQ/4h7UHA+nu3ye0w1KJ8GFz4MCX7a+38rYDUe1ePD5xmLT56zHCKqyKZgrrIoGZg/yEQjpQCJug==", "requires": { - "@storybook/addons": "3.2.17" + "@storybook/components": "3.3.14", + "global": "4.3.2", + "prop-types": "15.6.1" } }, "@storybook/addon-options": { @@ -412,37 +425,42 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-options/-/addon-options-3.2.3.tgz", "integrity": "sha1-6jdA0onUKc52fpaZvzpkfddBWS0=", "requires": { - "@storybook/addons": "3.2.17" + "@storybook/addons": "3.3.14" } }, "@storybook/addons": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.2.17.tgz", - "integrity": "sha512-1/Ux++3hMfYqAgBwgWbGtGAM0CfSdAchf//wDLBUmX09+E5CjiQvW3YwVplNYzfRuAsSrE1GOYJRAsz639oTYQ==" + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.3.14.tgz", + "integrity": "sha512-cVSowQdWOr/XxWk60ykr4a+0gnpVnfWkJ0pIbGQUBcq6tvGrAoZ76Cq18lYS7NHNL2lwoEQT3wBs7w0UaJtOTA==" }, "@storybook/channel-postmessage": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.2.17.tgz", - "integrity": "sha512-sNlXcHTKM6aIxRsQMaMbowsAToYRlbeP/THqulVxoRRKNDPndNnZe/Lu3eSjBjAfNWBLRFfgX903adt82QAPCA==", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.3.14.tgz", + "integrity": "sha512-xFmc2F/OKqrrdMjrvJTfADOl3+fKxKCs4vNr8w26k8gBLDp/JuoSomnar7kR7PfX9mAAfVgVle8erUMkHc0Tsg==", "requires": { - "@storybook/channels": "3.2.17", + "@storybook/channels": "3.3.14", "global": "4.3.2", "json-stringify-safe": "5.0.1" } }, "@storybook/channels": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.2.17.tgz", - "integrity": "sha512-HIdRmFTFVLcbrwYFf6+LyAlgcd57ki+6DDTmcvXQTHCWrOOCJKwfKjHgn6tbnHlGHiWByA8lAdO1bFcYhHxl4Q==" + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.3.14.tgz", + "integrity": "sha512-qrd7WnQDmdX0uMGbTmRKlLL9R8mrVClsT2Idb1YsL7gbTE2X4QyOTt4ANFeCmvZ8LxqOmEv5glcBmfBRNjBPgQ==" + }, + "@storybook/client-logger": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.3.14.tgz", + "integrity": "sha512-dKuASmwvZqriu63CsNlvvUWyQ9EuYqS6sXmdy5yhusycFl+LfhvMMNKzENxb91ZSAcE75wH39VZVdLZTxsH9Fw==" }, "@storybook/components": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.2.17.tgz", - "integrity": "sha512-pXwNKLavYCu18B2EynFu9EKXlKi0LDo0B/KctbJvidxR5ubzqkZu9h2ti3hPPVomR2DQiRx61Vzqd7cbcyy14w==", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.3.14.tgz", + "integrity": "sha512-MCUx0JWk21jspFUb/dqaqBB1ZCBHhSIHlkBt438+oub4CRlTHl5q3tDffyDUzgdzMULi1xubtEH8f9pet87A8w==", "requires": { "glamor": "2.20.40", - "glamorous": "4.11.0", - "prop-types": "15.6.0" + "glamorous": "4.11.6", + "prop-types": "15.6.1" } }, "@storybook/mantra-core": { @@ -455,96 +473,130 @@ "babel-runtime": "6.26.0" } }, + "@storybook/node-logger": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.3.14.tgz", + "integrity": "sha512-MBVr0J//5ENuDqNT5LWKTbLF7rmUJk0BpBnuJJrIif1Z+AfNs1gJz7MeL5V/3GNnUx8jc6NzNWCvNFJUIvf0uw==", + "requires": { + "chalk": "2.3.1", + "npmlog": "4.1.2" + } + }, + "@storybook/podda": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@storybook/podda/-/podda-1.2.3.tgz", + "integrity": "sha512-g7dsdsn50AhlGZ8iIDKdF8bi7Am++iFOq+QN+hNKz3FvgLuf8Dz+mpC/BFl90eE9bEYxXqXKeMf87399Ec5Qhw==", + "requires": { + "babel-runtime": "6.26.0", + "immutable": "3.8.2" + } + }, "@storybook/react": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-3.2.17.tgz", - "integrity": "sha512-1bZXP0wGdlTgRiGsTLQ90G0Swx+Re7o3IAblOdobS/E5fREzEC1zEHdSQYC5ROUoWDLourqcF/zo4I9HpKvnZg==", - "requires": { - "@storybook/addon-actions": "3.2.17", - "@storybook/addon-links": "3.2.17", - "@storybook/addons": "3.2.17", - "@storybook/channel-postmessage": "3.2.17", - "@storybook/ui": "3.2.17", - "airbnb-js-shims": "1.4.0", - "autoprefixer": "7.2.3", - "babel-core": "6.26.0", - "babel-loader": "7.1.2", - "babel-plugin-react-docgen": "1.8.1", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-3.3.14.tgz", + "integrity": "sha512-qeeEhP5JyqmZKKbNdkSIj2SqWN1Q4bqy8ed+b+CS3gPoSGPy7DscbSwykllXvaTO9NASYGjFHG9b6hohQSQurw==", + "requires": { + "@storybook/addon-actions": "3.3.14", + "@storybook/addon-links": "3.3.14", + "@storybook/addons": "3.3.14", + "@storybook/channel-postmessage": "3.3.14", + "@storybook/client-logger": "3.3.14", + "@storybook/node-logger": "3.3.14", + "@storybook/ui": "3.3.14", + "airbnb-js-shims": "1.4.1", + "autoprefixer": "7.2.6", + "babel-loader": "7.1.3", + "babel-plugin-react-docgen": "1.8.3", "babel-plugin-transform-regenerator": "6.26.0", "babel-plugin-transform-runtime": "6.23.0", "babel-preset-env": "1.6.1", "babel-preset-minify": "0.2.0", "babel-preset-react": "6.24.1", - "babel-preset-react-app": "3.1.0", + "babel-preset-react-app": "3.1.1", "babel-preset-stage-0": "6.24.1", "babel-runtime": "6.26.0", "case-sensitive-paths-webpack-plugin": "2.1.1", - "chalk": "2.3.0", - "commander": "2.12.2", - "common-tags": "1.5.1", + "chalk": "2.3.1", + "commander": "2.14.1", + "common-tags": "1.7.2", "configstore": "3.1.1", "core-js": "2.5.3", - "css-loader": "0.28.7", - "dotenv-webpack": "1.5.4", + "css-loader": "0.28.10", + "dotenv-webpack": "1.5.5", "express": "4.16.2", - "file-loader": "1.1.5", + "file-loader": "1.1.10", "find-cache-dir": "1.0.0", "glamor": "2.20.40", - "glamorous": "4.11.0", + "glamorous": "4.11.6", "global": "4.3.2", + "html-loader": "0.5.5", + "html-webpack-plugin": "2.30.1", "json-loader": "0.5.7", "json-stringify-safe": "5.0.1", "json5": "0.5.1", "lodash.flattendeep": "4.4.0", - "lodash.pick": "4.4.0", - "postcss-flexbugs-fixes": "3.2.0", - "postcss-loader": "2.0.9", - "prop-types": "15.6.0", + "markdown-loader": "2.0.2", + "npmlog": "4.1.2", + "postcss-flexbugs-fixes": "3.3.0", + "postcss-loader": "2.1.1", + "prop-types": "15.6.1", "qs": "6.5.1", "redux": "3.7.2", "request": "2.83.0", "serve-favicon": "2.4.5", "shelljs": "0.7.8", - "style-loader": "0.18.2", + "style-loader": "0.19.1", + "uglifyjs-webpack-plugin": "1.2.2", "url-loader": "0.6.2", "util-deprecate": "1.0.2", - "uuid": "3.1.0", - "webpack": "3.10.0", + "uuid": "3.2.1", + "webpack": "3.11.0", "webpack-dev-middleware": "1.12.2", - "webpack-hot-middleware": "2.21.0" + "webpack-hot-middleware": "2.21.1" }, "dependencies": { "file-loader": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", - "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.10.tgz", + "integrity": "sha512-dNnT4yJgUPtGDg0+m03kQ0b/PZi3Y12EnqYuRPNCsbYkBZc6j+fwVWy40jWzZjn5kIzQ4BLIxzJimbwAYlnPGw==", "requires": { "loader-utils": "1.1.0", - "schema-utils": "0.3.0" + "schema-utils": "0.4.5" } }, - "style-loader": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", - "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "requires": { - "loader-utils": "1.1.0", - "schema-utils": "0.3.0" + "commander": "2.13.0", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz", + "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.4" } } } }, - "@storybook/react-fuzzy": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@storybook/react-fuzzy/-/react-fuzzy-0.4.3.tgz", - "integrity": "sha512-TaFbDiEc/34eiAFyOjyvrh5tOqoKscyVH2BHJB15cQ8RepccX3LKIBqSNr7IUi1jmMB5aWjeefvJywPQf13ByQ==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "fuse.js": "3.2.0", - "prop-types": "15.6.0" - } - }, "@storybook/react-komposer": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@storybook/react-komposer/-/react-komposer-2.0.3.tgz", @@ -563,9 +615,9 @@ "integrity": "sha512-RH6gPQaYMs/VzQX2dgbZU8DQMKFXVOv1ruohHjjNPys4q+YdqMFMDe5jOP1AUE3j9g01x0eW7bVjRawSpl++Ew==", "requires": { "babel-runtime": "6.26.0", - "create-react-class": "15.6.2", + "create-react-class": "15.6.3", "hoist-non-react-statics": "1.2.0", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "@storybook/react-stubber": { @@ -577,31 +629,31 @@ } }, "@storybook/ui": { - "version": "3.2.17", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.2.17.tgz", - "integrity": "sha512-At0oWWTALJrJhtdnP+0AMANBC5omIBnEg3Pin3M0+yzUy6Poelcvt8+81dQEKLBP6LiyFOVpiDjfqpiHR5l0ow==", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.3.14.tgz", + "integrity": "sha512-aL5mqZ8WNW+bRGVaLuvCfxiLtKvorL9poXosgyc1jZurwi3Z05k7injkg16LuA1dE0wSib/mgHXjgzKXHN+Fhg==", "requires": { - "@hypnosphi/fuse.js": "3.0.9", - "@storybook/components": "3.2.17", + "@storybook/components": "3.3.14", "@storybook/mantra-core": "1.7.2", - "@storybook/react-fuzzy": "0.4.3", + "@storybook/podda": "1.2.3", "@storybook/react-komposer": "2.0.3", "babel-runtime": "6.26.0", "deep-equal": "1.0.1", "events": "1.1.1", + "fuse.js": "3.2.0", "global": "4.3.2", "json-stringify-safe": "5.0.1", "keycode": "2.1.9", "lodash.debounce": "4.0.8", "lodash.pick": "4.4.0", "lodash.sortby": "4.7.0", - "podda": "1.2.2", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "qs": "6.5.1", + "react-fuzzy": "0.5.2", "react-icons": "2.2.7", "react-inspector": "2.2.2", - "react-modal": "3.1.8", - "react-split-pane": "0.1.71", + "react-modal": "3.3.1", + "react-split-pane": "0.1.77", "react-treebeard": "2.1.0", "redux": "3.7.2" } @@ -612,16 +664,16 @@ "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==" }, "@types/cheerio": { - "version": "0.22.6", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.6.tgz", - "integrity": "sha512-Nyk3Gut4CMFZOebvutYAk/Nis7d6u9b7VX4OcG4zUX5gnKnXMiq+8EPdcX7FVakeL4+t770iy8E46W8ZSSXeFA==" + "version": "0.22.7", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.7.tgz", + "integrity": "sha512-+T9qBbqe/jXtTjzVddArZExahoPPmt8eq3O1ZuCKZXjBVxf/ciUYNXrIDZJEVgYvpELnv6VlPRCfLzufRxpAag==" }, "@types/enzyme": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.1.5.tgz", "integrity": "sha512-f1HnxoBnHsK+mcjF6xAofaewv+vPrMtBdxAQuRyO4MltIJV20nf9EVILPBJqfl6/9Gbf9ygbxv4bmwCY9CFsnQ==", "requires": { - "@types/cheerio": "0.22.6", + "@types/cheerio": "0.22.7", "@types/react": "16.0.25" } }, @@ -651,11 +703,6 @@ "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.2.tgz", "integrity": "sha512-y5x0XD/WXDaGSyiTaTcKS4FurULJtSiYbGTeQd0m2LYZGBcZZ/7fM6t5H/DzeUF+kv8y6UfmF6yJABQsHcp9VQ==" }, - "@types/inline-style-prefixer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/inline-style-prefixer/-/inline-style-prefixer-3.0.1.tgz", - "integrity": "sha512-+kbOcYW1/noncDwRryRoB9tH87IYcMfdBGvw98iocK39LtTA2DFL7agmk4UHW/GxjzVfwrxfjlLrqrgA7MCtmg==" - }, "@types/jest": { "version": "21.1.8", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-21.1.8.tgz", @@ -699,9 +746,9 @@ } }, "@types/react-test-renderer": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.0.0.tgz", - "integrity": "sha512-tbuDajGYu8tEBAGVXZqh0Hmfm+pZA9P+4UfMIWTvzO4PA8yBbL2TCsZNSky+S74oAKy96Z/PBdDTj22iPMYqcQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.0.1.tgz", + "integrity": "sha512-kmNh8g67Ck/y/vp6KX+4JTJXiTGLZBylNhu+R7sm7zcvsrnIGVO6J1zew5inVg428j9f8yHpl68RcYOZXVborQ==", "requires": { "@types/react": "16.0.25" } @@ -736,42 +783,42 @@ "integrity": "sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw=" }, "@uifabric/icons": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-5.3.0.tgz", - "integrity": "sha512-3jh++ktFidYimHCnnJLMAFHbVvCLABTrU1ikii5FmfdqYpwYL5mOBdRgyCBCAUcQn+w3fXfn+TREM5PXa2Ihzg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-5.4.2.tgz", + "integrity": "sha512-JG0euHlQhcVsI9wCfKE/DYDoDjzQNcHDg2Wh1NeFeVPz/6L0s0D7Izw2ULkZgW1TCLFcNx0xdwN+SSnGjIlTkw==", "requires": { - "@uifabric/styling": "5.14.0", - "tslib": "1.8.1" + "@uifabric/styling": "5.19.0", + "tslib": "1.9.0" } }, "@uifabric/merge-styles": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-5.8.1.tgz", - "integrity": "sha512-mgxb0rMwxJ7LfrPjF4dSUAPJkamlGCjKxzd5nR0wSxde9/k0Sw3zcf4BoefrbR03jnVkdtDXfj1rpq2yYbXXoA==", + "version": "5.12.2", + "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-5.12.2.tgz", + "integrity": "sha512-PVUu9IIa6voT5YvZAfd3GJvHZpTyA6m3WCAqSjCvNScGJN1EdQ9YQjfJpC1FWsUNYcXIBQqLl7YiuAE+aCz99A==", "requires": { - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "@uifabric/styling": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-5.14.0.tgz", - "integrity": "sha512-xHW/KuMMFbvr5z3+YRzUlz/yizDdUEh9MW2kzF0D1Omg1Jdfjg6qrDTVPifuyNQTbW9nCiAnb2lX4f0DEl/tuQ==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-5.19.0.tgz", + "integrity": "sha512-XZw+RFaw6RscwAvAO7+w4MXbLI0/lVqBcriU65EKYLvBXvMbYry3cY4AxobQ/5e0LdjXs8YPOFHOJHfTvw18Gg==", "requires": { - "@microsoft/load-themed-styles": "1.7.14", - "@uifabric/merge-styles": "5.8.1", - "@uifabric/utilities": "5.5.0", - "tslib": "1.8.1" + "@microsoft/load-themed-styles": "1.7.35", + "@uifabric/merge-styles": "5.12.2", + "@uifabric/utilities": "5.13.0", + "tslib": "1.9.0" } }, "@uifabric/utilities": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-5.5.0.tgz", - "integrity": "sha512-+U5gM9s9ue1zKYXlguzOHMl/NSYNvPZre7/LLH5RLfrBYJwkddUZ5AOFDD3xRT6nwpRhb5fPSJaJldAakFVY8Q==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-5.13.0.tgz", + "integrity": "sha512-fgKKMs/tea/TTSvyWuBzDT/SpDLzeUp6/fNqrrK2iSM0CxSn8wfTQdAwL6WBVAsgR4TZvTU0RioJVM/Tg/H9QQ==", "requires": { - "@microsoft/load-themed-styles": "1.7.14", - "@uifabric/merge-styles": "5.8.1", - "prop-types": "15.6.0", - "tslib": "1.8.1" + "@microsoft/load-themed-styles": "1.7.35", + "@uifabric/merge-styles": "5.12.2", + "prop-types": "15.6.1", + "tslib": "1.9.0" } }, "abab": { @@ -789,7 +836,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "requires": { - "mime-types": "2.1.17", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, @@ -831,16 +878,16 @@ } }, "airbnb-js-shims": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-1.4.0.tgz", - "integrity": "sha512-KIlW3epMtB1x3PtJr2L7ltkoYvuKzjqrgZPq6mzJUL6Gz+3Y2Oc9FS9ZRzRWym2/jk1r+JsDOOyS2Vavc0E3Pw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-1.4.1.tgz", + "integrity": "sha512-b7S3d+DPRMwaDAs0cgKQTMLO/JG/iSehIlzEGvt2FpxIztRDDABEjWI73AfTxkSiK3/OsraPRYxVNAX3yhSNLw==", "requires": { "array-includes": "3.0.3", - "array.prototype.flatmap": "1.1.1", - "array.prototype.flatten": "1.1.1", - "es5-shim": "4.5.9", + "array.prototype.flatmap": "1.2.1", + "array.prototype.flatten": "1.2.1", + "es5-shim": "4.5.10", "es6-shim": "0.35.3", - "function.prototype.name": "1.0.3", + "function.prototype.name": "1.1.0", "object.entries": "1.0.4", "object.getownpropertydescriptors": "2.0.3", "object.values": "1.0.4", @@ -850,20 +897,20 @@ } }, "ajv": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", - "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=" }, "align-text": { "version": "0.1.4", @@ -918,11 +965,6 @@ "color-convert": "1.9.1" } }, - "ansicolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", - "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" - }, "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", @@ -1020,13 +1062,13 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.4" } }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "1.0.3" } @@ -1117,9 +1159,9 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "array.prototype.flatmap": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.1.1.tgz", - "integrity": "sha512-LYxij5OIk/e1wxCPu0Ng1Rtqpe3c1FmfQ/uS/2HGk9GfySnzEpJ4N8eKJgnTCI3PSBBsNNwbUORetjs7B+3oLA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.1.tgz", + "integrity": "sha512-i18e2APdsiezkcqDyZor78Pbfjfds3S94dG6dgIV2ZASJaUf1N0dz2tGdrmwrmlZuNUgxH+wz6Z0zYVH2c5xzQ==", "requires": { "define-properties": "1.1.2", "es-abstract": "1.10.0", @@ -1127,9 +1169,9 @@ } }, "array.prototype.flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatten/-/array.prototype.flatten-1.1.1.tgz", - "integrity": "sha512-9DM+ZgShl2O01ERvRiEqljn+UAOn5yUwvfdrhM/NBLxuh98+MN/6SyBpvIpJBA0UcUuayRl/5BhmZ4TyjlHqyg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatten/-/array.prototype.flatten-1.2.1.tgz", + "integrity": "sha512-3GhsA78XgK//wQKbhUe6L93kknekGlTRY0kvYcpuSi0aa9rVrMr/okeIIv/XSpN8fZ5iUM+bWifhf2/7CYKtIg==", "requires": { "define-properties": "1.1.2", "es-abstract": "1.10.0", @@ -1152,9 +1194,9 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, "asn1.js": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", - "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { "bn.js": "4.11.8", "inherits": "2.0.3", @@ -1174,6 +1216,11 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, "ast-types": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", @@ -1223,37 +1270,36 @@ "integrity": "sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=" }, "autoprefixer": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.3.tgz", - "integrity": "sha512-dqzVGiz3v934+s3YZA6nk7tAs9xuTz5wMJbX1M+L4cY/MTNkOUqP61c1GWkEVlUL/PEy1pKRSCFuoRZrXYx9qA==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", "requires": { - "browserslist": "2.10.0", - "caniuse-lite": "1.0.30000783", + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000810", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.14", + "postcss": "6.0.19", "postcss-value-parser": "3.3.0" } }, "awesome-typescript-loader": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.4.1.tgz", - "integrity": "sha512-fYxBtN6s4Dm6vtsROWi8IQ4I+KcmwRWePAVvhI06mFcHbtHfZopOs4qGNu9LyCPEw403LDROKFA+NVV6ig5yNw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.5.0.tgz", + "integrity": "sha512-qzgm9SEvodVkSi9QY7Me1/rujg+YBNMjayNSAyzNghwTEez++gXoPCwMvpbHRG7wrOkDCiF6dquvv9ESmUBAuw==", "requires": { - "colors": "1.1.2", + "chalk": "2.3.1", "enhanced-resolve": "3.3.0", "loader-utils": "1.1.0", - "lodash": "4.17.4", - "micromatch": "3.1.4", + "lodash": "4.17.5", + "micromatch": "3.1.9", "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "source-map-support": "0.4.18" + "source-map-support": "0.5.3" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -1272,7 +1318,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=", "requires": { - "follow-redirects": "1.2.6", + "follow-redirects": "1.4.1", "is-buffer": "1.1.6" } }, @@ -1316,7 +1362,7 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -1328,7 +1374,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -1337,9 +1383,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "source-map": { "version": "0.5.7", @@ -1349,16 +1395,16 @@ } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { "babel-messages": "6.23.0", "babel-runtime": "6.26.0", "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -1369,9 +1415,9 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "source-map": { "version": "0.5.7", @@ -1429,13 +1475,13 @@ "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -1531,13 +1577,13 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -1595,9 +1641,9 @@ } }, "babel-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.3.tgz", + "integrity": "sha512-PeN29YvOynPMvNk7QCzsHqxpmfXwKAC+uxkiSNFQsmXBBVltzEkVWmv/Ip3tx7yk149dQUwk497bTXNu+DZjLA==", "requires": { "find-cache-dir": "1.0.0", "loader-utils": "1.1.0", @@ -1636,8 +1682,8 @@ "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", "requires": { "find-up": "2.1.0", - "istanbul-lib-instrument": "1.9.1", - "test-exclude": "4.1.1" + "istanbul-lib-instrument": "1.9.2", + "test-exclude": "4.2.0" } }, "babel-plugin-jest-hoist": { @@ -1730,13 +1776,20 @@ } }, "babel-plugin-react-docgen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.8.1.tgz", - "integrity": "sha512-11Yxwk8/iEULr+n5DG0BxXD6j/9htpiiR0/hLfi/gtEAK/d6NCNkyKFrC8loQcyMvF3hehPo30SKXG/itSX+hw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.8.3.tgz", + "integrity": "sha512-yJVPObZu8HLQmOsiJATqBE/+6xZiF/b5SnWTxgV0nfELHjz5lWzIHgBzuAe5ael613+Hgf6VnRa98OVILZI07w==", "requires": { "babel-types": "6.26.0", - "lodash": "4.15.0", - "react-docgen": "2.20.0" + "lodash": "4.17.5", + "react-docgen": "2.20.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + } } }, "babel-plugin-syntax-async-functions": { @@ -1896,13 +1949,13 @@ "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -2145,19 +2198,19 @@ "integrity": "sha512-GlhOuLOQ28ua9prg0hT33HslCrEmz9xWXy9ZNZSACppCyRxxRW+haYtRgm7uYXCcd0q8ggCWD2pfWEJp5iiZfQ==" }, "babel-plugin-transform-member-expression-literals": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.5.tgz", - "integrity": "sha512-Ux3ligf+ukzWaCbBYOstDuFBhRgMiJHlpJBKV4P47qtzVkd0lg1ddPj9fqIJqAM0n+CvxipyrZrnNnw3CdtQCg==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.0.tgz", + "integrity": "sha512-bxtac+8w755ctVeDs4vU98RhWY49eW1wO02HAN+eirZYSKk/dVrKONIznXbHmxWKxT4UX1rpTKOCyezuzLpbTw==" }, "babel-plugin-transform-merge-sibling-variables": { - "version": "6.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.6.tgz", - "integrity": "sha512-o5Jioq553HtEAUN5uty7ELJMenXIxHI3PIs1yLqYWYQwP6mg6IPVAJ+U7i4zr9XGF/kb2RGsdehglGTV+vngqA==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.0.tgz", + "integrity": "sha512-9G1URVEEKoQLDqe0GwqYudECN7kE/q0OCNo5TiD1iwWnnaKi97xY915l5r2KKUvNflXEm9c3faNWknSXYQ7h6Q==" }, "babel-plugin-transform-minify-booleans": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.3.tgz", - "integrity": "sha512-bPbUhkeN2Nc0KH0/A19GwQGj8w+CvdJzyu8t59VoEDgsNMQ9Bopzi5DrVkrSsVjbYUaZpzq/DYLrH+wD5K2Tig==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.0.tgz", + "integrity": "sha512-JtpyTRyF+wF/r7GSxpRbNCrVve5M/aCC8xoGcnFItaPUDqjxKmFYvBzMc9u+g0lgo8NWjuZLc16MYaIwkHKD/A==" }, "babel-plugin-transform-object-rest-spread": { "version": "6.26.0", @@ -2169,9 +2222,9 @@ } }, "babel-plugin-transform-property-literals": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.5.tgz", - "integrity": "sha512-MmiQsQ5AcIaRZMJD0zY5C4H3xuHm06/nWgtOsz7AXV44VEIXIlPiJ39IFYJ4Qx67/fEm8zJAedzR8t+B7d10Bg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.0.tgz", + "integrity": "sha512-B8s+71+4DPye9+pmZiPGgLPy3YqcmIuvE/9UcZLczPlwL5ALwF6qRUdLC3Fk17NhL6jxp4u33ZVZ8R4kvASPzw==", "requires": { "esutils": "2.0.2" } @@ -2234,14 +2287,14 @@ "integrity": "sha512-7IsQ6aQx6LAaOqy97/PthTf+5Nx9grZww3r6E62IdWe76Yr8KsuwVjxzqSPQvESJqTE3EMADQ9S0RtwWDGNG9Q==" }, "babel-plugin-transform-remove-console": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.5.tgz", - "integrity": "sha512-uuCKvtweCyIvvC8fi92EcWRtO2Kt5KMNMRK6BhpDXdeb3sxvGM7453RSmgeu4DlKns3OlvY9Ep5Q9m5a7RQAgg==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.0.tgz", + "integrity": "sha512-mck9//yGTwObqqqDzY/sISO88/5/XfIB3ILb4uJLXk2xq124NT4yQVjFSRgVSbLcNq8OyBAn2acxKUqg4W/okQ==" }, "babel-plugin-transform-remove-debugger": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.5.tgz", - "integrity": "sha512-InDQDdHPOLJKM+G6oXrEesf+P29QFBmcTXID+TAvZziVz+38xe2VO/Bn3FcRcRtnOOycbgsJkUNp9jIK+ist6g==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.0.tgz", + "integrity": "sha512-i/HWGjsmL2d1N2dl+eIzf44XpSP5v7hi1/GXB0xzom9kjrU8js3T8Kadizn95ZxfHK592Vg8P4JJWP/fvimEWw==" }, "babel-plugin-transform-remove-undefined": { "version": "0.2.0", @@ -2260,9 +2313,9 @@ } }, "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.5.tgz", - "integrity": "sha512-B3HlBZb+Uq86nRj5yNPO6pJ3noEdqHvzYkEYoUWtrsWTv48ZIRatYlumoOiif/v8llF13YjYjx9zhyznDx+N9g==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.0.tgz", + "integrity": "sha512-EJyfYeph0CSekwQuwWVwJqy2go/bETkR95iaWQ/HTUis7tkCGNYmXngaFzuIXdmoPXfvmXYCvAXR4/93hqHVjw==" }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", @@ -2274,9 +2327,9 @@ } }, "babel-plugin-transform-undefined-to-void": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz", - "integrity": "sha512-goYwp8dMrzHD6x9GjZ2M85Mk2vxf1h85CnUgAjfftUnlJvzF4uj5MrbReHBTbjQ96C8CuRzvhYZ3tv8H3Sc1ZA==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.0.tgz", + "integrity": "sha512-AVDVEmp0S9mbF1O8zekWbsOOmqnR08PZah5NRZJqSvJnFgiL0ep4Lwo4EymH8OieJR2QgQdR3q71TNW+wiVn4g==" }, "babel-polyfill": { "version": "6.23.0", @@ -2320,9 +2373,9 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.10.0", - "invariant": "2.2.2", - "semver": "5.4.1" + "browserslist": "2.11.3", + "invariant": "2.2.3", + "semver": "5.5.0" } }, "babel-preset-flow": { @@ -2359,16 +2412,16 @@ "babel-plugin-minify-simplify": "0.2.0", "babel-plugin-minify-type-constructors": "0.2.0", "babel-plugin-transform-inline-consecutive-adds": "0.2.0", - "babel-plugin-transform-member-expression-literals": "6.8.5", - "babel-plugin-transform-merge-sibling-variables": "6.8.6", - "babel-plugin-transform-minify-booleans": "6.8.3", - "babel-plugin-transform-property-literals": "6.8.5", + "babel-plugin-transform-member-expression-literals": "6.9.0", + "babel-plugin-transform-merge-sibling-variables": "6.9.0", + "babel-plugin-transform-minify-booleans": "6.9.0", + "babel-plugin-transform-property-literals": "6.9.0", "babel-plugin-transform-regexp-constructors": "0.2.0", - "babel-plugin-transform-remove-console": "6.8.5", - "babel-plugin-transform-remove-debugger": "6.8.5", + "babel-plugin-transform-remove-console": "6.9.0", + "babel-plugin-transform-remove-debugger": "6.9.0", "babel-plugin-transform-remove-undefined": "0.2.0", - "babel-plugin-transform-simplify-comparison-operators": "6.8.5", - "babel-plugin-transform-undefined-to-void": "6.8.3", + "babel-plugin-transform-simplify-comparison-operators": "6.9.0", + "babel-plugin-transform-undefined-to-void": "6.9.0", "lodash.isplainobject": "4.0.6" } }, @@ -2386,13 +2439,14 @@ } }, "babel-preset-react-app": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.0.tgz", - "integrity": "sha512-jEAeVozxLzftLl0iDZ0d5jrmfbo3yogON/eI4AsEDIs8p6WW+t9mDRUsj5l12bqPOLSiVOElCQ3QyGjMcyBiwA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.1.tgz", + "integrity": "sha512-9fRHopNaGL5ScRZdPSoyxRaABKmkS2fx0HUJ5Yphan5G8QDFD7lETsPyY7El6b7YPT3sNrw9gfrWzl4/LsJcfA==", "requires": { "babel-plugin-dynamic-import-node": "1.1.0", "babel-plugin-syntax-dynamic-import": "6.18.0", "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-react-constant-elements": "6.23.0", "babel-plugin-transform-react-jsx": "6.24.1", @@ -2456,15 +2510,28 @@ "babel-runtime": "6.26.0", "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + } } } }, @@ -2493,13 +2560,13 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -2515,14 +2582,14 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.3", + "lodash": "4.17.5" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -2533,14 +2600,14 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -2560,24 +2627,44 @@ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { "cache-base": "1.0.1", - "class-utils": "0.3.5", + "class-utils": "0.3.6", "component-emitter": "1.2.1", "define-property": "1.0.0", "isobject": "3.0.1", - "mixin-deep": "1.3.0", + "mixin-deep": "1.3.1", "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + } } }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==" }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, + "bfj-node4": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.2.1.tgz", + "integrity": "sha512-w+OTPD/R0AvDVR/sy/uVUVeoCpEgUoYj9/1P2zB6mR1yx7F/ADzLX4nlvZ/91WWzGgdZnuLxWP/J89D7ZDt0DA==", + "requires": { + "bluebird": "3.5.1", + "check-types": "7.3.0", + "tryer": "1.0.0" + } + }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -2606,9 +2693,9 @@ } }, "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" }, "bn.js": { "version": "4.11.8", @@ -2623,13 +2710,13 @@ "bytes": "3.0.0", "content-type": "1.0.4", "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "http-errors": "1.6.2", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "1.6.16" } }, "bonjour": { @@ -2641,7 +2728,7 @@ "deep-equal": "1.0.1", "dns-equal": "1.0.0", "dns-txt": "2.0.2", - "multicast-dns": "6.2.1", + "multicast-dns": "6.2.3", "multicast-dns-service-types": "1.1.0" }, "dependencies": { @@ -2662,27 +2749,27 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "bowser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.8.1.tgz", - "integrity": "sha512-NMPaR8ILtdLSWzxQtEs16XbxMcY8ohWGQ5V+TZSJS3fNUt/PBAGkF6YWO9B/4qWE23bK3o0moQKq8UyFEosYkA==" + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.2.tgz", + "integrity": "sha512-fuiANC1Bqbqa/S4gmvfCt7bGBmNELMsGZj4Wg3PrP6esP66Ttoj1JSlzFlXtHyduMv07kDNmDsX6VsMWT/MLGg==" }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "braces": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", - "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", @@ -2690,11 +2777,30 @@ "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", + "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.1", "snapdragon-node": "2.1.1", "split-string": "3.1.0", - "to-regex": "3.0.1" + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, "brcast": { @@ -2766,7 +2872,7 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { "bn.js": "4.11.8", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -2792,12 +2898,12 @@ } }, "browserslist": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz", - "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==", + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "requires": { - "caniuse-lite": "1.0.30000783", - "electron-to-chromium": "1.3.28" + "caniuse-lite": "1.0.30000810", + "electron-to-chromium": "1.3.34" } }, "bser": { @@ -2813,7 +2919,7 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "base64-js": "1.2.1", + "base64-js": "1.2.3", "ieee754": "1.1.8", "isarray": "1.0.0" } @@ -2851,7 +2957,7 @@ "axios": "0.16.2", "bytes": "3.0.0", "ci-env": "1.5.2", - "commander": "2.12.2", + "commander": "2.14.1", "github-build": "1.2.0", "glob": "7.1.2", "gzip-size": "4.1.0", @@ -2876,6 +2982,33 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.2.4", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -2897,6 +3030,15 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -2924,7 +3066,7 @@ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000783", + "caniuse-db": "1.0.30000810", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -2934,30 +3076,21 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000783", - "electron-to-chromium": "1.3.28" + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" } } } }, "caniuse-db": { - "version": "1.0.30000783", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000783.tgz", - "integrity": "sha1-FrMNRyZqT1FcxprgMWtnDJYDzb4=" + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000810.tgz", + "integrity": "sha1-vSWDDEHvq2Qzmi44H0lnc0PIRQk=" }, "caniuse-lite": { - "version": "1.0.30000783", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000783.tgz", - "integrity": "sha1-m1SZ+xtQPSNF0SqmuGEoUvQnb/0=" - }, - "cardinal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", - "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", - "requires": { - "ansicolors": "0.2.1", - "redeyed": "1.0.1" - } + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz", + "integrity": "sha512-/0Q00Oie9C72P8zQHtFvzmkrMC3oOFUnMWjCy5F2+BE8lzICm91hQPhh0+XIsAFPKOe2Dh3pKgbRmU3EKxfldA==" }, "case-sensitive-paths-webpack-plugin": { "version": "2.1.1", @@ -2999,13 +3132,13 @@ } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.2.0" } }, "chardet": { @@ -3013,6 +3146,11 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, + "check-types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", + "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=" + }, "cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", @@ -3051,6 +3189,11 @@ "readdirp": "2.1.0" } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, "ci-env": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.5.2.tgz", @@ -3103,14 +3246,13 @@ } }, "class-utils": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz", - "integrity": "sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA=", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", "isobject": "3.0.1", - "lazy-cache": "2.0.2", "static-extend": "0.1.2" }, "dependencies": { @@ -3122,6 +3264,42 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3144,36 +3322,27 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "requires": { - "colors": "1.0.3" + "source-map": "0.5.7" }, "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, - "cli-usage": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.4.tgz", - "integrity": "sha1-fAHg3HBsI0s5yTODjI4gshdXduI=", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "marked": "0.3.7", - "marked-terminal": "1.7.0" + "restore-cursor": "2.0.0" } }, "cli-width": { @@ -3324,9 +3493,9 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "1.0.0" } @@ -3342,14 +3511,14 @@ } }, "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" }, "common-tags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.5.1.tgz", - "integrity": "sha512-NrUYGY5TApAk9KB+IZXkR3GR4tA3g26HDsoiGt4kCMHZ727gOGkC+UNfq0Z22jE15bLkc/6RV5Jw1RBW6Usg6A==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz", + "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", "requires": { "babel-runtime": "6.26.0" } @@ -3365,21 +3534,21 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "compression": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", - "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "requires": { "accepts": "1.3.4", "bytes": "3.0.0", - "compressible": "2.0.12", + "compressible": "2.0.13", "debug": "2.6.9", "on-headers": "1.0.1", "safe-buffer": "5.1.1", @@ -3391,6 +3560,16 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + } + }, "configstore": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", @@ -3398,7 +3577,7 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" @@ -3500,6 +3679,19 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -3571,7 +3763,7 @@ "cipher-base": "1.0.4", "inherits": "2.0.3", "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "create-hmac": { @@ -3584,13 +3776,13 @@ "inherits": "2.0.3", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "create-react-class": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", - "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", "requires": { "fbjs": "0.8.16", "loose-envify": "1.3.1", @@ -3620,7 +3812,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } } } @@ -3639,8 +3831,8 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5", - "randomfill": "1.0.3" + "randombytes": "2.0.6", + "randomfill": "1.0.4" } }, "crypto-random-string": { @@ -3662,9 +3854,9 @@ } }, "css-loader": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", - "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "version": "0.28.10", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.10.tgz", + "integrity": "sha512-X1IJteKnW9Llmrd+lJ0f7QZHh9Arf+11S7iRcoT2+riig3BK0QaCaOtubAulMK6Itbo08W6d3l8sW21r+Jhp5Q==", "requires": { "babel-code-frame": "6.26.0", "css-selector-tokenizer": "0.7.0", @@ -3674,7 +3866,7 @@ "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", "postcss": "5.2.18", - "postcss-modules-extract-imports": "1.1.0", + "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", @@ -3717,7 +3909,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -3789,6 +3981,14 @@ "supports-color": "3.2.3" } }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "requires": { + "postcss": "6.0.1" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -3885,7 +4085,7 @@ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000783", + "caniuse-db": "1.0.30000810", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -3897,8 +4097,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000783", - "electron-to-chromium": "1.3.28" + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" } }, "chalk": { @@ -3931,7 +4131,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -3988,12 +4188,17 @@ "array-find-index": "1.0.2" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { - "es5-ext": "0.10.37" + "es5-ext": "0.10.39" } }, "dashdash": { @@ -4102,11 +4307,12 @@ } }, "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "1.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" } }, "defined": { @@ -4138,9 +4344,9 @@ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { "version": "1.0.0", @@ -4181,7 +4387,7 @@ "requires": { "bn.js": "4.11.8", "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "discontinuous-range": { @@ -4195,9 +4401,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", - "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "requires": { "ip": "1.1.5", "safe-buffer": "5.1.1" @@ -4212,17 +4418,32 @@ } }, "doctrine": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", - "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { "esutils": "2.0.2" } }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, "dom-helpers": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.2.1.tgz", - "integrity": "sha1-MgPgf+0he9H0JLAZc1WC/Deyglo=" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" }, "dom-serializer": { "version": "0.1.0", @@ -4246,9 +4467,9 @@ "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" }, "domelementtype": { "version": "1.3.0", @@ -4281,16 +4502,16 @@ } }, "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" }, "dotenv-webpack": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.5.4.tgz", - "integrity": "sha1-nJLkbkEqHPvGAhftM9adK7/dv58=", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.5.5.tgz", + "integrity": "sha1-NEEJTwTTBLYRnmtyUk5i+zJS9fI=", "requires": { - "dotenv": "4.0.0" + "dotenv": "5.0.1" } }, "duplexer": { @@ -4298,6 +4519,17 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, + "duplexify": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4309,9 +4541,9 @@ "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" }, "electron-to-chromium": { - "version": "1.3.28", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz", - "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=" + "version": "1.3.34", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", + "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=" }, "elliptic": { "version": "6.4.0", @@ -4333,9 +4565,9 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { "version": "0.1.12", @@ -4345,6 +4577,14 @@ "iconv-lite": "0.4.19" } }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "1.4.0" + } + }, "enhanced-resolve": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", @@ -4362,17 +4602,22 @@ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, "enzyme": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.2.0.tgz", - "integrity": "sha512-l0HcjycivXjB4IXkwuRc1K5z8hzWIVZB2b/Y/H2bao9eFTpBz4ACOwAQf44SgG5Nu3d1jF41LasxDgFWZeeysA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz", + "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==", "requires": { "cheerio": "1.0.0-rc.2", - "function.prototype.name": "1.0.3", + "function.prototype.name": "1.1.0", "has": "1.0.1", + "is-boolean-object": "1.0.0", + "is-callable": "1.1.3", + "is-number-object": "1.0.3", + "is-string": "1.0.4", "is-subset": "0.1.1", - "lodash": "4.17.4", + "lodash": "4.17.5", + "object-inspect": "1.5.0", "object-is": "1.0.1", - "object.assign": "4.0.4", + "object.assign": "4.1.0", "object.entries": "1.0.4", "object.values": "1.0.4", "raf": "3.4.0", @@ -4380,53 +4625,54 @@ }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, "enzyme-adapter-react-16": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.0.tgz", - "integrity": "sha512-OlZJn5PJUJ91EOQQRuISZpXgPlqT9fYR2yBZQPu9UYok+wS19Rn4teXywF34LMcyw2AzE1s0ZRDtcI952/vQHg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz", + "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==", "requires": { - "enzyme-adapter-utils": "1.2.0", - "lodash": "4.17.4", - "object.assign": "4.0.4", + "enzyme-adapter-utils": "1.3.0", + "lodash": "4.17.5", + "object.assign": "4.1.0", "object.values": "1.0.4", - "prop-types": "15.6.0", + "prop-types": "15.6.1", + "react-reconciler": "0.7.0", "react-test-renderer": "16.2.0" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, "enzyme-adapter-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz", - "integrity": "sha512-6CeIrmymLWoQgvH5m/ixJLaCsa6pSoWU2nlMeO0nHCZR8LQ+tKzP/jPh4qceTPlB4oFfyMRFeqr0+IryY4gAxg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz", + "integrity": "sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA==", "requires": { - "lodash": "4.17.4", - "object.assign": "4.0.4", - "prop-types": "15.6.0" + "lodash": "4.17.5", + "object.assign": "4.1.0", + "prop-types": "15.6.1" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, "errno": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { "prr": "1.0.1" } @@ -4462,18 +4708,18 @@ } }, "es5-ext": { - "version": "0.10.37", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", - "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "version": "0.10.39", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.39.tgz", + "integrity": "sha512-AlaXZhPHl0po/uxMx1tyrlt1O86M6D5iVaDH8UgLfgek4kXTX6vzsRfJQWC2Ku+aG8pkw1XWzh9eTkwfVrsD5g==", "requires": { "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, "es5-shim": { - "version": "4.5.9", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.9.tgz", - "integrity": "sha1-Kh4rnlg/9f7Qwgo+4svz91IwpcA=" + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.10.tgz", + "integrity": "sha512-vmryBdqKRO8Ei9LJ4yyEk/EOmAOGIagcHDYPpTAi6pot4IMHS1AC2q5cTKPmydpijg2iX8DVmCuqgrNxIWj8Yg==" }, "es6-iterator": { "version": "2.0.3", @@ -4481,7 +4727,7 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.39", "es6-symbol": "3.1.1" } }, @@ -4491,7 +4737,7 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.39", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -4499,9 +4745,9 @@ } }, "es6-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" }, "es6-set": { "version": "0.1.5", @@ -4509,7 +4755,7 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.39", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -4526,7 +4772,44 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.37" + "es5-ext": "0.10.39" + } + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "requires": { + "recast": "0.11.23", + "through": "2.3.8" + }, + "dependencies": { + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } } }, "es6-weak-map": { @@ -4535,7 +4818,7 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.39", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -4551,14 +4834,15 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", "requires": { "esprima": "3.1.3", "estraverse": "4.2.0", "esutils": "2.0.2", - "optionator": "0.8.2" + "optionator": "0.8.2", + "source-map": "0.6.1" }, "dependencies": { "esprima": { @@ -4575,7 +4859,7 @@ "requires": { "es6-map": "0.1.5", "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, @@ -4585,12 +4869,11 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -4614,7 +4897,7 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.37" + "es5-ext": "0.10.39" } }, "eventemitter3": { @@ -4680,9 +4963,9 @@ "define-property": "0.2.5", "extend-shallow": "2.0.1", "posix-character-classes": "0.1.1", - "regex-not": "1.0.0", + "regex-not": "1.0.2", "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -4693,6 +4976,50 @@ "is-descriptor": "0.1.6" } }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -4782,8 +5109,8 @@ "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", "finalhandler": "1.1.0", @@ -4793,7 +5120,7 @@ "on-finished": "2.3.0", "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", + "proxy-addr": "2.0.3", "qs": "6.5.1", "range-parser": "1.2.0", "safe-buffer": "5.1.1", @@ -4801,7 +5128,7 @@ "serve-static": "1.13.1", "setprototypeof": "1.1.0", "statuses": "1.3.1", - "type-is": "1.6.15", + "type-is": "1.6.16", "utils-merge": "1.0.1", "vary": "1.1.2" } @@ -4812,11 +5139,22 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "is-extendable": "0.1.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "external-editor": { @@ -4830,18 +5168,36 @@ } }, "extglob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.2.tgz", - "integrity": "sha512-I0+eZBH+jFGL8F5BnIz2ON2nKCjTS3AS3H/5PeSmCp7UVC70Ym8IhdRiQly2juKYQ//f7z1aj1BRpQniFJoU1w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { "array-unique": "0.3.2", "define-property": "1.0.0", "expand-brackets": "2.1.4", "extend-shallow": "2.0.1", "fragment-cache": "0.2.1", - "regex-not": "1.0.0", + "regex-not": "1.0.2", "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, "extsprintf": { @@ -4850,9 +5206,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -4865,9 +5221,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fast-memoize": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.2.8.tgz", - "integrity": "sha512-3ppTC3fZ9Vwtjslx8DkhSIbI9PH1nM4pobuTHQINOxTxchG8n3SDGZ8L6jbatGJCGLKR+gbkNWKFN4E1iUROSA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.3.0.tgz", + "integrity": "sha512-wH36QD7q17IXIq3WDEQTb+eehTzpCXXdGRAYw4jQdVmMWdBZc5ysRhV/5nZx67KBNgFt1H1XwLgDiYxQL3uXJw==" }, "fastparse": { "version": "1.1.1", @@ -4942,9 +5298,9 @@ } }, "filesize": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", - "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.0.tgz", + "integrity": "sha512-g5OWtoZWcPI56js1DFhIEqyG9tnu/7sG3foHwgS9KGYFMfsYguI3E+PRVCmtmE96VajQIEMRU2OhN+ME589Gdw==" }, "fill-range": { "version": "4.0.0", @@ -4955,6 +5311,16 @@ "is-number": "3.0.0", "repeat-string": "1.6.1", "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, "finalhandler": { @@ -4963,7 +5329,7 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.2", @@ -4977,7 +5343,7 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pkg-dir": "2.0.0" } }, @@ -5018,10 +5384,19 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, "follow-redirects": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.6.tgz", - "integrity": "sha512-FrMqZ/FONtHnbqO651UPpfRUVukIEwJhXMfdr/JWAmrDbeYBu773b1J6gdWDyRIj4hvvzQEHoEOTrdR8o6KLYA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "requires": { "debug": "3.1.0" }, @@ -5060,21 +5435,13 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "requires": { - "samsam": "1.3.0" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "forwarded": { @@ -5095,6 +5462,15 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, "fs-extra": { "version": "0.26.7", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", @@ -5107,6 +5483,17 @@ "rimraf": "2.6.2" } }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.4" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5129,9 +5516,9 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.0.3.tgz", - "integrity": "sha512-5EblxZUdioXi2JiMZ9FUbwYj40eQ9MFHyzFLBSPdlRl3SO8l7SLWuAnQ/at/1Wi4hjJwME/C5WpF2ZfAc8nGNw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", + "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", "requires": { "define-properties": "1.1.2", "function-bind": "1.1.1", @@ -5270,7 +5657,7 @@ "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", "requires": { "debug": "2.6.9", - "stream-consume": "0.1.0" + "stream-consume": "0.1.1" } } } @@ -5309,17 +5696,17 @@ "fbjs": "0.8.16", "inline-style-prefixer": "3.0.8", "object-assign": "4.1.1", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "through": "2.3.8" } }, "glamorous": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/glamorous/-/glamorous-4.11.0.tgz", - "integrity": "sha512-qWRmq5HZ6kGnp09/z3I0L5ZWZF8PX9W90ED8Ndm3ccfaamWRcEURYilk3zA1M1VW1xJlV28+aD2XlwbQF5YlSw==", + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/glamorous/-/glamorous-4.11.6.tgz", + "integrity": "sha512-fR9jTVipC3Vb4Jps4aQFjxEuGPexo/J74ZUZIA8ZpgENljGUL+9SdKk0Ut1iZc23tLLtbi6wRmAqQG3thwzjAw==", "requires": { "brcast": "3.0.1", - "fast-memoize": "2.2.8", + "fast-memoize": "2.3.0", "html-tag-names": "1.1.2", "is-function": "1.0.1", "is-plain-object": "2.0.4", @@ -5411,14 +5798,14 @@ "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "requires": { "glob": "7.1.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -5491,7 +5878,7 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.1", + "ajv": "5.5.2", "har-schema": "2.0.0" } }, @@ -5512,9 +5899,14 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, "has-unicode": { "version": "2.0.1", @@ -5574,7 +5966,7 @@ "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", - "hoek": "4.2.0", + "hoek": "4.2.1", "sntp": "2.1.0" } }, @@ -5599,9 +5991,9 @@ } }, "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, "hoist-non-react-statics": { "version": "1.2.0", @@ -5629,7 +6021,7 @@ "requires": { "inherits": "2.0.3", "obuf": "1.1.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.4", "wbuf": "1.7.2" } }, @@ -5656,11 +6048,80 @@ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" }, + "html-loader": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz", + "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==", + "requires": { + "es6-templates": "0.2.3", + "fastparse": "1.1.1", + "html-minifier": "3.5.9", + "loader-utils": "1.1.0", + "object-assign": "4.1.1" + } + }, + "html-minifier": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.9.tgz", + "integrity": "sha512-EZqO91XJwkj8BeLx9C12sKB/AHoTANaZax39vEOP9f/X/9jgJ3r1O2+neabuHqpz5kJO71TapP9JrtCY39su1A==", + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.14.1", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.12" + }, + "dependencies": { + "uglify-js": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.12.tgz", + "integrity": "sha512-4jxrTXlV0HaXTsNILfXW0eey7Qo8qHYM6ih5ZNh45erDWU2GHmKDmekwBTskDb12h+kdd2DBvdzqVb47YzNmTA==", + "requires": { + "commander": "2.14.1", + "source-map": "0.6.1" + } + } + } + }, "html-tag-names": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/html-tag-names/-/html-tag-names-1.1.2.tgz", "integrity": "sha1-9lFolkxanIJnXv2ogoddyyqHXCI=" }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.9", + "loader-utils": "0.2.17", + "lodash": "4.17.5", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + } + } + }, "htmlparser2": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", @@ -5671,7 +6132,7 @@ "domutils": "1.5.1", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.4" } }, "http-deceiver": { @@ -5690,6 +6151,11 @@ "statuses": "1.3.1" }, "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", @@ -5698,9 +6164,9 @@ } }, "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=" + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" }, "http-proxy": { "version": "1.16.2", @@ -5718,7 +6184,7 @@ "requires": { "http-proxy": "1.16.2", "is-glob": "3.1.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "micromatch": "2.3.11" }, "dependencies": { @@ -5790,9 +6256,9 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "micromatch": { "version": "2.3.11", @@ -5876,7 +6342,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "requires": { - "postcss": "6.0.14" + "postcss": "6.0.19" } }, "ieee754": { @@ -5884,11 +6350,17 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, "immutability-helper": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.6.4.tgz", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.6.5.tgz", + "integrity": "sha512-nRj5RN2em1O3NK25Zz0eBszg+kQ3mR5WgZp3wRajbyeu/Ii/eXhpwjB8JG4Hd78JUnuFVXSchWF5EZBI6F+vEA==", "requires": { - "invariant": "2.2.2" + "invariant": "2.2.3" } }, "immutable": { @@ -5897,9 +6369,9 @@ "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" }, "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "requires": { "pkg-dir": "2.0.0", "resolve-cwd": "2.0.0" @@ -5952,7 +6424,7 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", "requires": { - "bowser": "1.8.1", + "bowser": "1.9.2", "css-in-js-utils": "2.0.0" } }, @@ -6014,9 +6486,9 @@ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "requires": { "loose-envify": "1.3.1" } @@ -6032,9 +6504,9 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" }, "is-absolute-url": { "version": "2.1.0", @@ -6042,21 +6514,11 @@ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-arrayish": { @@ -6072,6 +6534,11 @@ "binary-extensions": "1.11.0" } }, + "is-boolean-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", + "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=" + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -6091,29 +6558,19 @@ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" }, "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "requires": { "ci-info": "1.1.2" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-date-object": { @@ -6122,20 +6579,13 @@ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, "is-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.1.tgz", - "integrity": "sha512-G3fFVFTqfaqu7r4YuSBHKBAuOaLz8Sy7ekklUpFEliaLMP1Y2ZjoN9jS62YWCAPQrQpMUQSitRlrzibbuCZjdA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-directory": { @@ -6197,13 +6647,19 @@ "is-extglob": "1.0.0" } }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==" + }, "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", "requires": { "generate-function": "2.0.0", "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", "jsonpointer": "4.0.1", "xtend": "4.0.1" } @@ -6226,17 +6682,29 @@ } } }, + "is-number-object": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", + "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=" + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-odd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", - "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "requires": { - "is-number": "3.0.0" + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } } }, "is-path-cwd": { @@ -6306,6 +6774,11 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=" + }, "is-subset": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", @@ -6334,6 +6807,11 @@ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", @@ -6374,27 +6852,27 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-api": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", - "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.2.tgz", + "integrity": "sha512-kH5YRdqdbs5hiH4/Rr1Q0cSAGgjh3jTtg8vu9NLebBAoK3adVO4jk81J+TYOkTr2+Q4NLeb1ACvmEt65iG/Vbw==", "requires": { "async": "2.6.0", "fileset": "2.0.3", - "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-coverage": "1.1.2", "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", + "istanbul-lib-instrument": "1.9.2", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.3", + "istanbul-reports": "1.1.4", "js-yaml": "3.7.0", "mkdirp": "0.5.1", "once": "1.4.0" } }, "istanbul-lib-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz", + "integrity": "sha512-tZYA0v5A7qBSsOzcebJJ/z3lk3oSzH62puG78DbBA1+zupipX2CakDyiPV3pOb8He+jBwVimuwB0dTnh38hX0w==" }, "istanbul-lib-hook": { "version": "1.1.0", @@ -6405,25 +6883,25 @@ } }, "istanbul-lib-instrument": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz", + "integrity": "sha512-nz8t4HQ2206a/3AXi+NHFWEa844DMpPsgbcUteJbt1j8LX1xg56H9rOMnhvcvVvPbW60qAIyrSk44H8ZDqaSSA==", "requires": { - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" + "istanbul-lib-coverage": "1.1.2", + "semver": "5.5.0" } }, "istanbul-lib-report": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "requires": { - "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-coverage": "1.1.2", "mkdirp": "0.5.1", "path-parse": "1.0.5", "supports-color": "3.2.3" @@ -6445,12 +6923,12 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "requires": { "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-coverage": "1.1.2", "mkdirp": "0.5.1", "rimraf": "2.6.2", "source-map": "0.5.7" @@ -6472,9 +6950,9 @@ } }, "istanbul-reports": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.4.tgz", + "integrity": "sha512-DfSTVOTkuO+kRmbO8Gk650Wqm1WRGr6lrdi2EwDK1vxpS71vdlLd613EpzOKdIFioB5f/scJTjeWBnvd1FWejg==", "requires": { "handlebars": "4.0.11" } @@ -6547,14 +7025,14 @@ "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", "requires": { "ansi-escapes": "3.0.0", - "chalk": "2.3.0", + "chalk": "2.3.1", "glob": "7.1.2", "graceful-fs": "4.1.11", - "is-ci": "1.0.10", - "istanbul-api": "1.2.1", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-source-maps": "1.2.2", + "is-ci": "1.1.0", + "istanbul-api": "1.2.2", + "istanbul-lib-coverage": "1.1.2", + "istanbul-lib-instrument": "1.9.2", + "istanbul-lib-source-maps": "1.2.3", "jest-changed-files": "21.2.0", "jest-config": "21.2.1", "jest-environment-jsdom": "21.2.1", @@ -6567,13 +7045,13 @@ "jest-snapshot": "21.2.1", "jest-util": "21.2.1", "micromatch": "2.3.11", - "node-notifier": "5.1.2", + "node-notifier": "5.2.1", "pify": "3.0.0", "slash": "1.0.0", "string-length": "2.0.0", "strip-ansi": "4.0.0", "which": "1.3.0", - "worker-farm": "1.5.2", + "worker-farm": "1.5.4", "yargs": "9.0.1" } }, @@ -6648,7 +7126,7 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "glob": "7.1.2", "jest-environment-jsdom": "21.2.1", "jest-environment-node": "21.2.1", @@ -6666,7 +7144,7 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "diff": "3.4.0", "jest-get-type": "21.2.0", "pretty-format": "21.2.1" @@ -6710,8 +7188,8 @@ "graceful-fs": "4.1.11", "jest-docblock": "21.2.0", "micromatch": "2.3.11", - "sane": "2.2.0", - "worker-farm": "1.5.2" + "sane": "2.4.1", + "worker-farm": "1.5.4" }, "dependencies": { "arr-diff": { @@ -6788,7 +7266,7 @@ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "expect": "21.2.1", "graceful-fs": "4.1.11", "jest-diff": "21.2.1", @@ -6803,7 +7281,7 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "jest-get-type": "21.2.0", "pretty-format": "21.2.1" } @@ -6813,7 +7291,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "micromatch": "2.3.11", "slash": "1.0.0" }, @@ -6903,7 +7381,7 @@ "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", "requires": { "browser-resolve": "1.11.2", - "chalk": "2.3.0", + "chalk": "2.3.1", "is-builtin-module": "1.0.0" } }, @@ -6929,7 +7407,7 @@ "jest-util": "21.2.1", "pify": "3.0.0", "throat": "4.1.0", - "worker-farm": "1.5.2" + "worker-farm": "1.5.4" } }, "jest-runtime": { @@ -6940,7 +7418,7 @@ "babel-core": "6.26.0", "babel-jest": "21.2.0", "babel-plugin-istanbul": "4.1.5", - "chalk": "2.3.0", + "chalk": "2.3.1", "convert-source-map": "1.5.1", "graceful-fs": "4.1.11", "jest-config": "21.2.1", @@ -7050,7 +7528,7 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "jest-diff": "21.2.1", "jest-matcher-utils": "21.2.1", "mkdirp": "0.5.1", @@ -7064,7 +7542,7 @@ "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", "requires": { "callsites": "2.0.0", - "chalk": "2.3.0", + "chalk": "2.3.1", "graceful-fs": "4.1.11", "jest-message-util": "21.2.1", "jest-mock": "21.2.0", @@ -7077,7 +7555,7 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "jest-get-type": "21.2.0", "leven": "2.1.0", "pretty-format": "21.2.1" @@ -7093,17 +7571,17 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", "requires": { - "hoek": "4.2.0", + "hoek": "4.2.1", "isemail": "2.2.1", "items": "2.1.1", - "moment": "2.19.4", + "moment": "2.20.1", "topo": "2.0.2" } }, "js-base64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", - "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==" }, "js-tokens": { "version": "3.0.2", @@ -7115,7 +7593,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "2.7.3" } }, @@ -7131,14 +7609,14 @@ "content-type-parser": "1.0.2", "cssom": "0.3.2", "cssstyle": "0.2.37", - "escodegen": "1.9.0", + "escodegen": "1.9.1", "html-encoding-sniffer": "1.0.2", "nwmatcher": "1.4.3", "parse5": "1.5.1", "request": "2.83.0", "sax": "1.2.4", "symbol-tree": "3.2.2", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "webidl-conversions": "4.0.2", "whatwg-encoding": "1.0.3", "whatwg-url": "4.8.0", @@ -7328,19 +7806,9 @@ "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=" }, "lodash-es": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", - "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" - }, - "lodash._arraycopy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=" - }, - "lodash._arrayeach": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.5.tgz", + "integrity": "sha512-Ez3ONp3TK9gX1HYKp6IhetcVybD+2F+Yp6GS9dfH8ue6EOCEzQtQEh4K0FYWBP9qLv+lzeQAYXw+3ySfxyZqkw==" }, "lodash._baseassign": { "version": "3.2.0", @@ -7351,19 +7819,6 @@ "lodash.keys": "3.1.2" } }, - "lodash._baseclone": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", - "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", - "requires": { - "lodash._arraycopy": "3.0.0", - "lodash._arrayeach": "3.0.0", - "lodash._baseassign": "3.2.0", - "lodash._basefor": "3.0.3", - "lodash.isarray": "3.0.4", - "lodash.keys": "3.1.2" - } - }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", @@ -7374,16 +7829,6 @@ "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=" }, - "lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" - }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", @@ -7470,9 +7915,9 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, "lodash.mergewith": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", - "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=" + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" }, "lodash.pick": { "version": "4.4.0", @@ -7494,25 +7939,20 @@ "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, "loglevel": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", - "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" }, "lolex": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.1.tgz", - "integrity": "sha512-mQuW55GhduF3ppo+ZRUTz1PRjEh1hS5BbqU7d8D0ez2OKxHDod7StPPeAVKisZR5aLkHZjdGWSL42LSONUJsZw==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==" }, "longest": { "version": "1.0.1", @@ -7536,6 +7976,11 @@ "signal-exit": "3.0.2" } }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -7551,13 +7996,18 @@ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "requires": { "pify": "3.0.0" } }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==" + }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -7584,47 +8034,20 @@ "object-visit": "1.0.1" } }, - "marked": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.7.tgz", - "integrity": "sha512-zBEP4qO1YQp5aXHt8S5wTiOv9i2X74V/LQL0zhUNvVaklt6Ywa6lChxIvS+ibYlCGgADwKwZFhjC3+XfpsvQvQ==" - }, - "marked-terminal": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-1.7.0.tgz", - "integrity": "sha1-yMRgiBx3LHYEtkNnAH7l938SWQQ=", + "markdown-loader": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/markdown-loader/-/markdown-loader-2.0.2.tgz", + "integrity": "sha512-v/ej7DflZbb6t//3Yu9vg0T+sun+Q9EoqggifeyABKfvFROqPwwwpv+hd1NKT2QxTRg6VCFk10IIJcMI13yCoQ==", "requires": { - "cardinal": "1.0.0", - "chalk": "1.1.3", - "cli-table": "0.3.1", - "lodash.assign": "4.2.0", - "node-emoji": "1.8.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } + "loader-utils": "1.1.0", + "marked": "0.3.17" } }, + "marked": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", + "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==" + }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", @@ -7660,7 +8083,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "memory-fs": { @@ -7668,8 +8091,8 @@ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { - "errno": "0.1.6", - "readable-stream": "2.3.3" + "errno": "0.1.7", + "readable-stream": "2.3.4" } }, "meow": { @@ -7783,23 +8206,23 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.4.tgz", - "integrity": "sha512-kFRtviKYoAJT+t7HggMl0tBFGNAKLw/S7N+CO9qfEQyisob1Oy4pao+geRbkyeEd+V9aOkvZ4mhuyPvI/q9Sfg==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.0", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "extglob": "2.0.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", "fragment-cache": "0.2.1", "kind-of": "6.0.2", - "nanomatch": "1.2.6", + "nanomatch": "1.2.9", "object.pick": "1.3.0", - "regex-not": "1.0.0", + "regex-not": "1.0.2", "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "to-regex": "3.0.2" } }, "miller-rabin": { @@ -7817,22 +8240,22 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "min-document": { "version": "2.19.0", @@ -7857,7 +8280,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -7865,10 +8288,27 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, "mixin-deep": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", - "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { "for-in": "1.0.2", "is-extendable": "1.0.1" @@ -7982,9 +8422,22 @@ } }, "moment": { - "version": "2.19.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.4.tgz", - "integrity": "sha512-1xFTAknSLfc47DIxHDUbnJWC+UwgWxATmymaxIPQpmMh7LBm7ZbwVEsuushqwL2GYZU0jie4xO+TK44hJPjNSQ==" + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } }, "ms": { "version": "2.0.0", @@ -7992,12 +8445,12 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multicast-dns": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", - "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "requires": { - "dns-packet": "1.2.2", - "thunky": "0.1.0" + "dns-packet": "1.3.1", + "thunky": "1.0.2" } }, "multicast-dns-service-types": { @@ -8016,33 +8469,27 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==" }, "nanomatch": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.6.tgz", - "integrity": "sha512-WJ6XTCbvWXUFPbi/bDwKcYkCeOGUHzaJj72KbuPqGn78Ba/F5Vu26Zlo6SuMQbCIst1RGKL1zfWBCOGAlbRLAg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", "fragment-cache": "0.2.1", - "is-odd": "1.0.0", - "kind-of": "5.1.0", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", "object.pick": "1.3.0", - "regex-not": "1.0.0", + "regex-not": "1.0.2", "snapdragon": "0.8.1", - "to-regex": "3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "to-regex": "3.0.2" } }, "natural-compare": { @@ -8050,14 +8497,23 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "requires": { + "xml-char-classes": "1.0.0" + } + }, "nearley": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.11.0.tgz", - "integrity": "sha512-clqqhEuP0ZCJQ85Xv2I/4o2Gs/fvSR6fCg5ZHVE2c8evWyNk2G++ih4JOO3lMb/k/09x6ihQ2nzKUlB/APCWjg==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.11.1.tgz", + "integrity": "sha512-1azpqq1JvHKZNPEixS1jNEXf4kDilhFtr8AIZIGjP8N0TcAcUhKgi354niI5pM4JoOsMQ+H6vzCYWQa95LQjcw==", "requires": { "nomnom": "1.6.2", "railroad-diagrams": "1.0.0", - "randexp": "0.4.6" + "randexp": "0.4.6", + "semver": "5.5.0" } }, "negotiator": { @@ -8065,32 +8521,37 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==" + }, "netrc": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" }, "ngrok": { - "version": "2.2.24", - "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-2.2.24.tgz", - "integrity": "sha512-tz1X/yS3PD5N+Cwijn+bwSrDGNRNPpQPM0TEHtaT8K4sMpFUHFBhRJLlFyoGQyfmSML7Tdq9Fq17AKoEtGaJzw==", + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-2.2.26.tgz", + "integrity": "sha512-DAWmOerUpBvtjLnX+Da9iE5JFCCWXBqYVFwjQtllnveIHL+u/TRjtsYqg4zttkoXXceG+gGon92atDGQd2SgiA==", "requires": { "@types/node": "8.0.26", "async": "2.6.0", "decompress-zip": "0.3.0", "lock": "0.1.4", "request": "2.83.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "nise": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", - "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.7.tgz", + "integrity": "sha512-8LqP1pFLB1v5QU8KlT2WqWzhMRJ3o9LwnZHz+VCbVB8rTsRTFCjtOYv/BatcmLOWp21NedTrErVGinfxe6XYtA==", "requires": { - "formatio": "1.2.0", + "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "1.6.0", + "lolex": "2.3.2", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" }, @@ -8100,11 +8561,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=" - }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", @@ -8115,6 +8571,14 @@ } } }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", @@ -8123,14 +8587,6 @@ "minimatch": "3.0.4" } }, - "node-emoji": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", - "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", - "requires": { - "lodash.toarray": "4.4.0" - } - }, "node-fetch": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", @@ -8141,9 +8597,9 @@ } }, "node-forge": { - "version": "0.6.33", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", - "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=" }, "node-gyp": { "version": "3.6.2", @@ -8157,7 +8613,7 @@ "mkdirp": "0.5.1", "nopt": "3.0.6", "npmlog": "4.1.2", - "osenv": "0.1.4", + "osenv": "0.1.5", "request": "2.83.0", "rimraf": "2.6.2", "semver": "5.3.0", @@ -8188,7 +8644,7 @@ "console-browserify": "1.1.0", "constants-browserify": "1.0.0", "crypto-browserify": "3.12.0", - "domain-browser": "1.1.7", + "domain-browser": "1.2.0", "events": "1.1.1", "https-browserify": "1.0.0", "os-browserify": "0.3.0", @@ -8196,11 +8652,11 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.4", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", + "stream-http": "2.8.0", "string_decoder": "1.0.3", - "timers-browserify": "2.0.4", + "timers-browserify": "2.0.6", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", @@ -8208,12 +8664,12 @@ } }, "node-notifier": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", - "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "requires": { "growly": "1.3.0", - "semver": "5.4.1", + "semver": "5.5.0", "shellwords": "0.1.1", "which": "1.3.0" } @@ -8232,10 +8688,10 @@ "in-publish": "2.0.0", "lodash.assign": "4.2.0", "lodash.clonedeep": "4.5.0", - "lodash.mergewith": "4.6.0", + "lodash.mergewith": "4.6.1", "meow": "3.7.0", "mkdirp": "0.5.1", - "nan": "2.8.0", + "nan": "2.9.2", "node-gyp": "3.6.2", "npmlog": "4.1.2", "request": "2.79.0", @@ -8307,8 +8763,8 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "har-validator": { @@ -8317,8 +8773,8 @@ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "requires": { "chalk": "1.1.3", - "commander": "2.12.2", - "is-my-json-valid": "2.16.1", + "commander": "2.14.1", + "is-my-json-valid": "2.17.2", "pinkie-promise": "2.0.1" } }, @@ -8361,7 +8817,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.11.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -8371,13 +8827,13 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "sntp": { @@ -8431,8 +8887,8 @@ "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -8529,6 +8985,22 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -8556,6 +9028,11 @@ } } }, + "object-inspect": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.5.0.tgz", + "integrity": "sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw==" + }, "object-is": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", @@ -8575,12 +9052,13 @@ } }, "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { "define-properties": "1.1.2", "function-bind": "1.1.1", + "has-symbols": "1.0.0", "object-keys": "1.0.11" } }, @@ -8638,22 +9116,22 @@ "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=" }, "office-ui-fabric-core": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/office-ui-fabric-core/-/office-ui-fabric-core-9.3.0.tgz", - "integrity": "sha1-FE19kSUBS9+lf41fXmptgl2EJ0I=" + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/office-ui-fabric-core/-/office-ui-fabric-core-9.4.0.tgz", + "integrity": "sha1-z1dU/7D63H0ewKVoxnNxxw8ranE=" }, "office-ui-fabric-react": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-5.33.1.tgz", - "integrity": "sha512-LrE9EYmXQ9tTZG/gtsKhWnrym2WB0TrmQ7WfyYclQXeJmt1PB6F80sUdzddNrgmsPz7Q0KJboeV4m6nASBCQDQ==", + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-5.56.0.tgz", + "integrity": "sha512-sTVFSjqeUDQVGSekeTdSfyn/2BZNGqK0TfHDnpNnsYgrimKv7JsXoiln/yGus+rPkSGONhD5eNZVU02uOBygMw==", "requires": { - "@microsoft/load-themed-styles": "1.7.14", - "@uifabric/icons": "5.3.0", - "@uifabric/merge-styles": "5.8.1", - "@uifabric/styling": "5.14.0", - "@uifabric/utilities": "5.5.0", - "prop-types": "15.6.0", - "tslib": "1.8.1" + "@microsoft/load-themed-styles": "1.7.35", + "@uifabric/icons": "5.4.2", + "@uifabric/merge-styles": "5.12.2", + "@uifabric/styling": "5.19.0", + "@uifabric/utilities": "5.13.0", + "prop-types": "15.6.1", + "tslib": "1.9.0" } }, "on-finished": { @@ -8682,7 +9160,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "open": { @@ -8820,9 +9298,9 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -8839,16 +9317,19 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, "p-map": { @@ -8856,17 +9337,40 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "pako": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "2.3.2" + } + }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "requires": { - "asn1.js": "4.9.2", + "asn1.js": "4.10.1", "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", @@ -8912,6 +9416,11 @@ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -8966,7 +9475,7 @@ "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "performance-now": { @@ -9000,15 +9509,6 @@ "find-up": "2.1.0" } }, - "podda": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/podda/-/podda-1.2.2.tgz", - "integrity": "sha1-FbDtvTNK3hRYEzQ/Xs+cEKcc9QA=", - "requires": { - "babel-runtime": "6.26.0", - "immutable": "3.8.2" - } - }, "portfinder": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", @@ -9032,13 +9532,13 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", - "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", + "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", "requires": { - "chalk": "2.3.0", + "chalk": "2.3.1", "source-map": "0.6.1", - "supports-color": "4.5.0" + "supports-color": "5.2.0" } }, "postcss-calc": { @@ -9086,7 +9586,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9151,7 +9651,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9215,7 +9715,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9278,7 +9778,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9341,7 +9841,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9404,7 +9904,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9467,7 +9967,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9531,7 +10031,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9595,7 +10095,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9616,11 +10116,11 @@ } }, "postcss-flexbugs-fixes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz", - "integrity": "sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.0.tgz", + "integrity": "sha512-15JauG6a2hu2XZHdB9BaOwCLrI9oyK2UB8kt1ToTGdP1Pd3BQ/TJI9tNiTALntll25/66xMLUIyUPA9w/3BLtg==", "requires": { - "postcss": "6.0.14" + "postcss": "6.0.19" } }, "postcss-load-config": { @@ -9653,14 +10153,14 @@ } }, "postcss-loader": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.9.tgz", - "integrity": "sha512-sgoXPtmgVT3aBAhU47Kig8oPF+mbXl8Unjvtz1Qj1q2D2EvSVJW2mKJNzxv5y/LvA9xWwuvdysvhc7Zn80UWWw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.1.tgz", + "integrity": "sha512-f0J/DWE/hyO9/LH0WHpXkny/ZZ238sSaG3p1SRBtVZnFWUtD7GXIEgHoBg8cnAeRbmEvUxHQptY46zWfwNYj/w==", "requires": { "loader-utils": "1.1.0", - "postcss": "6.0.14", + "postcss": "6.0.19", "postcss-load-config": "1.2.0", - "schema-utils": "0.3.0" + "schema-utils": "0.4.5" } }, "postcss-merge-idents": { @@ -9708,7 +10208,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9771,7 +10271,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9813,8 +10313,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000783", - "electron-to-chromium": "1.3.28" + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" } }, "chalk": { @@ -9847,7 +10347,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9917,7 +10417,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -9981,7 +10481,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10047,7 +10547,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10113,7 +10613,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10140,16 +10640,16 @@ "requires": { "css-modules-loader-core": "1.1.0", "generic-names": "1.0.3", - "postcss": "6.0.14", + "postcss": "6.0.19", "string-hash": "1.1.3" } }, "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "requires": { - "postcss": "6.0.14" + "postcss": "6.0.19" } }, "postcss-modules-local-by-default": { @@ -10158,7 +10658,7 @@ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.14" + "postcss": "6.0.19" } }, "postcss-modules-scope": { @@ -10167,7 +10667,7 @@ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.14" + "postcss": "6.0.19" } }, "postcss-modules-values": { @@ -10176,7 +10676,7 @@ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.14" + "postcss": "6.0.19" } }, "postcss-normalize-charset": { @@ -10222,7 +10722,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10288,7 +10788,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10352,7 +10852,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10416,7 +10916,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10479,7 +10979,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10544,7 +11044,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10620,7 +11120,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10685,7 +11185,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10755,7 +11255,7 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { "chalk": "1.1.3", - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10790,6 +11290,15 @@ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, "pretty-format": { "version": "21.2.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", @@ -10823,6 +11332,19 @@ "escape-string-regexp": "1.0.5", "supports-color": "4.5.0" } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -10837,9 +11359,9 @@ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "promise": { "version": "7.3.1", @@ -10849,6 +11371,11 @@ "asap": "2.0.6" } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, "promise.prototype.finally": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz", @@ -10860,9 +11387,9 @@ } }, "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", + "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", "requires": { "fbjs": "0.8.16", "loose-envify": "1.3.1", @@ -10870,12 +11397,12 @@ } }, "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" + "ipaddr.js": "1.6.0" } }, "prr": { @@ -10897,7 +11424,26 @@ "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" } }, "punycode": { @@ -10947,7 +11493,7 @@ "array-find": "1.0.0", "exenv": "1.2.2", "inline-style-prefixer": "2.0.5", - "prop-types": "15.6.0" + "prop-types": "15.6.1" }, "dependencies": { "inline-style-prefixer": { @@ -10955,7 +11501,7 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz", "integrity": "sha1-wVPH6I/YT+9cYC6VqBaLJ3BnH+c=", "requires": { - "bowser": "1.8.1", + "bowser": "1.9.2", "hyphenate-style-name": "1.0.2" } } @@ -11003,19 +11549,19 @@ } }, "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "requires": { "safe-buffer": "5.1.1" } }, "randomfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", - "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "randombytes": "2.0.5", + "randombytes": "2.0.6", "safe-buffer": "5.1.1" } }, @@ -11048,19 +11594,19 @@ "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "react-docgen": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-2.20.0.tgz", - "integrity": "sha512-+fW1dthCr/cqrAreHTMk2Luzdb3I7xJishC/g4k+vIWiPj4/jM6Ij67WvUjXqio0/TRh7AQtRDYRwqNyinN0LA==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-2.20.1.tgz", + "integrity": "sha512-NYmD8nDPMWpIpqWqhSZjQ3P5iQml55IMkDG0ZInyWP7JD2ljaNhrxNWZnXPrOezUu6bYlcZUCxjw19s7zhE2uw==", "requires": { "async": "2.6.0", "babel-runtime": "6.26.0", "babylon": "5.8.38", - "commander": "2.12.2", - "doctrine": "2.0.2", + "commander": "2.14.1", + "doctrine": "2.1.0", "node-dir": "0.1.17", "recast": "0.12.9" }, @@ -11080,7 +11626,18 @@ "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" + } + }, + "react-fuzzy": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/react-fuzzy/-/react-fuzzy-0.5.2.tgz", + "integrity": "sha512-qIZZxaCheb/HhcBi5fABbiCFg85+K5r1TCps1D4uaL0LAMMD/1zm/x1/kNR130Tx7nnY9V7mbFyY0DquPYeLAw==", + "requires": { + "babel-runtime": "6.26.0", + "classnames": "2.2.5", + "fuse.js": "3.2.0", + "prop-types": "15.6.1" } }, "react-highlight": { @@ -11098,11 +11655,11 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", "requires": { - "create-react-class": "15.6.2", + "create-react-class": "15.6.3", "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "react-dom": { @@ -11113,7 +11670,7 @@ "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } } } @@ -11149,15 +11706,26 @@ } }, "react-modal": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.1.8.tgz", - "integrity": "sha512-cp5fSUBuwkyojclrxZuWXudK2kTBycbDG9Eg1t/bEPdUVBW6vDiGE+4eZg7bVwMyFtiwvyVJ2ugdCOFllNPReg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.3.1.tgz", + "integrity": "sha512-d1A8xXIvW+YVKwRMrFY5qneuC5FSa4OnOE78hgqfz+MYLb1Ai/B3D3Dzx1Zrw4ZD5rS16SKiPe5rl4UZt+AjpQ==", "requires": { "exenv": "1.2.2", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "warning": "3.0.0" } }, + "react-reconciler": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", + "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.1" + } + }, "react-remarkable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/react-remarkable/-/react-remarkable-1.1.3.tgz", @@ -11167,23 +11735,21 @@ } }, "react-split-pane": { - "version": "0.1.71", - "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.71.tgz", - "integrity": "sha512-c7aK5ffRyeOySSWVeoSEsQHBUrNtzXTB9TFNUnZv/2EM7HEnN1Rfsgxag/bpDcl5GuaY5IuMvq7XySc6nyokog==", + "version": "0.1.77", + "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.77.tgz", + "integrity": "sha512-xq0PPsbkNI9xEd6yTrGPr7hzf6XfIgnsxuUEdRJELq+kLPHMsO3ymFCjhiYP35wlDPn9W46+rHDsJd7LFYteMw==", "requires": { - "@types/inline-style-prefixer": "3.0.1", - "@types/react": "16.0.25", "inline-style-prefixer": "3.0.8", - "prop-types": "15.6.0", - "react-style-proptype": "3.1.0" + "prop-types": "15.6.1", + "react-style-proptype": "3.2.0" } }, "react-style-proptype": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.1.0.tgz", - "integrity": "sha512-e4lOMjF4f8Pp/jdO9myNzDvSAx1aG5r0olziD64Bgk40LN8LxidRCgnKeI2RiKrqYD6j2Z8ByXoUbwV+/mwpwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.2.0.tgz", + "integrity": "sha512-Mafmkzj3oNmLSJNOlH+WWWyGIdzVLhPj+d12fDxQMQdwDQ5sMX7vQKOLpry4U+zRWieTCx448AyRKK0NLWuXmg==", "requires": { - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "react-test-renderer": { @@ -11193,7 +11759,7 @@ "requires": { "fbjs": "0.8.16", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "react-transition-group": { @@ -11202,9 +11768,9 @@ "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { "chain-function": "1.0.0", - "dom-helpers": "3.2.1", + "dom-helpers": "3.3.1", "loose-envify": "1.3.1", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "warning": "3.0.0" } }, @@ -11215,7 +11781,7 @@ "requires": { "babel-runtime": "6.26.0", "deep-equal": "1.0.1", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "radium": "0.19.6", "shallowequal": "0.2.2", "velocity-react": "1.3.3" @@ -11241,14 +11807,14 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -11261,7 +11827,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.4", "set-immediate-shim": "1.0.1" } }, @@ -11301,21 +11867,6 @@ "strip-indent": "1.0.1" } }, - "redeyed": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", - "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", - "requires": { - "esprima": "3.0.0" - }, - "dependencies": { - "esprima": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", - "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=" - } - } - }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", @@ -11354,9 +11905,9 @@ "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { "lodash": "4.15.0", - "lodash-es": "4.17.4", + "lodash-es": "4.17.5", "loose-envify": "1.3.1", - "symbol-observable": "1.1.0" + "symbol-observable": "1.2.0" } }, "regenerate": { @@ -11388,11 +11939,12 @@ } }, "regex-not": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", - "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "regexpu-core": { @@ -11418,6 +11970,11 @@ "jsesc": "0.5.0" } }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, "remarkable": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.1.tgz", @@ -11448,6 +12005,73 @@ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", @@ -11474,25 +12098,25 @@ "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.3.1", + "form-data": "2.3.2", "har-validator": "5.0.3", "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "request-promise": { @@ -11500,7 +12124,7 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.1.1.tgz", "integrity": "sha1-JgIeT29W/Uwwn2vx69jJepWsH7U=", "requires": { - "bluebird": "3.4.7", + "bluebird": "3.5.1", "request-promise-core": "1.1.1", "stealthy-require": "1.1.1" } @@ -11514,9 +12138,9 @@ } }, "requestretry": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.12.2.tgz", - "integrity": "sha512-wDYnH4imurLs5upu31WoPaOFfEu31qhFlF7KgpYbBsmBagFmreZZo8E/XpoQ3erCP5za+72t8k8QI4wlrtwVXw==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.12.3.tgz", + "integrity": "sha512-3H5xTOfORJGSDWV0WZYWLt39tqFyW19V+joQqsKvbbIR1AfJo8b1PDYlSYBoC5jPvmQcG0ZS0DkAKF23mChTow==", "requires": { "extend": "3.0.1", "lodash": "4.15.0", @@ -11620,7 +12244,7 @@ "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", "requires": { "lodash.flattendeep": "4.4.0", - "nearley": "2.11.0" + "nearley": "2.11.1" } }, "run-async": { @@ -11631,6 +12255,14 @@ "is-promise": "2.1.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "1.2.0" + } + }, "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -11641,15 +12273,23 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "0.1.15" + } + }, "samsam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==" }, "sane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", - "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.4.1.tgz", + "integrity": "sha512-fW9svvNd81XzHDZyis9/tEY1bZikDGryy8Hi1BErPyNPYv47CdLseUN+tI5FBHWXEENRtj1SWtX/jBnggLaP0w==", "requires": { "anymatch": "1.3.2", "exec-sh": "0.2.1", @@ -11833,11 +12473,24 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "requires": { - "ajv": "5.5.1" + "ajv": "6.2.0", + "ajv-keywords": "3.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", + "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } } }, "screener-runner": { @@ -11853,7 +12506,7 @@ "http-proxy": "1.16.2", "joi": "9.2.0", "lodash": "4.16.6", - "ngrok": "2.2.24", + "ngrok": "2.2.26", "portfinder": "1.0.13", "request": "2.78.0", "request-promise": "4.1.1" @@ -11874,6 +12527,11 @@ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", @@ -11919,7 +12577,7 @@ "requires": { "accepts": "1.3.4", "bytes": "2.3.0", - "compressible": "2.0.12", + "compressible": "2.0.13", "debug": "2.2.0", "on-headers": "1.0.1", "vary": "1.1.2" @@ -11947,8 +12605,8 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "har-validator": { @@ -11958,7 +12616,7 @@ "requires": { "chalk": "1.1.3", "commander": "2.9.0", - "is-my-json-valid": "2.16.1", + "is-my-json-valid": "2.17.2", "pinkie-promise": "2.0.1" } }, @@ -12016,7 +12674,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.11.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -12026,12 +12684,12 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "node-uuid": "1.4.8", "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3" } }, @@ -12056,9 +12714,9 @@ } }, "screener-storybook": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/screener-storybook/-/screener-storybook-0.9.15.tgz", - "integrity": "sha1-EtU1lXPUBH5G1LwCgHC2TMbqKmU=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/screener-storybook/-/screener-storybook-0.11.3.tgz", + "integrity": "sha1-21arkALnjhJOUsvPk7TlettPjLY=", "requires": { "bluebird": "3.4.7", "colors": "1.1.2", @@ -12066,13 +12724,13 @@ "get-port": "3.2.0", "joi": "10.0.6", "jsdom": "9.8.3", - "lodash": "4.17.4", - "prop-types": "15.6.0", + "lodash": "4.17.5", + "prop-types": "15.6.1", "react": "15.6.2", "react-dom": "15.4.2", "request": "2.81.0", - "requestretry": "1.12.2", - "screener-runner": "0.7.12" + "requestretry": "1.12.3", + "screener-runner": "0.8.2" }, "dependencies": { "acorn": { @@ -12112,6 +12770,11 @@ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", @@ -12159,7 +12822,7 @@ "requires": { "accepts": "1.3.4", "bytes": "2.3.0", - "compressible": "2.0.12", + "compressible": "2.0.13", "debug": "2.2.0", "on-headers": "1.0.1", "vary": "1.1.2" @@ -12187,8 +12850,8 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "har-schema": { @@ -12238,7 +12901,7 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-10.0.6.tgz", "integrity": "sha1-26y78wtNu50o72cW2CxFgLsEwJY=", "requires": { - "hoek": "4.2.0", + "hoek": "4.2.1", "isemail": "2.2.1", "items": "2.1.1", "topo": "2.0.2" @@ -12256,7 +12919,7 @@ "content-type-parser": "1.0.2", "cssom": "0.3.2", "cssstyle": "0.2.37", - "escodegen": "1.9.0", + "escodegen": "1.9.1", "html-encoding-sniffer": "1.0.2", "iconv-lite": "0.4.19", "nwmatcher": "1.4.3", @@ -12264,7 +12927,7 @@ "request": "2.81.0", "sax": "1.2.4", "symbol-tree": "3.2.2", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "webidl-conversions": "3.0.1", "whatwg-encoding": "1.0.3", "whatwg-url": "3.1.0", @@ -12272,9 +12935,9 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "ms": { "version": "0.7.1", @@ -12289,7 +12952,7 @@ "decompress-zip": "0.3.0", "lock": "0.1.4", "request": "2.81.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "node-uuid": { @@ -12312,11 +12975,11 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", "requires": { - "create-react-class": "15.6.2", + "create-react-class": "15.6.3", "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "react-dom": { @@ -12337,7 +13000,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -12347,21 +13010,21 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "0.2.0", "qs": "6.4.0", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "screener-runner": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/screener-runner/-/screener-runner-0.7.12.tgz", - "integrity": "sha1-2+wn4gRAVEueDBFFQK5fEGm6sm4=", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/screener-runner/-/screener-runner-0.8.2.tgz", + "integrity": "sha1-6s1x1kjguLZLTc6BA/E2uElTUFc=", "requires": { "bluebird": "3.4.7", "colors": "1.1.2", @@ -12389,7 +13052,7 @@ "requires": { "chalk": "1.1.3", "commander": "2.9.0", - "is-my-json-valid": "2.16.1", + "is-my-json-valid": "2.17.2", "pinkie-promise": "2.0.1" } }, @@ -12398,10 +13061,10 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", "requires": { - "hoek": "4.2.0", + "hoek": "4.2.1", "isemail": "2.2.1", "items": "2.1.1", - "moment": "2.19.4", + "moment": "2.20.1", "topo": "2.0.2" } }, @@ -12423,7 +13086,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.11.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -12433,12 +13096,12 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "node-uuid": "1.4.8", "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3" } }, @@ -12490,7 +13153,7 @@ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", "requires": { - "js-base64": "2.4.0", + "js-base64": "2.4.3", "source-map": "0.4.4" }, "dependencies": { @@ -12510,17 +13173,17 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", - "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", "requires": { - "node-forge": "0.6.33" + "node-forge": "0.7.1" } }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "send": { "version": "0.16.1", @@ -12528,9 +13191,9 @@ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "requires": { "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "destroy": "1.0.4", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.2", @@ -12549,6 +13212,11 @@ } } }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=" + }, "serve-favicon": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", @@ -12571,7 +13239,7 @@ "debug": "2.6.9", "escape-html": "1.0.3", "http-errors": "1.6.2", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "parseurl": "1.3.2" } }, @@ -12580,7 +13248,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "requires": { - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "parseurl": "1.3.2", "send": "0.16.1" @@ -12613,6 +13281,16 @@ "is-extendable": "0.1.1", "is-plain-object": "2.0.4", "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, "setimmediate": { @@ -12626,9 +13304,9 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "requires": { "inherits": "2.0.3", "safe-buffer": "5.1.1" @@ -12713,17 +13391,17 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sinon": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.3.tgz", - "integrity": "sha512-c7u0ZuvBRX1eXuB4jN3BRCAOGiUTlM8SE3TxbJHrNiHUKL7wonujMOB6Fi1gQc00U91IscFORQHDga/eccqpbw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.2.tgz", + "integrity": "sha512-cpOHpnRyY3Dk9dTHBYMfVBB0HUCSKIpxW07X6OGW2NiYPovs4AkcL8Q8MzecbAROjbfRA9esJCmlZgikxDz7DA==", "requires": { + "@sinonjs/formatio": "2.0.0", "diff": "3.4.0", - "formatio": "1.2.0", "lodash.get": "4.4.2", - "lolex": "2.3.1", - "nise": "1.2.0", - "supports-color": "4.5.0", - "type-detect": "4.0.5" + "lolex": "2.3.2", + "nise": "1.2.7", + "supports-color": "5.2.0", + "type-detect": "4.0.8" } }, "slash": { @@ -12754,6 +13432,50 @@ "is-descriptor": "0.1.6" } }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -12784,6 +13506,16 @@ "define-property": "1.0.0", "isobject": "3.0.1", "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + } } }, "snapdragon-util": { @@ -12809,23 +13541,16 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", "requires": { "faye-websocket": "0.10.0", - "uuid": "2.0.3" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - } + "uuid": "3.2.1" } }, "sockjs-client": { @@ -12905,18 +13630,11 @@ } }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "requires": { - "source-map": "0.5.7" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } + "source-map": "0.6.1" } }, "source-map-url": { @@ -12925,22 +13643,32 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" }, "spdy": { "version": "3.4.7", @@ -12964,7 +13692,7 @@ "detect-node": "2.0.3", "hpack.js": "2.1.6", "obuf": "1.1.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.4", "safe-buffer": "5.1.1", "wbuf": "1.7.2" } @@ -12974,25 +13702,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.1.tgz", - "integrity": "sha512-Fg1xXAv+qXKdwHiJFMcZSqsMcbPlkzsZtf8KkLJ2fqnP+lqg2RjEKgDcSfO9CO1+p4LZKgApDBUUUqKaaRhwZQ==", - "requires": { - "is-extendable": "1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - } + "extend-shallow": "3.0.2" } }, "sprintf-js": { @@ -13011,6 +13721,14 @@ "getpass": "0.1.7" } }, + "ssri": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.2.4.tgz", + "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -13028,6 +13746,42 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -13055,7 +13809,7 @@ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.4" } }, "stealthy-require": { @@ -13068,7 +13822,7 @@ "resolved": "https://registry.npmjs.org/storybook-readme/-/storybook-readme-3.0.6.tgz", "integrity": "sha1-R1oUpbOdx6hcQjQxJTor8fWxx4Y=", "requires": { - "prop-types": "15.6.0", + "prop-types": "15.6.1", "react-remarkable": "1.1.3", "string-raw": "1.0.1" } @@ -13079,31 +13833,53 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.4" } }, "stream-consume": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", + "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } }, "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.4", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", @@ -13182,14 +13958,6 @@ "function-bind": "1.1.1" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -13228,6 +13996,16 @@ "requires": { "loader-utils": "1.1.0", "schema-utils": "0.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.2" + } + } } }, "subarg": { @@ -13246,11 +14024,11 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } }, "svg-tag-names": { @@ -13273,9 +14051,9 @@ } }, "symbol-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz", - "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "symbol-tree": { "version": "3.2.2", @@ -13298,9 +14076,9 @@ } }, "test-exclude": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.0.tgz", + "integrity": "sha512-8hMFzjxbPv6xSlwGhXSvOMJ/vTy3bkng+2pxmf6E1z6VF7I9nIyNfvHtaw+NBPgvz647gADBbMSbwLfZYppT/w==", "requires": { "arrify": "1.0.1", "micromatch": "2.3.11", @@ -13483,10 +14261,19 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, "thunky": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=" }, "time-stamp": { "version": "2.0.0", @@ -13494,9 +14281,9 @@ "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=" }, "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "requires": { "setimmediate": "1.0.5" } @@ -13543,38 +14330,14 @@ } }, "to-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", - "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -13591,9 +14354,14 @@ "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=" + }, "touch": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", @@ -13613,9 +14381,9 @@ } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "1.4.1" } @@ -13662,6 +14430,11 @@ } } }, + "tryer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", + "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=" + }, "ts-jest": { "version": "21.2.4", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-21.2.4.tgz", @@ -13675,10 +14448,25 @@ "fs-extra": "4.0.3", "jest-config": "21.2.1", "pkg-dir": "2.0.0", - "source-map-support": "0.5.0", - "yargs": "10.0.3" + "source-map-support": "0.5.3", + "yargs": "10.1.2" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, "fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -13697,20 +14485,20 @@ "graceful-fs": "4.1.11" } }, - "source-map-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", - "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "source-map": "0.6.1" + "ansi-regex": "3.0.0" } }, "yargs": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "requires": { - "cliui": "3.2.0", + "cliui": "4.0.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -13721,13 +14509,13 @@ "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "8.0.0" + "yargs-parser": "8.1.0" } }, "yargs-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "requires": { "camelcase": "4.1.0" } @@ -13735,57 +14523,51 @@ } }, "tslib": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.1.tgz", - "integrity": "sha1-aUavLR1lGnsYY7Ux1uWvpBqkTqw=" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" }, "tslint": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.8.0.tgz", - "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "requires": { "babel-code-frame": "6.26.0", "builtin-modules": "1.1.1", - "chalk": "2.3.0", - "commander": "2.12.2", + "chalk": "2.3.1", + "commander": "2.14.1", "diff": "3.4.0", "glob": "7.1.2", + "js-yaml": "3.7.0", "minimatch": "3.0.4", "resolve": "1.5.0", - "semver": "5.4.1", - "tslib": "1.8.1", - "tsutils": "2.13.1" + "semver": "5.5.0", + "tslib": "1.9.0", + "tsutils": "2.21.2" } }, "tslint-microsoft-contrib": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.1.tgz", - "integrity": "sha1-Mo7pwo0HzfeTKTIEyW4v+rkiGZQ=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.3.tgz", + "integrity": "sha512-5AnfTGlfpUzpRHLmoojPBKFTTmbjnwgdaTHMdllausa4GBPya5u36i9ddrTX4PhetGZvd4JUYIpAmgHqVnsctg==", "requires": { - "tsutils": "1.9.1" - }, - "dependencies": { - "tsutils": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz", - "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=" - } + "tsutils": "2.21.2" } }, "tslint-react": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tslint-react/-/tslint-react-3.2.0.tgz", - "integrity": "sha1-hR+1BSAcY9A0PFFybmNk9+mtLpk=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/tslint-react/-/tslint-react-3.5.1.tgz", + "integrity": "sha512-ndS/iOOGrasATcf5YU3JxoIwPGVykjrKhzmlVsRdT1xzl/RbNg9n627rtAGbCjkQepyiaQYgxWQT5G/qUpQCaA==", "requires": { - "tsutils": "2.13.1" + "tsutils": "2.21.2" } }, "tsutils": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.13.1.tgz", - "integrity": "sha512-XMOEvc2TiYesVSOJMI7OYPnBMSgcvERuGW5Li/J+2A0TuH607BPQnOLQ82oSPZCssB8c9+QGi6qhTBa/f1xQRA==", + "version": "2.21.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.21.2.tgz", + "integrity": "sha512-iaIuyjIUeFLdD39MYdzqBuY7Zv6+uGxSwRH4mf+HuzsnznjFz0R2tGrAe0/JvtNh91WrN8UN/DZRFTZNDuVekA==", "requires": { - "tslib": "1.8.1" + "tslib": "1.9.0" } }, "tty-browserify": { @@ -13810,23 +14592,28 @@ } }, "type-detect": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", - "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==" + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "2.1.18" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=" + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==" }, "typical": { "version": "2.6.1", @@ -13902,11 +14689,6 @@ } } }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, "underscore": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", @@ -13928,6 +14710,14 @@ "set-value": "0.4.3" }, "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", @@ -13959,6 +14749,22 @@ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "requires": { + "imurmurhash": "0.1.4" + } + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -14013,6 +14819,16 @@ } } }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -14042,6 +14858,16 @@ "loader-utils": "1.1.0", "mime": "1.6.0", "schema-utils": "0.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.2" + } + } } }, "url-parse": { @@ -14078,6 +14904,42 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -14115,23 +14977,28 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "validator": { @@ -14145,9 +15012,9 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "velocity-animate": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.0.tgz", - "integrity": "sha1-/Idx2N/hE2/wKnB+EPuwlXxLAw8=" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.1.tgz", + "integrity": "sha512-VJ3csMz5zP1ifkbBlsNYpxnoWkPHfVRQ8tUongS78W5DxSGHB68pjYHDTgUYBkVM7P/HpYdVukgVUFcxjr1gGg==" }, "velocity-react": { "version": "1.3.3", @@ -14155,9 +15022,9 @@ "integrity": "sha1-1tRyds/Ivip1Yjh5sgFArFjBuCs=", "requires": { "lodash": "3.10.1", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "react-transition-group": "1.2.1", - "velocity-animate": "1.5.0" + "velocity-animate": "1.5.1" }, "dependencies": { "lodash": { @@ -14223,13 +15090,74 @@ } }, "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "requires": { - "async": "2.6.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + } } }, "wbuf": { @@ -14246,14 +15174,14 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "webpack": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", - "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", + "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", "requires": { - "acorn": "5.2.1", + "acorn": "5.5.0", "acorn-dynamic-import": "2.0.2", - "ajv": "5.5.1", - "ajv-keywords": "2.1.1", + "ajv": "6.2.0", + "ajv-keywords": "3.1.0", "async": "2.6.0", "enhanced-resolve": "3.4.1", "escope": "3.6.0", @@ -14269,15 +15197,25 @@ "supports-color": "4.5.0", "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", + "watchpack": "1.5.0", "webpack-sources": "1.1.0", "yargs": "8.0.2" }, "dependencies": { "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==" + }, + "ajv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", + "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } }, "enhanced-resolve": { "version": "3.4.1", @@ -14290,11 +15228,24 @@ "tapable": "0.2.8" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, "yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", @@ -14318,54 +15269,42 @@ } }, "webpack-bundle-analyzer": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.1.tgz", - "integrity": "sha512-a+UcvlsXvCmclNgfThT8PVyuJKd029By7CxkYEbNNCfs0Lqj9gagjkdv3S3MBvCIKBaUGYs8l4UpiVI0bFoh2Q==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.11.0.tgz", + "integrity": "sha512-GGz//de6DHqKIBN75vRPUqwTUobgYCzygS+ei/Z5wRpKYEZ+HO2e8Pd6CbQewGfofjRHoCFqL10pi2lu+/fqDg==", "requires": { - "acorn": "5.2.1", - "chalk": "1.1.3", - "commander": "2.12.2", + "acorn": "5.5.0", + "bfj-node4": "5.2.1", + "chalk": "2.3.1", + "commander": "2.14.1", "ejs": "2.5.7", "express": "4.16.2", - "filesize": "3.5.11", - "gzip-size": "3.0.0", - "lodash": "4.17.4", + "filesize": "3.6.0", + "gzip-size": "4.1.0", + "lodash": "4.17.5", "mkdirp": "0.5.1", "opener": "1.4.3", - "ws": "3.3.2" + "ws": "4.1.0" }, "dependencies": { "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==" }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "duplexer": "0.1.1", + "pify": "3.0.0" } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" } } }, @@ -14382,39 +15321,66 @@ } }, "webpack-dev-server": { - "version": "2.9.7", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.7.tgz", - "integrity": "sha512-Pu7uoQFgQj5RE5wmlfkpYSzihMKxulwEuO2xCsaMnAnyRSApwoVi3B8WCm9XbigyWTHaIMzYGkB90Vr6leAeTQ==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz", + "integrity": "sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA==", "requires": { "ansi-html": "0.0.7", "array-includes": "3.0.3", "bonjour": "3.5.0", - "chokidar": "1.7.0", - "compression": "1.7.1", + "chokidar": "2.0.2", + "compression": "1.7.2", "connect-history-api-fallback": "1.5.0", "debug": "3.1.0", "del": "3.0.0", "express": "4.16.2", "html-entities": "1.2.1", "http-proxy-middleware": "0.17.4", - "import-local": "0.1.1", + "import-local": "1.0.0", "internal-ip": "1.2.0", "ip": "1.1.5", "killable": "1.0.0", - "loglevel": "1.6.0", - "opn": "5.1.0", + "loglevel": "1.6.1", + "opn": "5.2.0", "portfinder": "1.0.13", - "selfsigned": "1.10.1", + "selfsigned": "1.10.2", "serve-index": "1.9.1", - "sockjs": "0.3.18", + "sockjs": "0.3.19", "sockjs-client": "1.1.4", "spdy": "3.4.7", "strip-ansi": "3.0.1", - "supports-color": "4.5.0", + "supports-color": "5.2.0", "webpack-dev-middleware": "1.12.2", "yargs": "6.6.0" }, "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -14423,10 +15389,42 @@ "ms": "2.0.0" } }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + }, "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", "requires": { "is-wsl": "1.1.0" } @@ -14434,9 +15432,9 @@ } }, "webpack-hot-middleware": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz", - "integrity": "sha512-P6xiOLy10QlSVSO7GanU9PLxN6zLLQ7RG16MPTvmFwf2KUG7jMp6m+fmdgsR7xoaVVLA7OlX3YO6JjoZEKjCuA==", + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.21.1.tgz", + "integrity": "sha512-HaxZpATbq/bpuduum2i79pgE1vpSFfV2BVUyYi4lhocTJ5xpofWuYCCmd0c6eoJjY8szCuM5TsQk3M59Z9jpwA==", "requires": { "ansi-html": "0.0.7", "html-entities": "1.2.1", @@ -14445,43 +15443,13 @@ } }, "webpack-notifier": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.5.0.tgz", - "integrity": "sha1-wBAAfUSM68NN78mezyiPpejGuvY=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.5.1.tgz", + "integrity": "sha1-z19rmhcR+Alpu8T3vRXUDqexh2E=", "requires": { - "node-notifier": "4.6.1", + "node-notifier": "5.2.1", "object-assign": "4.1.1", "strip-ansi": "3.0.1" - }, - "dependencies": { - "lodash.clonedeep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz", - "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=", - "requires": { - "lodash._baseclone": "3.3.0", - "lodash._bindcallback": "3.0.1" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "node-notifier": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz", - "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=", - "requires": { - "cli-usage": "0.1.4", - "growly": "1.3.0", - "lodash.clonedeep": "3.0.2", - "minimist": "1.2.0", - "semver": "5.4.1", - "shellwords": "0.1.1", - "which": "1.3.0" - } - } } }, "webpack-sources": { @@ -14498,7 +15466,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "requires": { - "http-parser-js": "0.4.9", + "http-parser-js": "0.4.10", "websocket-extensions": "0.1.3" } }, @@ -14598,11 +15566,11 @@ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, "worker-farm": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", - "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.4.tgz", + "integrity": "sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w==", "requires": { - "errno": "0.1.6", + "errno": "0.1.7", "xtend": "4.0.1" } }, @@ -14657,10 +15625,10 @@ "requires": { "chalk": "1.1.3", "debug": "2.6.9", - "filesize": "3.5.11", + "filesize": "3.6.0", "lodash": "4.15.0", "mkdirp": "0.5.1", - "moment": "2.19.4" + "moment": "2.20.1" }, "dependencies": { "ansi-styles": { @@ -14688,13 +15656,12 @@ } }, "ws": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.2.tgz", - "integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "requires": { "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", - "ultron": "1.1.1" + "safe-buffer": "5.1.1" } }, "xdg-basedir": { @@ -14702,6 +15669,11 @@ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=" + }, "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", @@ -14872,11 +15844,11 @@ "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", "requires": { - "commander": "2.12.2", + "commander": "2.14.1", "lodash.get": "4.4.2", "lodash.isequal": "4.5.0", "validator": "8.2.0" } } } -} \ No newline at end of file +} diff --git a/ghdocs/BESTPRACTICES.md b/ghdocs/BESTPRACTICES.md index bcf01c605c34f..9b8481f5b30cc 100644 --- a/ghdocs/BESTPRACTICES.md +++ b/ghdocs/BESTPRACTICES.md @@ -172,13 +172,27 @@ public render() { } ``` -Best, use _resolveRef in BaseComponent: +Best, use createRef: + +The `createRef` function in `lib/Utilities` is a polyfill for [React.createRef](https://github.com/facebook/react/pull/11555). (When Fabric switches over to React 16, we'll use React.createRef instead) + +`createRef` creates a reference object that has the following type `{ value: T | null }`, where T is the element to reference (either a dom node or a react component). You set the reference by passing the reference object as the `ref` prop. You can then subsequently access the reference through the `.value` property on the reference object elsewhere in your code. + ```typescript +import { createRef } from 'office-ui-fabric-react/lib/Utilities'; + class Foo extends BaseComponent<...> { - private _root: HTMLElement; + // Create the reference object that will be used for setting and accessing the reference + private _root = createRef(); public render() { - return
    ; + // Set the reference by passing the reference object as the ref prop + return
    -
    - { renderedFarItems!.map((item, index) => ( - this._renderItemInCommandBar(item, index, expandedMenuItemKey!, true) +
    + { renderedFarItems!.map(item => ( + this._renderItemInCommandBar(item, posInSet++, setSize, expandedMenuItemKey!, true) )) }
    @@ -160,10 +170,11 @@ export class CommandBar extends BaseComponent @@ -172,14 +183,14 @@ export class CommandBar extends BaseComponent { (hasIcon) ? this._renderIcon(item) : (null) } { isNameVisible && ( @@ -222,6 +235,8 @@ export class CommandBar extends BaseComponent { (hasIcon) ? this._renderIcon(item) : (null) } { isNameVisible && ( @@ -243,6 +258,8 @@ export class CommandBar extends BaseComponent { (hasIcon) ? this._renderIcon(item) : (null) } { (isNameVisible) && ( @@ -275,12 +292,12 @@ export class CommandBar extends BaseComponent; } @@ -294,7 +311,7 @@ export class CommandBar extends BaseComponent= availableWidth) { if (i > 0 && !isOverflowVisible && (availableWidth - consumedWidth) < OVERFLOW_WIDTH) { @@ -358,7 +384,7 @@ export class CommandBar extends BaseComponent item.key === this.state.expandedMenuItemKey); + const matchingItem = renderedItems.filter(item => item.key === this.state.expandedMenuItemKey); if (matchingItem.length === 1) { return this._getContextualMenuPropsFromItem(matchingItem[0]); diff --git a/packages/office-ui-fabric-react/src/components/CommandBar/CommandBarPage.tsx b/packages/office-ui-fabric-react/src/components/CommandBar/CommandBarPage.tsx index 25ad0b83dbc07..c61b34d578c66 100644 --- a/packages/office-ui-fabric-react/src/components/CommandBar/CommandBarPage.tsx +++ b/packages/office-ui-fabric-react/src/components/CommandBar/CommandBarPage.tsx @@ -18,7 +18,7 @@ const CommandBarCustomizationExampleCode = require('!raw-loader!office-ui-fabric export class CommandBarPage extends React.Component { public render() { - let cmdBarParamsTextAndIcons: any = { items, overflowItems, farItems }; + const cmdBarParamsTextAndIcons: any = { items, overflowItems, farItems }; return ( { } public render() { - let { items, overflowItems, farItems } = this.props; - let { + const { items, overflowItems, farItems } = this.props; + const { isSearchBoxVisible: searchBoxVisible, areIconsVisible: iconsVisible, areNamesVisible: namesVisible, areItemsEnabled: itemsEnabled } = this.state; - let filteredItems = items.map((item: any) => assign({}, item, { + const filteredItems = items.map((item: any) => assign({}, item, { iconOnly: !namesVisible, icon: iconsVisible ? item.icon : '', disabled: !itemsEnabled })); - let filteredOverflowItems = overflowItems.map((item: any) => assign({}, item, { + const filteredOverflowItems = overflowItems.map((item: any) => assign({}, item, { iconOnly: !namesVisible, icon: iconsVisible ? item.icon : '', disabled: !itemsEnabled })); - let filteredFarItems = farItems.map((item: any) => assign({}, item, { + const filteredFarItems = farItems.map((item: any) => assign({}, item, { iconOnly: !namesVisible, icon: iconsVisible ? item.icon : '', disabled: !itemsEnabled diff --git a/packages/office-ui-fabric-react/src/components/CommandBar/examples/CommandBar.Customization.Example.tsx b/packages/office-ui-fabric-react/src/components/CommandBar/examples/CommandBar.Customization.Example.tsx index ef28110f38991..e5ef9fbfd6e37 100644 --- a/packages/office-ui-fabric-react/src/components/CommandBar/examples/CommandBar.Customization.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/CommandBar/examples/CommandBar.Customization.Example.tsx @@ -55,13 +55,13 @@ export class CommandBarCustomizationExample extends React.Component<{}, ISplitDr @autobind private _renderSplitButtonMenuItem(item: IContextualMenuItem) { - let darkerBG = this.state.isContextMenuShown && styles.darkerBG; + const darkerBG = this.state.isContextMenuShown && styles.darkerBG; - let dropDownButtonClass = css( + const dropDownButtonClass = css( styles.button, darkerBG ); - let mainBtnClassName = css( + const mainBtnClassName = css( !item.name && ('ms-CommandBarItem--noName'), styles.button, darkerBG diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.classNames.ts b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.classNames.ts index 9909db6f527bf..d568a25ea8df2 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.classNames.ts +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.classNames.ts @@ -1,6 +1,5 @@ import { memoizeFunction } from '../../Utilities'; import { ITheme, mergeStyleSets } from '../../Styling'; -import { IContextualMenuStyles, IMenuItemStyles } from './ContextualMenu.types'; import { getStyles as getContextualMenuStyles, getMenuItemStyles } from './ContextualMenu.styles'; import { IVerticalDividerClassNames } from '../Divider/VerticalDivider.types'; import { getDividerClassNames } from '../Divider/VerticalDivider.classNames'; @@ -29,8 +28,6 @@ export interface IMenuItemClassNames { } export const getSplitButtonVerticalDividerClassNames = memoizeFunction((theme: ITheme): IVerticalDividerClassNames => { - const { semanticColors } = theme; - const ContextualMenuDividerColor = semanticColors.bodyDivider; return mergeStyleSets(getDividerClassNames(theme), { divider: { height: 16, @@ -86,8 +83,6 @@ export const getItemClassNames = memoizeFunction(( subMenuClassName?: string, ): IMenuItemClassNames => { - const { semanticColors } = theme; - const ContextualMenuIconColor = semanticColors.menuIcon; const styles = getMenuItemStyles(theme); return mergeStyleSets({ diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.test.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.test.tsx index 628199910bb4e..e4d912aa78495 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.test.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.test.tsx @@ -10,8 +10,7 @@ import { FocusZoneDirection } from '../../FocusZone'; import { ContextualMenu, canAnyMenuItemsCheck } from './ContextualMenu'; import { IContextualMenuItem, ContextualMenuItemType } from './ContextualMenu.types'; -import { Layer } from '../Layer/Layer'; -import { mount } from 'enzyme'; +import { LayerBase as Layer } from '../Layer/Layer.base'; describe('ContextualMenu', () => { @@ -38,7 +37,7 @@ describe('ContextualMenu', () => { /> ); - let menuList = document.querySelector('.ms-ContextualMenu-list') as HTMLUListElement; + const menuList = document.querySelector('.ms-ContextualMenu-list') as HTMLUListElement; expect(menuList.scrollHeight).toBeLessThanOrEqual(menuList.offsetHeight); }); @@ -52,7 +51,7 @@ describe('ContextualMenu', () => { ]; let spyCalled = false; - let onDismissSpy = (ev?: any, dismissAll?: boolean) => { spyCalled = true; }; + const onDismissSpy = (ev?: any, dismissAll?: boolean) => { spyCalled = true; }; ReactTestUtils.renderIntoDocument( { /> ); - let menuList = document.querySelector('ul.ms-ContextualMenu-list') as HTMLUListElement; + const menuList = document.querySelector('ul.ms-ContextualMenu-list') as HTMLUListElement; ReactTestUtils.Simulate.keyDown(menuList, { which: KeyCodes.left }); expect(spyCalled).toEqual(true); @@ -77,18 +76,18 @@ describe('ContextualMenu', () => { ]; let spyCalled = false; - let onDismissSpy = (ev?: any, dismissAll?: boolean) => { spyCalled = true; }; + const onDismissSpy = (ev?: any, dismissAll?: boolean) => { spyCalled = true; }; ReactTestUtils.renderIntoDocument( ); - let menuList = document.querySelector('ul.ms-ContextualMenu-list') as HTMLUListElement; + const menuList = document.querySelector('ul.ms-ContextualMenu-list') as HTMLUListElement; ReactTestUtils.Simulate.keyDown(menuList, { which: KeyCodes.left }); expect(spyCalled).toEqual(false); @@ -103,18 +102,18 @@ describe('ContextualMenu', () => { ]; let spyCalled = false; - let onDismissSpy = (ev?: any, dismissAll?: boolean) => { spyCalled = true; }; + const onDismissSpy = (ev?: any, dismissAll?: boolean) => { spyCalled = true; }; ReactTestUtils.renderIntoDocument( ); - let menuList = document.querySelector('ul.ms-ContextualMenu-list') as HTMLUListElement; + const menuList = document.querySelector('ul.ms-ContextualMenu-list') as HTMLUListElement; ReactTestUtils.Simulate.keyDown(menuList, { which: KeyCodes.left }); expect(spyCalled).toEqual(false); @@ -142,7 +141,7 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; ReactTestUtils.Simulate.keyDown(menuItem, { which: KeyCodes.right }); @@ -172,13 +171,46 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; ReactTestUtils.Simulate.click(menuItem); expect(document.querySelector('.SubMenuClass')).toBeDefined(); }); + it('sets the correct aria-owns attribute for the submenu', () => { + const submenuId = 'testSubmenuId'; + const items: IContextualMenuItem[] = [ + { + name: 'TestText 1', + key: 'TestKey1', + subMenuProps: { + id: submenuId, + items: [ + { + name: 'SubmenuText 1', + key: 'SubmenuKey1', + className: 'SubMenuClass' + } + ] + } + }, + ]; + + ReactTestUtils.renderIntoDocument( + + ); + + const parentMenuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + ReactTestUtils.Simulate.click(parentMenuItem); + const childMenu = document.getElementById(submenuId); + + expect(childMenu!.id).toBe(submenuId); + expect(parentMenuItem.getAttribute('aria-owns')).toBe(submenuId); + }); + it('still works with deprecated IContextualMenuItem.items property', () => { const items: IContextualMenuItem[] = [ { @@ -200,19 +232,28 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; ReactTestUtils.Simulate.keyDown(menuItem, { which: KeyCodes.right }); expect(document.querySelector('.SubMenuClass')).toBeDefined(); }); - it('applies disabled property when `disabled` is true', () => { + it('can focus on disabled items', () => { const items: IContextualMenuItem[] = [ { name: 'TestText 1', key: 'TestKey1', + }, + { + name: 'TestText 2', + key: 'TestKey2', disabled: true, }, + { + name: 'TestText 3', + key: 'TestKey3', + isDisabled: true, + }, ]; ReactTestUtils.renderIntoDocument( @@ -221,17 +262,51 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItems = document.querySelectorAll('button.ms-ContextualMenu-link') as NodeListOf; + expect(menuItems.length).toEqual(3); + + menuItems[0].focus(); + expect(document.activeElement.textContent).toEqual('TestText 1'); + expect(document.activeElement.className.split(' ')).not.toContain('is-disabled'); + + menuItems[1].focus(); + expect(document.activeElement.textContent).toEqual('TestText 2'); + expect(document.activeElement.className.split(' ')).toContain('is-disabled'); - expect(menuItem.disabled).toBeTruthy(); + menuItems[2].focus(); + expect(document.activeElement.textContent).toEqual('TestText 3'); + expect(document.activeElement.className.split(' ')).toContain('is-disabled'); }); - it('applies disabled property when deprecated property `isDisabled` is true', () => { + it('cannot click on disabled items', () => { + const itemsClicked = [ + false, + false, + false + ]; const items: IContextualMenuItem[] = [ { name: 'TestText 1', key: 'TestKey1', + onClick: () => itemsClicked[0] = true + }, + { + name: 'TestText 2', + key: 'TestKey2', + disabled: true, + onClick: () => { + itemsClicked[1] = true; + fail('Disabled item should not be clickable'); + } + }, + { + name: 'TestText 3', + key: 'TestKey3', isDisabled: true, + onClick: () => { + itemsClicked[2] = true; + fail('Disabled item should not be clickable'); + } }, ]; @@ -241,9 +316,17 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItems = document.querySelectorAll('button.ms-ContextualMenu-link') as NodeListOf; + expect(menuItems.length).toEqual(3); + + menuItems[0].click(); + expect(itemsClicked[0]).toEqual(true); - expect(menuItem.disabled).toBeTruthy(); + menuItems[1].click(); + expect(itemsClicked[1]).toEqual(false); + + menuItems[2].click(); + expect(itemsClicked[2]).toEqual(false); }); it('renders headers properly', () => { @@ -270,12 +353,12 @@ describe('ContextualMenu', () => { /> ); - let menuItems = document.querySelectorAll('li'); + const menuItems = document.querySelectorAll('li'); expect(menuItems.length).toEqual(4); - let headerOne = menuItems[0]; - let dividerOne = menuItems[2]; - let headerTwo = menuItems[3]; + const headerOne = menuItems[0]; + const dividerOne = menuItems[2]; + const headerTwo = menuItems[3]; expect(headerOne.className).not.toEqual(expect.stringMatching('divider')); expect(headerOne.firstElementChild!.className).toEqual(expect.stringMatching('header')); @@ -324,24 +407,115 @@ describe('ContextualMenu', () => { } ]; - const foo = ReactTestUtils.renderIntoDocument( + ReactTestUtils.renderIntoDocument( ); - let menuItems = document.querySelectorAll('li'); + const menuItems = document.querySelectorAll('li'); expect(menuItems.length).toEqual(8); }); + describe('with links', () => { + const testUrl = 'http://test.com'; + let items: IContextualMenuItem[]; + let menuItems: NodeListOf; + let linkNoTarget: Element; + let linkBlankTarget: Element; + let linkBlankTargetAndRel: Element; + let linkSelfTarget: Element; + let linkNoTargetAndRel: Element; + + beforeEach(() => { + items = [ + { + name: 'TestText 1', + key: 'TestKey1', + href: testUrl + }, + { + name: 'TestText 2', + key: 'TestKey2', + href: testUrl, + target: '_blank' + }, + { + name: 'TestText 3', + key: 'TestKey3', + href: testUrl, + target: '_blank', + rel: 'test' + }, + { + name: 'TestText 4', + key: 'TestKey4', + href: testUrl, + target: '_self', + }, + { + name: 'TestText 5', + key: 'TestKey5', + href: testUrl, + rel: 'test' + }, + ]; + + ReactTestUtils.renderIntoDocument( + + ); + + menuItems = document.querySelectorAll('li a'); + linkNoTarget = menuItems[0]; + linkBlankTarget = menuItems[1]; + linkBlankTargetAndRel = menuItems[2]; + linkSelfTarget = menuItems[3]; + linkNoTargetAndRel = menuItems[4]; + }); + + it('should render an anchor with the passed href', () => { + expect(linkNoTarget.getAttribute('href')).toEqual(testUrl); + }); + + describe('with target passed', () => { + it('should render with the specified target', () => { + expect(linkSelfTarget.getAttribute('target')).toEqual('_self'); + }); + + it('should not default the rel if the target is not _blank', () => { + expect(linkSelfTarget.getAttribute('rel')).toBeNull(); + }); + + describe('when the target is _blank and there is no rel specified', () => { + it('should default a rel to prevent clickjacking', () => { + expect(linkBlankTarget.getAttribute('rel')).toEqual('nofollow noopener noreferrer'); + }); + }); + + describe('when the target is _blank and there is a rel specified', () => { + it('should use the specified rel', () => { + expect(linkBlankTargetAndRel.getAttribute('rel')).toEqual('test'); + }); + }); + }); + + describe('with rel passed', () => { + it('should add the specified rel', () => { + expect(linkNoTargetAndRel.getAttribute('rel')).toEqual('test'); + }); + }); + }); + it('does not return a value if no items are given', () => { ReactTestUtils.renderIntoDocument( ); - let menuList = document.querySelector('.ms-ContextualMenu-list'); + const menuList = document.querySelector('.ms-ContextualMenu-list'); expect(menuList).toBeNull(); @@ -440,8 +614,8 @@ describe('ContextualMenu', () => { focusedItem = document.querySelector('.testkey2')!.firstChild; if (focusedItem) { - let focusedItemElement = focusedItem as HTMLElement; - let eventObject = document.createEvent('Events'); + const focusedItemElement = focusedItem as HTMLElement; + const eventObject = document.createEvent('Events'); eventObject.initEvent('mouseenter', true, false); focusedItemElement.dispatchEvent(eventObject); } @@ -508,6 +682,23 @@ describe('ContextualMenu', () => { expect(menuMountedFirst).toEqual(false); }); + it('merges callout classNames', () => { + ReactTestUtils.renderIntoDocument( + + ); + + const callout = document.querySelector('.ms-Callout') as HTMLElement; + expect(callout).toBeDefined(); + expect(callout.classList.contains('ms-ContextualMenu-Callout')).toBeTruthy(); + expect(callout.classList.contains('foo')).toBeTruthy(); + }); + it('Contextual Menu submenu has chrevron icon even if submenu has no items', () => { const menuWithEmptySubMenu: IContextualMenuItem[] = [ { @@ -525,7 +716,7 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; expect(menuItem.querySelector('.ms-ContextualMenu-submenuIcon')).not.toEqual(null); }); @@ -554,13 +745,39 @@ describe('ContextualMenu', () => { /> ); - let menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + const menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; ReactTestUtils.Simulate.click(menuItem); expect(subMenuOpened).toEqual(true); }); + it('calls the custom child renderer when the contextualMenuItemAs prop is provided', () => { + const items: IContextualMenuItem[] = [ + { + name: 'TestText 1', + key: 'TestKey1', + }, + { + name: 'TestText 2', + key: 'TestKey2', + } + ]; + const customRenderer = jest.fn(() => null); + + ReactTestUtils.renderIntoDocument( + + ); + + const menuItem = document.querySelector('button.ms-ContextualMenu-link') as HTMLButtonElement; + ReactTestUtils.Simulate.click(menuItem); + + expect(customRenderer).toHaveBeenCalledTimes(2); + }); + describe('canAnyMenuItemsCheck', () => { it('returns false when there are no checkable menu items', () => { const items: IContextualMenuItem[] = [ diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.tsx index 75f503bb0b426..855c6e3f44f97 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenu.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { IContextualMenuProps, IContextualMenuItem, ContextualMenuItemType } from './ContextualMenu.types'; import { DirectionalHint } from '../../common/DirectionalHint'; -import { FocusZone, FocusZoneDirection } from '../../FocusZone'; +import { FocusZone, FocusZoneDirection, IFocusZoneProps, FocusZoneTabbableElements } from '../../FocusZone'; import { IMenuItemClassNames, IContextualMenuClassNames, @@ -24,62 +24,35 @@ import { getWindow, customizable, getFirstFocusable, - getLastFocusable + getLastFocusable, + css, + shouldWrapFocus } from '../../Utilities'; +import { hasSubmenu, getIsChecked } from '../../utilities/contextualMenu/index'; import { withResponsiveMode, ResponsiveMode } from '../../utilities/decorators/withResponsiveMode'; import { Callout } from '../../Callout'; -import { - Icon, - IIconProps -} from '../../Icon'; +import { IIconProps } from '../../Icon'; import { VerticalDivider } from '../../Divider'; +import { ContextualMenuItem } from './ContextualMenuItem'; + export interface IContextualMenuState { expandedMenuItemKey?: string; dismissedMenuItemKey?: string; contextualMenuItems?: IContextualMenuItem[]; - contextualMenuTarget?: HTMLElement; - submenuTarget?: HTMLElement; + contextualMenuTarget?: Element; + submenuTarget?: Element; positions?: any; slideDirectionalClassName?: string; subMenuId?: string; submenuDirection?: DirectionalHint; } -export function hasSubmenu(item: IContextualMenuItem) { - return !!(item.subMenuProps || item.items); -} - export function getSubmenuItems(item: IContextualMenuItem) { return item.subMenuProps ? item.subMenuProps.items : item.items; } -/** - * Determines the effective checked state of a menu item. - * - * @param item {IContextualMenuItem} to get the check state of. - * @returns {true} if the item is checked. - * @returns {false} if the item is unchecked. - * @returns {null} if the item is not checkable. - */ -function getIsChecked(item: IContextualMenuItem): boolean | null { - if (item.canCheck) { - return !!(item.isChecked || item.checked); - } - - if (typeof item.isChecked === 'boolean') { - return item.isChecked; - } - - if (typeof item.checked === 'boolean') { - return item.checked; - } - - // Item is not checkable. - return null; -} - /** * Returns true if a list of menu items can contain a checkbox */ @@ -108,8 +81,7 @@ export class ContextualMenu extends BaseComponent this._previousActiveElement!.focus(), 0); @@ -190,9 +165,13 @@ export class ContextualMenu extends BaseComponent 0) { let indexCorrection = 0; let totalItemCount = 0; - for (let item of items) { + for (const item of items) { if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) { - totalItemCount++; + const itemCount = item.customOnRenderListLength ? item.customOnRenderListLength : 1; + totalItemCount += itemCount; } } return ( { title }
    } { (items && items.length) ? (
      { items.map((item, index) => { - if (item.itemType === ContextualMenuItemType.Divider || - item.itemType === ContextualMenuItemType.Header) { - indexCorrection++; + const menuItem = this._renderMenuItem(item, index, indexCorrection, totalItemCount, hasCheckmarks, hasIcons); + if (item.itemType !== ContextualMenuItemType.Divider && + item.itemType !== ContextualMenuItemType.Header) { + const indexIncrease = item.customOnRenderListLength ? item.customOnRenderListLength : 1; + indexCorrection += indexIncrease; } - return this._renderMenuItem(item, index, index - indexCorrection, totalItemCount, hasCheckmarks, hasIcons); + return menuItem; }) }
    @@ -330,18 +315,31 @@ export class ContextualMenu extends BaseComponent; } private _renderMenuItem(item: IContextualMenuItem, index: number, focusableElementIndex: number, totalItemCount: number, hasCheckmarks: boolean, hasIcons: boolean): React.ReactNode { - let renderedItems: React.ReactNode[] = []; - let iconProps = this._getIconProps(item); + const renderedItems: React.ReactNode[] = []; + const iconProps = this._getIconProps(item); // We only send a dividerClassName when the item to be rendered is a divider. For all other cases, the default divider style is used. - let dividerClassName = item.itemType === ContextualMenuItemType.Divider ? item.className : undefined; - let subMenuIconClassName = item.submenuIconProps ? item.submenuIconProps.className : ''; - let getClassNames = item.getItemClassNames || getItemClassNames; - let itemClassNames = getClassNames( + const dividerClassName = item.itemType === ContextualMenuItemType.Divider ? item.className : undefined; + const subMenuIconClassName = item.submenuIconProps ? item.submenuIconProps.className : ''; + const getClassNames = item.getItemClassNames || getItemClassNames; + const itemClassNames = getClassNames( this.props.theme!, this._isItemDisabled(item), (this.state.expandedMenuItemKey === item.key), @@ -363,14 +361,14 @@ export class ContextualMenu extends BaseComponent - { this._renderMenuItemChildren(item, classNames, index, hasCheckmarks, hasIcons) } +
    ); } private _renderAnchorMenuItem(item: IContextualMenuItem, classNames: IMenuItemClassNames, index: number, focusableElementIndex: number, totalItemCount: number, hasCheckmarks: boolean, hasIcons: boolean): React.ReactNode { + const { expandedMenuItemKey } = this.state; + const { contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem } = this.props; + + let anchorRel = item.rel; + if (item.target && item.target.toLowerCase() === '_blank') { + anchorRel = anchorRel ? anchorRel : 'nofollow noopener noreferrer'; // Safe default to prevent tabjacking + } + + const subMenuId = this._getSubMenuId(item); + const itemHasSubmenu = hasSubmenu(item); + return ( ); } @@ -491,7 +521,10 @@ export class ContextualMenu extends BaseComponent this._onItemMouseDown(item, ev), onMouseMove: this._onItemMouseMove.bind(this, item), - disabled: this._isItemDisabled(item), href: item.href, title: item.title, 'aria-label': ariaLabel, - 'aria-haspopup': hasSubmenu(item) || null, + 'aria-haspopup': itemHasSubmenu || null, 'aria-owns': item.key === expandedMenuItemKey ? subMenuId : null, - 'aria-expanded': hasSubmenu(item) ? item.key === expandedMenuItemKey : null, + 'aria-expanded': itemHasSubmenu ? item.key === expandedMenuItemKey : null, 'aria-checked': isChecked, 'aria-posinset': focusableElementIndex + 1, 'aria-setsize': totalItemCount, @@ -529,10 +566,17 @@ export class ContextualMenu extends BaseComponent + > + + ); } @@ -552,6 +596,8 @@ export class ContextualMenu extends BaseComponent , + ); } private _renderSplitIconButton(item: IContextualMenuItem, classNames: IMenuItemClassNames, index: number) { + const { contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem } = this.props; const itemProps = { onClick: this._onItemClick.bind(this, item), disabled: this._isItemDisabled(item), @@ -607,63 +656,28 @@ export class ContextualMenu extends BaseComponent this._onItemMouseDown(item, ev), onMouseMove: this._onItemMouseMove.bind(this, item) }), - this._renderMenuItemChildren(itemProps, classNames, index, false, false)); + + ); } private _renderSplitDivider(item: IContextualMenuItem) { - let getDividerClassnames = item.getSplitButtonVerticalDividerClassNames || getSplitButtonVerticalDividerClassNames; + const getDividerClassnames = item.getSplitButtonVerticalDividerClassNames || getSplitButtonVerticalDividerClassNames; return ; } - private _renderMenuItemChildren(item: IContextualMenuItem, classNames: IMenuItemClassNames, index: number, hasCheckmarks: boolean, hasIcons: boolean) { - const isItemChecked: boolean | null | undefined = getIsChecked(item); - return ( -
    - { (hasCheckmarks) ? ( - - ) : (null) } - { (hasIcons) ? ( - this._renderIcon(item, classNames) - ) : (null) } - { item.name ? ( - { item.name } - ) : null - } - { hasSubmenu(item) ? ( - - ) : (null) } -
    - ); - } - private _getIconProps(item: IContextualMenuItem): IIconProps { - let iconProps: IIconProps = item.iconProps ? item.iconProps : { + const iconProps: IIconProps = item.iconProps ? item.iconProps : { iconName: item.icon }; return iconProps; } - private _renderIcon(item: IContextualMenuItem, classNames: IMenuItemClassNames) { - // Only present to allow continued use of item.icon which is deprecated. - let iconProps = this._getIconProps(item); - - return ; - } - @autobind private _onKeyDown(ev: React.KeyboardEvent) { - let submenuCloseKey = getRTL() ? KeyCodes.right : KeyCodes.left; - - if (ev.which === KeyCodes.escape - || (ev.which === submenuCloseKey && this.props.isSubMenu && this.props.arrowDirection === FocusZoneDirection.vertical)) { + if (ev.which === KeyCodes.escape || + ev.altKey || + ev.metaKey || + this._shouldCloseSubMenu(ev)) { // When a user presses escape, we will try to refocus the previous focused element. this._isFocusingPreviousElement = true; ev.preventDefault(); @@ -672,9 +686,24 @@ export class ContextualMenu extends BaseComponent): boolean { + const submenuCloseKey = getRTL() ? KeyCodes.right : KeyCodes.left; + + if (ev.which !== submenuCloseKey || !this.props.isSubMenu) { + return false; + } + + return this._adjustedFocusZoneProps.direction === FocusZoneDirection.vertical || + (!!this._adjustedFocusZoneProps.checkForNoWrap && !shouldWrapFocus(ev.target as HTMLElement, 'data-no-horizontal-wrap')); + } + @autobind private _onMenuKeyDown(ev: React.KeyboardEvent) { - if (ev.which === KeyCodes.escape) { + if (ev.which === KeyCodes.escape || ev.altKey || ev.metaKey) { this._isFocusingPreviousElement = true; ev.preventDefault(); ev.stopPropagation(); @@ -686,7 +715,7 @@ export class ContextualMenu extends BaseComponent { this._isScrollIdle = true; }, this._scrollIdleDelay); + this._scrollIdleTimeoutId = this._async.setTimeout(() => { this._isScrollIdle = true; }, this._navigationIdleDelay); } private _onItemMouseEnter(item: any, ev: React.MouseEvent) { @@ -720,36 +749,18 @@ export class ContextualMenu extends BaseComponent this._onItemSubMenuExpand(item, targetElement), 500); - } else { - this._enterTimerId = this._async.setTimeout(() => this._onSubMenuDismiss(ev), 500); - } - } - - targetElement.focus(); + this._updateFocusOnMouseEvent(item, ev); } private _onItemMouseMove(item: any, ev: React.MouseEvent) { - let targetElement = ev.currentTarget as HTMLElement; + const targetElement = ev.currentTarget as HTMLElement; if (!this._isScrollIdle || targetElement === this._targetWindow.document.activeElement as HTMLElement) { return; } - if (item.key !== this.state.expandedMenuItemKey) { - if (hasSubmenu(item)) { - this._enterTimerId = this._async.setTimeout(() => this._onItemSubMenuExpand(item, targetElement), 500); - } else { - this._enterTimerId = this._async.setTimeout(() => this._onSubMenuDismiss(ev), 500); - } - } - - targetElement.focus(); + this._updateFocusOnMouseEvent(item, ev); } @autobind @@ -763,7 +774,7 @@ export class ContextualMenu extends BaseComponent) { + const targetElement = ev.currentTarget as HTMLElement; + const { subMenuHoverDelay: timeoutDuration = this._navigationIdleDelay } = this.props; + + if (item.key === this.state.expandedMenuItemKey) { + return; + } + + if (this._enterTimerId !== undefined) { + this._async.clearTimeout(this._enterTimerId); + this._enterTimerId = undefined; + } + + // If the menu is not expanded we can update focus without any delay + if (this.state.expandedMenuItemKey === undefined) { + targetElement.focus(); + } + + // Delay updating expanding/dismissing the submenu + // and only set focus if we have not already done so + if (hasSubmenu(item)) { + this._enterTimerId = this._async.setTimeout(() => { + targetElement.focus(); + this._onItemSubMenuExpand(item, targetElement); + }, timeoutDuration); + } else { + this._enterTimerId = this._async.setTimeout(() => { + this._onSubMenuDismiss(ev); + targetElement.focus(); + }, timeoutDuration); + } + } + private _onItemMouseDown(item: IContextualMenuItem, ev: React.MouseEvent) { if (item.onMouseDown) { item.onMouseDown(item, ev); @@ -786,7 +835,7 @@ export class ContextualMenu extends BaseComponent) { - let items = getSubmenuItems(item); + const items = getSubmenuItems(item); if (!hasSubmenu(item) && (!items || !items.length)) { // This is an item without a menu. Click it. this._executeItemClick(item, ev); @@ -808,17 +857,21 @@ export class ContextualMenu extends BaseComponent) { + if (item.disabled || item.isDisabled) { + return; + } + let dismiss = false; if (item.onClick) { - item.onClick(ev, item); + dismiss = !!item.onClick(ev, item); } else if (this.props.onItemClick) { - this.props.onItemClick(ev, item); + dismiss = !!this.props.onItemClick(ev, item); } - !ev.defaultPrevented && this.dismiss(ev, true); + (dismiss || !ev.defaultPrevented) && this.dismiss(ev, true); } private _onItemKeyDown(item: any, ev: KeyboardEvent) { - let openKey = getRTL() ? KeyCodes.left : KeyCodes.right; + const openKey = getRTL() ? KeyCodes.left : KeyCodes.right; if (ev.which === openKey) { this._onItemSubMenuExpand(item, ev.currentTarget as HTMLElement); @@ -866,7 +919,7 @@ export class ContextualMenu extends BaseComponent, IWith /** * The target that the ContextualMenu should try to position itself based on. - * It can be either an HTMLElement a querySelector string of a valid HTMLElement + * It can be either an Element a querySelector string of a valid Element * or a MouseEvent. If MouseEvent is given then the origin point of the event will be used. */ - target?: HTMLElement | string | MouseEvent | IPoint | null; + target?: Element | string | MouseEvent | IPoint | null; /** * How the element should be positioned @@ -134,9 +135,10 @@ export interface IContextualMenuProps extends React.Props, IWith /** * Click handler which is invoked if onClick is not passed for individual contextual - * menu item + * menu item. + * Returning true will dismiss the menu even if ev.preventDefault() was called. */ - onItemClick?: (ev?: React.MouseEvent, item?: IContextualMenuItem) => void; + onItemClick?: (ev?: React.MouseEvent, item?: IContextualMenuItem) => boolean | void; /** * CSS class to apply to the context menu. @@ -169,7 +171,7 @@ export interface IContextualMenuProps extends React.Props, IWith /** * Direction for arrow navigation of the ContextualMenu. Should only be specified if using custom-rendered menu items. - * @default FocusZoneDirection.vertical + * @deprecated Use focusZoneProps instead */ arrowDirection?: FocusZoneDirection; @@ -219,6 +221,27 @@ export interface IContextualMenuProps extends React.Props, IWith /** Method to call when trying to render a submenu. */ onRenderSubMenu?: IRenderFunction; + + /** + * Delay (in milliseconds) to wait before expanding / dismissing a submenu on mouseEnter or mouseLeave + */ + subMenuHoverDelay?: number; + + /** + * Method to override the render of the individual menu items + * @default ContextualMenuItem + */ + contextualMenuItemAs?: + React.ComponentClass | + React.StatelessComponent; + + /** + * Props to pass down to the FocusZone. + * NOTE: the default FocusZoneDirection will be used unless a direction + * is specified in the focusZoneProps (even if other focusZoneProps are defined) + * @default {direction: FocusZoneDirection.vertical} + */ + focusZoneProps?: IFocusZoneProps; } export interface IContextualMenuItem { @@ -303,9 +326,10 @@ export interface IContextualMenuItem { data?: any; /** - * Callback issued when the menu item is invoked. If ev.preventDefault() is called in onClick, click will not close menu + * Callback issued when the menu item is invoked. If ev.preventDefault() is called in onClick, click will not close menu. + * Returning true will dismiss the menu even if ev.preventDefault() was called. */ - onClick?: (ev?: React.MouseEvent, item?: IContextualMenuItem) => void; + onClick?: (ev?: React.MouseEvent, item?: IContextualMenuItem) => boolean | void; /** * An optional URL to navigate to upon selection @@ -317,6 +341,11 @@ export interface IContextualMenuItem { */ target?: string; + /** + * An optional rel when using href. If target is _blank rel is defaulted to a value to prevent clickjacking. + */ + rel?: string; + /** * Deprecated at v.80.0 and will be removed by v 1.0. Use 'subMenuProps' instead. * @deprecated @@ -406,6 +435,13 @@ export interface IContextualMenuItem { */ role?: string; + /** + * When rendering a custom component that is passed in, the component might also be a list of + * elements. We want to keep track of the correct index our menu is using based off of + * the length of the custom list. It is up to the user to increment the count for their list. + */ + customOnRenderListLength?: number; + /** * Any additional properties to use when custom rendering menu items. */ diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.test.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.test.tsx new file mode 100644 index 0000000000000..76545c463f2c1 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.test.tsx @@ -0,0 +1,142 @@ +jest.mock('../../utilities/contextualMenu'); + +import * as React from 'react'; +import { shallow, ShallowWrapper } from 'enzyme'; +import { ContextualMenuItem } from './ContextualMenuItem'; +import { IContextualMenuItemProps } from './ContextualMenuItem.types'; +import { IContextualMenuItem } from './ContextualMenu.types'; +import { IMenuItemClassNames } from './ContextualMenu.classNames'; +import { hasSubmenu } from '../../utilities/contextualMenu'; + +describe('ContextMenuItemChildren', () => { + describe('when a checkmark icon', () => { + let onCheckmarkClick: jest.Mock; + let menuItem: IContextualMenuItem; + let menuClassNames: IMenuItemClassNames; + let wrapper: ShallowWrapper; + + beforeEach(() => { + menuItem = { key: '123' }; + menuClassNames = getMenuItemClassNames(); + onCheckmarkClick = jest.fn(); + + wrapper = shallow( + + ); + }); + + it('renders the component with the checkmark', () => { + expect(wrapper).toMatchSnapshot(); + }); + + describe('when the checkmark is clicked', () => { + let event: jest.Mock; + beforeEach(() => { + event = jest.fn(); + wrapper.find('.checkmarkIcon').simulate('click', event); + }); + + it('invokes the onCheckmarkClick callback', () => { + expect(onCheckmarkClick).toHaveBeenCalledWith(menuItem, event); + }); + }); + }); + + describe('when it has icons', () => { + describe('when it has iconProps', () => { + let menuItem: IContextualMenuItem; + let menuClassNames: IMenuItemClassNames; + let wrapper: ShallowWrapper; + + beforeEach(() => { + menuItem = { key: '123', icon: 'itemIcon', name: 'menuItem' }; + menuClassNames = getMenuItemClassNames(); + + wrapper = shallow( + + ); + }); + + it('renders the icon', () => { + expect(wrapper).toMatchSnapshot(); + }); + }); + + describe('when it doesnt have iconProps', () => { + let menuItem: IContextualMenuItem; + let menuClassNames: IMenuItemClassNames; + let wrapper: ShallowWrapper; + + beforeEach(() => { + menuItem = { key: '123', iconProps: {} }; + menuClassNames = getMenuItemClassNames(); + + wrapper = shallow( + + ); + }); + + it('renders the icon with iconName', () => { + expect(wrapper).toMatchSnapshot(); + }); + }); + }); + + describe('when it has a sub menu', () => { + let menuItem: IContextualMenuItem; + let menuClassNames: IMenuItemClassNames; + let wrapper: ShallowWrapper; + + beforeEach(() => { + (hasSubmenu as jest.Mock).mockReturnValue(true); + menuItem = { key: '123', iconProps: {}, submenuIconProps: {} }; + menuClassNames = getMenuItemClassNames(); + + wrapper = shallow( + + ); + }); + + it('renders the menu icon', () => { + expect(wrapper).toMatchSnapshot(); + }); + }); +}); + +function getMenuItemClassNames(): IMenuItemClassNames { + return { + item: 'item', + divider: '---', + root: 'root', + linkContent: 'linkContent', + icon: 'icon', + checkmarkIcon: 'checkmarkIcon', + subMenuIcon: 'subMenuIcon', + label: 'label', + splitContainer: 'splitContainer', + splitPrimary: 'splitPrimary', + splitMenu: 'splitMenu', + linkContentMenu: 'linkContentMenu', + }; +} diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.tsx new file mode 100644 index 0000000000000..667d14bae1540 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.tsx @@ -0,0 +1,75 @@ +import * as React from 'react'; +import { hasSubmenu, getIsChecked } from '../../utilities/contextualMenu/index'; +import { IContextualMenuItem } from './ContextualMenu.types'; +import { IMenuItemClassNames } from './ContextualMenu.classNames'; +import { getRTL } from '../../Utilities'; +import { Icon } from '../../Icon'; +import { IContextualMenuItemProps } from './ContextualMenuItem.types'; + +const renderItemIcon = ({ hasIcons, item, classNames }: IContextualMenuItemProps) => { + // Only present to allow continued use of item.icon which is deprecated. + const { iconProps, icon } = item; + + if (!hasIcons) { + return null; + } + + if (iconProps) { + return ; + } + + return ; +}; + +const renderCheckMarkIcon = ({ onCheckmarkClick, item, classNames }: IContextualMenuItemProps) => { + const isItemChecked = getIsChecked(item); + if (onCheckmarkClick) { + const onClick = (e: React.MouseEvent) => onCheckmarkClick(item, e); + + return ( + + ); + } + return null; +}; + +const renderItemName = ({ item, classNames }: IContextualMenuItemProps) => { + if (item.name) { + return { item.name }; + } + return null; +}; + +const renderSubMenuIcon = ({ item, classNames }: IContextualMenuItemProps) => { + if (hasSubmenu(item)) { + return ( + + ); + } + return null; +}; + +export const ContextualMenuItem: React.StatelessComponent = (props) => { + const { item, classNames } = props; + + return ( +
    + { renderCheckMarkIcon(props) } + { renderItemIcon(props) } + { renderItemName(props) } + { renderSubMenuIcon(props) } +
    + ); +}; diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.types.ts b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.types.ts new file mode 100644 index 0000000000000..189a54047b7d5 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuItem.types.ts @@ -0,0 +1,31 @@ +import { IContextualMenuItem } from './ContextualMenu.types'; +import { IMenuItemClassNames } from './ContextualMenu.classNames'; + +export interface IContextualMenuItemProps + extends React.HTMLAttributes { + + /** + * The item to display + */ + item: IContextualMenuItem; + + /** + * Classnames for different aspects of a menu item + */ + classNames: IMenuItemClassNames; + + /** + * Index of the item + */ + index: number; + + /** + * If this item has icons + */ + hasIcons: boolean | undefined; + + /** + * Click handler for the checkmark + */ + onCheckmarkClick?: ((item: IContextualMenuItem, ev: React.MouseEvent) => void); +} diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuPage.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuPage.tsx index 1281e932a2d14..eee454bb403db 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuPage.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/ContextualMenuPage.tsx @@ -9,10 +9,12 @@ import { ContextualMenuBasicExample } from './examples/ContextualMenu.Basic.Exam import { ContextualMenuIconExample } from './examples/ContextualMenu.Icon.Example'; import { ContextualMenuSectionExample } from './examples/ContextualMenu.Section.Example'; import { ContextualMenuSubmenuExample } from './examples/ContextualMenu.Submenu.Example'; +import { ContextualMenuCustomizationWithNoWrapExample } from './examples/ContextualMenu.CustomizationWithNoWrap.Example'; import { ContextualMenuCheckmarksExample } from './examples/ContextualMenu.Checkmarks.Example'; import { ContextualMenuDirectionalExample } from './examples/ContextualMenu.Directional.Example'; import { ContextualMenuCustomizationExample } from './examples/ContextualMenu.Customization.Example'; import { ContextualMenuWithScrollBarExample } from './examples/ContextualMenu.ScrollBar.Example'; +import { ContextualMenuWithCustomMenuItemExample } from './examples/ContextualMenu.CustomMenuItem.Example'; import { ComponentStatus } from '../../demo/ComponentStatus/ComponentStatus'; import { ContextualMenuStatus } from './ContextualMenu.checklist'; @@ -25,6 +27,7 @@ const ContextualMenuDirectionalExampleCode = require('!raw-loader!office-ui-fabr const ContextualMenuCustomizationExampleCode = require('!raw-loader!office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Customization.Example.tsx') as string; const ContextualMenuWithScrollBarExampleCode = require ('!raw-loader!office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.ScrollBar.Example.tsx') as string; +const ContextualMenuWithCustomMenuItemExampleCode = require('!raw-loader!office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomMenuItem.Example.tsx') as string; export class ContextualMenuPage extends React.Component { public render() { @@ -76,12 +79,24 @@ export class ContextualMenuPage extends React.Component + + + + + +
    } @@ -132,7 +147,7 @@ export class ContextualMenuPage extends React.Component } /> diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/__snapshots__/ContextualMenuItem.test.tsx.snap b/packages/office-ui-fabric-react/src/components/ContextualMenu/__snapshots__/ContextualMenuItem.test.tsx.snap new file mode 100644 index 0000000000000..11c4226f3d2f8 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/__snapshots__/ContextualMenuItem.test.tsx.snap @@ -0,0 +1,541 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ContextMenuItemChildren when a checkmark icon renders the component with the checkmark 1`] = ` +ShallowWrapper { + "length": 1, + Symbol(enzyme.__root__): [Circular], + Symbol(enzyme.__unrendered__): , + Symbol(enzyme.__renderer__): Object { + "batchedUpdates": [Function], + "getNode": [Function], + "render": [Function], + "simulateEvent": [Function], + "unmount": [Function], + }, + Symbol(enzyme.__node__): Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + , + null, + null, + null, + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "checkmarkIcon", + "iconName": "", + "onClick": [Function], + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + null, + null, + null, + ], + "type": "div", + }, + Symbol(enzyme.__nodes__): Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + , + null, + null, + null, + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "checkmarkIcon", + "iconName": "", + "onClick": [Function], + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + null, + null, + null, + ], + "type": "div", + }, + ], + Symbol(enzyme.__options__): Object { + "adapter": ReactSixteenAdapter { + "options": Object { + "enableComponentDidUpdateOnSetState": true, + }, + }, + }, +} +`; + +exports[`ContextMenuItemChildren when it has a sub menu renders the menu icon 1`] = ` +ShallowWrapper { + "length": 1, + Symbol(enzyme.__root__): [Circular], + Symbol(enzyme.__unrendered__): , + Symbol(enzyme.__renderer__): Object { + "batchedUpdates": [Function], + "getNode": [Function], + "render": [Function], + "simulateEvent": [Function], + "unmount": [Function], + }, + Symbol(enzyme.__node__): Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + null, + , + null, + , + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "icon", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "subMenuIcon", + "iconName": "ChevronRight", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + ], + "type": "div", + }, + Symbol(enzyme.__nodes__): Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + null, + , + null, + , + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "icon", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "subMenuIcon", + "iconName": "ChevronRight", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + ], + "type": "div", + }, + ], + Symbol(enzyme.__options__): Object { + "adapter": ReactSixteenAdapter { + "options": Object { + "enableComponentDidUpdateOnSetState": true, + }, + }, + }, +} +`; + +exports[`ContextMenuItemChildren when it has icons when it doesnt have iconProps renders the icon with iconName 1`] = ` +ShallowWrapper { + "length": 1, + Symbol(enzyme.__root__): [Circular], + Symbol(enzyme.__unrendered__): , + Symbol(enzyme.__renderer__): Object { + "batchedUpdates": [Function], + "getNode": [Function], + "render": [Function], + "simulateEvent": [Function], + "unmount": [Function], + }, + Symbol(enzyme.__node__): Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + null, + , + null, + null, + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "icon", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + null, + null, + ], + "type": "div", + }, + Symbol(enzyme.__nodes__): Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + null, + , + null, + null, + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "icon", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + null, + null, + ], + "type": "div", + }, + ], + Symbol(enzyme.__options__): Object { + "adapter": ReactSixteenAdapter { + "options": Object { + "enableComponentDidUpdateOnSetState": true, + }, + }, + }, +} +`; + +exports[`ContextMenuItemChildren when it has icons when it has iconProps renders the icon 1`] = ` +ShallowWrapper { + "length": 1, + Symbol(enzyme.__root__): [Circular], + Symbol(enzyme.__unrendered__): , + Symbol(enzyme.__renderer__): Object { + "batchedUpdates": [Function], + "getNode": [Function], + "render": [Function], + "simulateEvent": [Function], + "unmount": [Function], + }, + Symbol(enzyme.__node__): Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + null, + , + + menuItem + , + null, + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "icon", + "iconName": "itemIcon", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": "menuItem", + "className": "label", + }, + "ref": null, + "rendered": "menuItem", + "type": "span", + }, + null, + ], + "type": "div", + }, + Symbol(enzyme.__nodes__): Array [ + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": Array [ + null, + , + + menuItem + , + null, + ], + "className": "linkContent", + }, + "ref": null, + "rendered": Array [ + null, + Object { + "instance": null, + "key": undefined, + "nodeType": "class", + "props": Object { + "className": "icon", + "iconName": "itemIcon", + }, + "ref": null, + "rendered": null, + "type": [Function], + }, + Object { + "instance": null, + "key": undefined, + "nodeType": "host", + "props": Object { + "children": "menuItem", + "className": "label", + }, + "ref": null, + "rendered": "menuItem", + "type": "span", + }, + null, + ], + "type": "div", + }, + ], + Symbol(enzyme.__options__): Object { + "adapter": ReactSixteenAdapter { + "options": Object { + "enableComponentDidUpdateOnSetState": true, + }, + }, + }, +} +`; diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Basic.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Basic.Example.tsx index 4fa1b5f774ef5..11eb5e116fa9e 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Basic.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Basic.Example.tsx @@ -23,7 +23,8 @@ export class ContextualMenuBasicExample extends React.Component { items: [ { key: 'newItem', - name: 'New' + name: 'New', + onClick: () => console.log('New clicked') }, { key: 'divider_1', @@ -31,20 +32,35 @@ export class ContextualMenuBasicExample extends React.Component { }, { key: 'rename', - name: 'Rename' + name: 'Rename', + onClick: () => console.log('Rename clicked') }, { key: 'edit', - name: 'Edit' + name: 'Edit', + onClick: () => console.log('Edit clicked') }, { key: 'properties', - name: 'Properties' + name: 'Properties', + onClick: () => console.log('Properties clicked') + }, + { + key: 'linkNoTarget', + name: 'Link same window', + href: 'http://bing.com' + }, + { + key: 'linkWithTarget', + name: 'Link new window', + href: 'http://bing.com', + target: '_blank' }, { key: 'disabled', name: 'Disabled item', - disabled: true + disabled: true, + onClick: () => console.error('Disabled item should not be clickable.') } ] } } diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Checkmarks.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Checkmarks.Example.tsx index e94043cc69f7f..3e9d34033dc2a 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Checkmarks.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Checkmarks.Example.tsx @@ -7,7 +7,7 @@ export interface IContextualMenuMultiselectExampleState { selection?: { [key: string]: boolean }; } -let keys: string[] = ['newItem', 'share', 'mobile', 'enablePrint', 'enableMusic', 'newSub', 'emailMessage', 'calendarEvent']; +const keys: string[] = ['newItem', 'share', 'mobile', 'enablePrint', 'enableMusic', 'newSub', 'emailMessage', 'calendarEvent']; export class ContextualMenuCheckmarksExample extends React.Component<{}, IContextualMenuMultiselectExampleState> { @@ -22,7 +22,7 @@ export class ContextualMenuCheckmarksExample extends React.Component<{}, IContex } public render() { - let { selection } = this.state; + const { selection } = this.state; return ( , item?: IContextualMenuItem) { - let { selection } = this.state; + const { selection } = this.state; ev!.preventDefault(); selection![item!.key] = !selection![item!.key]; diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomMenuItem.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomMenuItem.Example.tsx new file mode 100644 index 0000000000000..583e6a1b07f03 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomMenuItem.Example.tsx @@ -0,0 +1,57 @@ +import * as React from 'react'; +import { ContextualMenuItemType } from 'office-ui-fabric-react/lib/ContextualMenu'; +import { IContextualMenuItemProps } from 'office-ui-fabric-react/lib/ContextualMenu'; +import { DefaultButton } from 'office-ui-fabric-react/lib/Button'; +import './ContextualMenuExample.scss'; + +export class ContextualMenuWithCustomMenuItemExample extends React.Component { + + constructor(props: {}) { + super(props); + this.state = { + showCallout: false + }; + } + + public render() { + return ( +
    +
    Custom rendered { props.item.name }
    + } } + /> +
    + ); + } +} diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Customization.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Customization.Example.tsx index 39bcefdc86f68..e3cbc91b48f10 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Customization.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Customization.Example.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { DirectionalHint, ContextualMenuItemType } from 'office-ui-fabric-react/lib/ContextualMenu'; -import { DefaultButton, IconButton, IButton } from 'office-ui-fabric-react/lib/Button'; +import { DefaultButton, IconButton } from 'office-ui-fabric-react/lib/Button'; import { FocusZoneDirection } from 'office-ui-fabric-react/lib/FocusZone'; import { autobind } from 'office-ui-fabric-react/lib/Utilities'; import './ContextualMenuExample.scss'; @@ -17,169 +17,169 @@ export class ContextualMenuCustomizationExample extends React.Component<{}, {}> directionalHint: DirectionalHint.bottomLeftEdge, className: 'ms-ContextualMenu-customizationExample', items: - [ - { - key: 'newItem', - name: 'New' - }, - { - key: 'upload', - name: 'Upload' - }, - { - key: 'divider_1', - itemType: ContextualMenuItemType.Divider - }, - { - key: 'charm', - name: 'Charm', - className: 'Charm-List', - subMenuProps: { - arrowDirection: FocusZoneDirection.bidirectional, - items: [ - { - key: 'none', - name: 'None' - }, - { - key: 'bulb', - name: 'Lightbulb', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'run', - name: 'Running', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'plane', - name: 'Airplane', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'page', - name: 'Page', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'cake', - name: 'Cake', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'soccer', - name: 'Soccer', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'home', - name: 'Home', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'emoji', - name: 'Emoji2', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'work', - name: 'Work', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'coffee', - name: 'Coffee', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'people', - name: 'People', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'stopwatch', - name: 'Stopwatch', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'music', - name: 'MusicInCollectionFill', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - }, - { - key: 'lock', - name: 'Lock', - onRender: this._renderCharmMenuItem, - className: 'ms-ContextualMenu-customizationExample-item' - } - ] + [ + { + key: 'newItem', + name: 'New' }, - }, - { - key: 'categories', - name: 'Categorize', - subMenuProps: { - items: [ - { - key: 'categories', - name: 'categories', - categoryList: [ - { - name: 'Personal', - color: 'yellow' - }, - { - name: 'Work', - color: 'green' - }, - { - name: 'Birthday', - color: 'blue' - }, - { - name: 'Spam', - color: 'grey' - }, - { - name: 'Urgent', - color: 'red' - }, - { - name: 'Hobbies', - color: 'black' - }, - ], - onRender: this._renderCategoriesList - }, - { - key: 'divider_1', - itemType: ContextualMenuItemType.Divider - }, - { - key: 'clear', - name: 'Clear categories' - }, - { - key: 'manage', - name: 'Manage categories' - } - ] + { + key: 'upload', + name: 'Upload' }, - } - ] + { + key: 'divider_1', + itemType: ContextualMenuItemType.Divider + }, + { + key: 'charm', + name: 'Charm', + className: 'Charm-List', + subMenuProps: { + arrowDirection: FocusZoneDirection.bidirectional, + items: [ + { + key: 'none', + name: 'None' + }, + { + key: 'bulb', + name: 'Lightbulb', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'run', + name: 'Running', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'plane', + name: 'Airplane', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'page', + name: 'Page', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'cake', + name: 'Cake', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'soccer', + name: 'Soccer', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'home', + name: 'Home', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'emoji', + name: 'Emoji2', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'work', + name: 'Work', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'coffee', + name: 'Coffee', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'people', + name: 'People', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'stopwatch', + name: 'Stopwatch', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'music', + name: 'MusicInCollectionFill', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + }, + { + key: 'lock', + name: 'Lock', + onRender: this._renderCharmMenuItem, + className: 'ms-ContextualMenu-customizationExample-item' + } + ] + }, + }, + { + key: 'categories', + name: 'Categorize', + subMenuProps: { + items: [ + { + key: 'categories', + name: 'categories', + categoryList: [ + { + name: 'Personal', + color: 'yellow' + }, + { + name: 'Work', + color: 'green' + }, + { + name: 'Birthday', + color: 'blue' + }, + { + name: 'Spam', + color: 'grey' + }, + { + name: 'Urgent', + color: 'red' + }, + { + name: 'Hobbies', + color: 'black' + }, + ], + onRender: this._renderCategoriesList + }, + { + key: 'divider_1', + itemType: ContextualMenuItemType.Divider + }, + { + key: 'clear', + name: 'Clear categories' + }, + { + key: 'manage', + name: 'Manage categories' + } + ] + }, + } + ] } } @@ -204,7 +204,7 @@ export class ContextualMenuCustomizationExample extends React.Component<{}, {}>
    • { item.categoryList.map((category: any) => - + ) }
    diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomizationWithNoWrap.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomizationWithNoWrap.Example.tsx new file mode 100644 index 0000000000000..1b9713903eb46 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.CustomizationWithNoWrap.Example.tsx @@ -0,0 +1,234 @@ +import * as React from 'react'; +import { DirectionalHint, ContextualMenuItemType } from 'office-ui-fabric-react/lib/ContextualMenu'; +import { DefaultButton, IconButton } from 'office-ui-fabric-react/lib/Button'; +import { FocusZoneDirection } from 'office-ui-fabric-react/lib/FocusZone'; +import { autobind } from 'office-ui-fabric-react/lib/Utilities'; +import './ContextualMenuExample.scss'; + +export class ContextualMenuCustomizationWithNoWrapExample extends React.Component<{}, {}> { + public render() { + return ( + + ); + } + + @autobind + private _renderCharmMenuItem(item: any, dismissMenu: () => void) { + return ( + + ); + } + + private _renderCategoriesList(item: any) { + return ( +
      +
    • + { item.categoryList.map((category: any) => + +
      + + + { category.name } + +
      +
      + ) } +
    • +
    + ); + } +} diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Directional.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Directional.Example.tsx index a591d48fd70b4..f1c7ce29df70f 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Directional.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Directional.Example.tsx @@ -3,7 +3,6 @@ import { DefaultButton } from 'office-ui-fabric-react/lib/Button'; import { Checkbox } from 'office-ui-fabric-react/lib/Checkbox'; import { DirectionalHint, ContextualMenuItemType } from 'office-ui-fabric-react/lib/ContextualMenu'; import { Dropdown, IDropdownOption } from 'office-ui-fabric-react/lib/Dropdown'; -import { TextField } from 'office-ui-fabric-react/lib/TextField'; import { autobind, getRTL } from 'office-ui-fabric-react/lib/Utilities'; import './ContextualMenuExample.scss'; import * as exampleStylesImport from '../../../common/_exampleStyles.scss'; @@ -36,12 +35,6 @@ const DIRECTION_OPTIONS = [{ key: DirectionalHint.topLeftEdge, text: 'Top Left E ]; export class ContextualMenuDirectionalExample extends React.Component<{}, IContextualMenuDirectionalExampleState> { - public refs: { - [key: string]: React.ReactInstance; - menuButton: HTMLElement; - gapSize: TextField; - }; - public constructor(props: {}) { super(props); @@ -57,7 +50,7 @@ export class ContextualMenuDirectionalExample extends React.Component<{}, IConte } public render() { - let { + const { beakWidth, directionalHint, directionalHintForRTL, @@ -95,7 +88,7 @@ export class ContextualMenuDirectionalExample extends React.Component<{}, IConte /> }
    -
    +
    diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.ScrollBar.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.ScrollBar.Example.tsx index 177d82852559b..c78318860195d 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.ScrollBar.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.ScrollBar.Example.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { DirectionalHint, ContextualMenuItemType } from 'office-ui-fabric-react/lib/ContextualMenu'; +import { DirectionalHint } from 'office-ui-fabric-react/lib/ContextualMenu'; import { DefaultButton } from 'office-ui-fabric-react/lib/Button'; import './ContextualMenuExample.scss'; diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Submenu.Example.tsx b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Submenu.Example.tsx index 5fc9baa0101fa..1a3171c052837 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Submenu.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenu.Submenu.Example.tsx @@ -1,17 +1,32 @@ import * as React from 'react'; import { DefaultButton } from 'office-ui-fabric-react/lib/Button'; +import { TextField } from 'office-ui-fabric-react/lib/TextField'; import './ContextualMenuExample.scss'; -export class ContextualMenuSubmenuExample extends React.Component { +export interface IContextualMenuSubmenuExampleState { + hoverDelay: number; +} + +export class ContextualMenuSubmenuExample extends React.Component { + + constructor(props: any) { + super(props); + + this.state = { + hoverDelay: 250 + }; + } public render() { return (
    + { } ], }, + href: 'https://bing.com', name: 'New' }, { @@ -72,4 +88,10 @@ export class ContextualMenuSubmenuExample extends React.Component {
    ); } + + private _onHoverDelayChanged = (newValue: string) => { + this.setState({ + hoverDelay: +newValue + }); + } } diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenuExample.scss b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenuExample.scss index 83e08bc27f6d4..10e6739218cce 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenuExample.scss +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/examples/ContextualMenuExample.scss @@ -47,7 +47,6 @@ } .ms-ContextualMenu-customizationExample-categorySwatch { - margin: 6px 8px; width: 24px; height: 24px; vertical-align: top; @@ -68,4 +67,8 @@ height: auto; } } + + .ms-ContextualMenu-customizationExample-button { + max-width: 50%; + } } diff --git a/packages/office-ui-fabric-react/src/components/ContextualMenu/index.ts b/packages/office-ui-fabric-react/src/components/ContextualMenu/index.ts index 26cda857d3173..ee97fdce0f03e 100644 --- a/packages/office-ui-fabric-react/src/components/ContextualMenu/index.ts +++ b/packages/office-ui-fabric-react/src/components/ContextualMenu/index.ts @@ -1,2 +1,4 @@ export * from './ContextualMenu'; export * from './ContextualMenu.types'; +export * from './ContextualMenuItem'; +export * from './ContextualMenuItem.types'; diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.scss b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.scss index bcd809bc56156..2b345f0fc454e 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.scss +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.scss @@ -45,5 +45,10 @@ .eventWithoutLabel { @include ms-DatePicker-event(); top: 7px; + + &:not(.msDatePickerDisabled) { + pointer-events: initial; + cursor: pointer; + } } diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx index a4c080b5436ae..8476fd2e3eba2 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx @@ -10,19 +10,19 @@ describe('DatePicker', () => { it('renders default DatePicker correctly', () => { // This will only render the input. Calendar component has its own snapshot. const component = renderer.create(); - let tree = component.toJSON(); + const tree = component.toJSON(); expect(tree).toMatchSnapshot(); }); it('should not open DatePicker when disabled, no label', () => { - let wrapper = mount(); + const wrapper = mount(); wrapper.find('i').simulate('click'); expect(wrapper.state('isDatePickerShown')).toBe(false); }); it('should not open DatePicker when disabled, with label', () => { - let wrapper = mount(); + const wrapper = mount(); wrapper.find('i').simulate('click'); expect(wrapper.state('isDatePickerShown')).toBe(false); }); diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx index 093cfaa8f0d6a..26c65aa91dd0a 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx @@ -5,17 +5,20 @@ import { } from './DatePicker.types'; import { Calendar, + ICalendar, DayOfWeek } from '../../Calendar'; import { FirstWeekOfYear } from '../../utilities/dateValues/DateValues'; import { Callout } from '../../Callout'; import { DirectionalHint } from '../../common/DirectionalHint'; -import { TextField } from '../../TextField'; +import { TextField, ITextField } from '../../TextField'; +import { Label } from '../../Label'; import { autobind, BaseComponent, KeyCodes, - css + css, + createRef } from '../../Utilities'; import { compareDates, compareDatePart } from '../../utilities/dateMath/DateMath'; import * as stylesImport from './DatePicker.scss'; @@ -119,17 +122,15 @@ export class DatePicker extends BaseComponent(); + private _datePickerDiv = createRef(); + private _textField = createRef(); private _preventFocusOpeningPicker: boolean; - private _focusOnSelectedDateOnUpdate: boolean; constructor(props: IDatePickerProps) { super(props); - let { formatDate, value } = props; + const { formatDate, value } = props; this.state = { selectedDate: value || undefined, @@ -142,7 +143,7 @@ export class DatePicker extends BaseComponent -
    +
    + { label && ( + + ) } +
    @@ -239,7 +249,7 @@ export class DatePicker extends BaseComponent ) } @@ -269,24 +279,39 @@ export class DatePicker extends BaseComponent { - if (onSelectDate) { - onSelectDate(date); - } + }); + + if (onSelectDate) { + onSelectDate(date); + } + + this.setState({ + isDatePickerShown: false, }); } @autobind private _onCalloutPositioned() { - this._calendar.focus(); + if (this._calendar.value) { + this._calendar.value.focus(); + } } @autobind @@ -316,7 +341,7 @@ export class DatePicker extends BaseComponent { @@ -169,6 +170,11 @@ export interface IDatePickerProps extends React.Props { * The initially highlighted date in the calendar picker */ initialPickerDate?: Date; + + /** + * Callback that runs after DatePicker's menu (Calendar) is closed + */ + onAfterMenuDismiss?: () => void; } export interface IDatePickerStrings { diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap b/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap index 66caed779204f..9f3ccff2170c4 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +++ b/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap @@ -30,7 +30,7 @@ exports[`DatePicker renders default DatePicker correctly 1`] = ` onInput={[Function]} onKeyDown={[Function]} placeholder={undefined} - readOnly={false} + readOnly={true} required={false} role="menu" type="text" @@ -38,7 +38,6 @@ exports[`DatePicker renders default DatePicker correctly 1`] = ` /> - + console.log('onAfterMenuDismiss called') } + // tslint:enable:jsx-no-lambda + /> diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Format.Example.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Format.Example.tsx index ee5c5e88e6680..1750d9fe5a87f 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Format.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Format.Example.tsx @@ -80,7 +80,7 @@ export class DatePickerFormatExample extends React.Component< } public render() { - let { firstDayOfWeek, value } = this.state; + const { firstDayOfWeek, value } = this.state; const desc = 'This field is required. One of the support input formats is year dash month dash day.'; return ( @@ -133,13 +133,13 @@ export class DatePickerFormatExample extends React.Component< @autobind private _onParseDateFromString(value: string): Date { - let date = this.state.value || new Date(); - let values = (value || '').trim().split('/'); - let day = + const date = this.state.value || new Date(); + const values = (value || '').trim().split('/'); + const day = values.length > 0 ? Math.max(1, Math.min(31, parseInt(values[0], 10))) : date.getDate(); - let month = + const month = values.length > 1 ? Math.max(1, Math.min(12, parseInt(values[1], 10))) - 1 : date.getMonth(); diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Input.Example.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Input.Example.tsx index eb6f25595e0dc..616074044dece 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Input.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Input.Example.tsx @@ -82,7 +82,7 @@ export class DatePickerInputExample extends React.Component<{}, IDatePickerInput } public render() { - let { firstDayOfWeek, value } = this.state; + const { firstDayOfWeek, value } = this.state; const desc = 'This field is required. One of the support input formats is year dash month dash day.'; return (
    diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Required.Example.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Required.Example.tsx index f3ce21c075815..211e0976099ba 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Required.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.Required.Example.tsx @@ -81,7 +81,7 @@ export class DatePickerRequiredExample extends React.Component<{}, IDatePickerRe } public render() { - let { firstDayOfWeek } = this.state; + const { firstDayOfWeek } = this.state; return (
    diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.WeekNumbers.Example.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.WeekNumbers.Example.tsx index 4ffda00841333..7708fb68cc06c 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.WeekNumbers.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/examples/DatePicker.WeekNumbers.Example.tsx @@ -75,7 +75,7 @@ export class DatePickerWeekNumbersExample extends React.Component<{}, IDatePicke } public render() { - let { firstDayOfWeek } = this.state; + const { firstDayOfWeek } = this.state; return (
    diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.scss b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.scss index 1b2baea32e403..6ee10c6f42cd2 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.scss +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.scss @@ -18,6 +18,7 @@ $isPaddedMargin: 24px; height: $rowHeight; line-height: $rowHeight; white-space: nowrap; + box-sizing: content-box; padding-bottom: 1px; border-bottom: 1px solid $bodyDividerColor; cursor: default; @@ -84,7 +85,6 @@ $isPaddedMargin: 24px; cursor: ew-resize; bottom: 0; top: 0; - margin: 0 -8px; overflow: hidden; height: inherit; background: transparent; @@ -114,6 +114,15 @@ $isPaddedMargin: 24px; } } +.cellSizerStart { + margin: 0 -8px; +} + +.cellSizerEnd { + margin: 0; + @include margin-left(-16px); +} + .collapseButton { text-align: center; transform: rotate(-180deg); diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.tsx index 766244900c53c..c873d087ae8bc 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsHeader.tsx @@ -7,7 +7,8 @@ import { getRTL, getId, KeyCodes, - IRenderFunction + IRenderFunction, + createRef } from '../../Utilities'; import { IColumn, DetailsListLayoutMode, ColumnActionsMode } from './DetailsList.types'; import { FocusZone, FocusZoneDirection } from '../../FocusZone'; @@ -82,10 +83,7 @@ export class DetailsHeader extends BaseComponent(); private _id: string; @@ -104,11 +102,14 @@ export class DetailsHeader extends BaseComponent) { - let { onColumnAutoResized, columns } = this.props; + const { onColumnAutoResized, columns } = this.props; if (onColumnAutoResized) { onColumnAutoResized(columns[columnIndex], columnIndex); } @@ -388,16 +389,16 @@ export class DetailsHeader extends BaseComponent) { - let { columnResizeDetails, isSizing } = this.state; + const { columnResizeDetails, isSizing } = this.state; if (columnResizeDetails && !isSizing && ev.clientX !== columnResizeDetails.originX) { this.setState({ isSizing: true }); @@ -497,13 +498,13 @@ export class DetailsHeader extends BaseComponent) { - let { + const { // use buttons property here since ev.button in some edge case is not upding well during the move. // but firefox doesn't support it, so we set the default value when it is not defined. buttons - } = ev; - let { onColumnIsSizingChanged, onColumnResized, columns } = this.props; - let { columnResizeDetails } = this.state; + } = ev; + const { onColumnIsSizingChanged, onColumnResized, columns } = this.props; + const { columnResizeDetails } = this.state; if (buttons !== undefined && buttons !== MOUSEMOVE_PRIMARY_BUTTON) { // cancel mouse down event and return early when the primary button is not pressed @@ -555,8 +556,8 @@ export class DetailsHeader extends BaseComponent) { - let { columns, onColumnIsSizingChanged } = this.props; - let { columnResizeDetails } = this.state; + const { columns, onColumnIsSizingChanged } = this.props; + const { columnResizeDetails } = this.state; this.setState({ columnResizeDetails: undefined, @@ -569,7 +570,7 @@ export class DetailsHeader extends BaseComponent) { - let { onColumnClick } = this.props; + const { onColumnClick } = this.props; if (column.onColumnClick) { column.onColumnClick(ev, column); @@ -591,7 +592,7 @@ export class DetailsHeader extends BaseComponent) { - let { onColumnContextMenu } = this.props; + const { onColumnContextMenu } = this.props; if (column.onColumnContextMenu) { column.onColumnContextMenu(column, ev); @@ -607,8 +608,8 @@ export class DetailsHeader extends BaseComponent { + it('renders List correctly', () => { + DetailsList.prototype.componentDidMount = jest.fn(); + + const component = renderer.create( + null } + skipViewportMeasures={ true } + // tslint:disable-next-line:jsx-no-lambda + onShouldVirtualize={ () => false } + /> + ); + const tree = component.toJSON(); + expect(tree).toMatchSnapshot(); + }); + + it('focuses row by index', () => { + jest.useFakeTimers(); + + let component: any; + mount( + component = ref } + skipViewportMeasures={ true } + // tslint:disable-next-line:jsx-no-lambda + onShouldVirtualize={ () => false } + />); + + expect(component).toBeDefined(); + (component as IDetailsList).focusIndex(2); + setTimeout(() => { + expect(document.activeElement.textContent).toEqual('2'); + expect(document.activeElement.className.split(' ')).toContain('ms-DetailsRow'); + }, 0); + jest.runOnlyPendingTimers(); + }); + + it('focuses into row element', () => { + const onRenderColumn = (item: any, index: number, column: IColumn) => { + let value = (item && column && column.fieldName) ? item[column.fieldName] : ''; + if (value === null || value === undefined) { + value = ''; + } + return ( +
    + { value } +
    + ); + }; + + jest.useFakeTimers(); + + let component: any; + mount( + component = ref } + skipViewportMeasures={ true } + // tslint:disable-next-line:jsx-no-lambda + onShouldVirtualize={ () => false } + onRenderItemColumn={ onRenderColumn } + />); + + expect(component).toBeDefined(); + (component as IDetailsList).focusIndex(3); + setTimeout(() => { + expect(document.activeElement.textContent).toEqual('3'); + expect(document.activeElement.className.split(' ')).toContain('ms-DetailsRow'); + }, 0); + jest.runOnlyPendingTimers(); + + // Set element visibility manually as a test workaround + (component as IDetailsList).focusIndex(4); + setTimeout(() => { + (document.activeElement.children[1] as any).isVisible = true; + (document.activeElement.children[1].children[0] as any).isVisible = true; + (document.activeElement.children[1].children[0].children[0] as any).isVisible = true; + }, 0); + + jest.runOnlyPendingTimers(); + (component as IDetailsList).focusIndex(4, true); + setTimeout(() => { + expect(document.activeElement.textContent).toEqual('4'); + expect(document.activeElement.className.split(' ')).toContain('test-column'); + }, 0); + jest.runOnlyPendingTimers(); + }); +}); \ No newline at end of file diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.tsx index c5751ebc41a24..73103e877da0c 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.tsx @@ -36,6 +36,7 @@ import { DragDropHelper } from '../../utilities/dragdrop/DragDropHelper'; import { GroupedList } from '../../GroupedList'; import { List, IListProps } from '../../List'; import { withViewport } from '../../utilities/decorators/withViewport'; +import { GetGroupCount } from '../../utilities/groupedList/GroupedListUtility'; const styles: any = stylesImport; @@ -130,6 +131,23 @@ export class DetailsList extends BaseComponent number): void { + + const item = this.props.items[index]; + if (item) { + this.scrollToIndex(index, measureItem); + + const itemKey = this._getItemKey(item, index); + const row = this._activeRows[itemKey]; + if (row) { + this._setFocusToRow(row, forceIntoFirstElement); + } + } + } + public componentWillUnmount() { if (this._dragDropHelper) { this._dragDropHelper.dispose(); @@ -176,7 +194,7 @@ export class DetailsList extends BaseComponent @@ -419,7 +439,7 @@ export class DetailsList extends BaseComponent { - row.focus(); + row.focus(forceIntoFirstElement); }, 0); } private _onRowWillUnmount(row: DetailsRow) { - let { onRowWillUnmount } = this.props; + const { onRowWillUnmount } = this.props; const { item, itemIndex } = row.props; const itemKey = this._getItemKey(item, itemIndex); @@ -574,8 +596,8 @@ export class DetailsList extends BaseComponent { - let newColumn = assign({}, column, this._columnOverrides[column.key]); + const newColumn = assign({}, column, this._columnOverrides[column.key]); if (!newColumn.calculatedWidth) { newColumn.calculatedWidth = newColumn.maxWidth || newColumn.minWidth || MIN_COLUMN_WIDTH; @@ -662,18 +685,18 @@ export class DetailsList extends BaseComponent { - let newColumn = assign( + const availableWidth = viewportWidth - (outerPadding + rowCheckWidth + groupExpandWidth); + const adjustedColumns: IColumn[] = newColumns.map((column, i) => { + const newColumn = assign( {}, column, { @@ -691,7 +714,7 @@ export class DetailsList extends BaseComponent 0 && totalWidth > availableWidth) { - let column = adjustedColumns[lastIndex]; + const column = adjustedColumns[lastIndex]; const minWidth = column.minWidth || MIN_COLUMN_WIDTH; const overflowWidth = totalWidth - availableWidth; @@ -708,20 +731,20 @@ export class DetailsList extends BaseComponent { max = Math.max(max, width); count++; @@ -792,12 +815,12 @@ export class DetailsList extends BaseComponent) { - let { items, onActiveItemChanged } = this.props; + const { items, onActiveItemChanged } = this.props; if (!el) { return; } - let index = Number(el.getAttribute('data-item-index')); + const index = Number(el.getAttribute('data-item-index')); if (index >= 0) { if (onActiveItemChanged) { onActiveItemChanged(items[index], index, ev); @@ -842,13 +865,12 @@ export function buildColumns( isSortedDescending?: boolean, groupedColumnKey?: string, isMultiline?: boolean) { - let columns: IColumn[] = []; + const columns: IColumn[] = []; if (items && items.length) { - let firstItem = items[0]; - let isFirstColumn = true; + const firstItem = items[0]; - for (let propName in firstItem) { + for (const propName in firstItem) { if (firstItem.hasOwnProperty(propName)) { columns.push({ key: propName, @@ -866,8 +888,6 @@ export function buildColumns( onColumnClick: onColumnClick, isGrouped: groupedColumnKey === propName }); - - isFirstColumn = false; } } } diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.types.ts b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.types.ts index b23be1ac51475..4d5bddf037f5e 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.types.ts +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsList.types.ts @@ -27,6 +27,16 @@ export interface IDetailsList extends IList { * call this to force a re-evaluation. Be aware that this can be an expensive operation and should be done sparingly. */ forceUpdate: () => void; + + /** + * Scroll to and focus the item at the given index. focusIndex will call scrollToIndex on the specified index. + * + * @param index Index of item to scroll to + * @param forceIntoFirstElement If true, focus will be set to the first focusable child element of the item rather + * than the item itself. + * @param measureItem Optional callback to measure the height of an individual item + */ + focusIndex: (index: number, forceIntoFirstElement?: boolean, measureItem?: (itemIndex: number) => number) => void; } export interface IDetailsListProps extends React.Props, IWithViewportProps { @@ -162,6 +172,9 @@ export interface IDetailsListProps extends React.Props, IWithViewpo /** Optional callback to get the aria-label string for a given item. */ getRowAriaLabel?: (item: any) => string; + /** Optional callback to get the aria-describedby IDs (space separated strings) of the elements that describe the item. */ + getRowAriaDescribedBy?: (item: any) => string; + /** Optional callback to get the item key, to be used in the selection and on render. */ getKey?: (item: any, index?: number) => string; @@ -316,7 +329,7 @@ export interface IColumn { /** * If provided, will be executed when the user clicks on the column header. */ - onColumnClick?: (ev?: React.MouseEvent, column?: IColumn) => any; + onColumnClick?: (ev: React.MouseEvent, column: IColumn) => any; /** * If provided, will be executed when the user accesses the contextmenu on a column header. diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsRow.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsRow.tsx index 6e53c0ddba93c..67c4b30c56a75 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/DetailsRow.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/DetailsRow.tsx @@ -8,12 +8,13 @@ import { css, shallowCompare, getNativeProps, - divProperties + divProperties, + createRef } from '../../Utilities'; import { IColumn, CheckboxVisibility } from './DetailsList.types'; import { DetailsRowCheck, IDetailsRowCheckProps } from './DetailsRowCheck'; import { GroupSpacer } from '../GroupedList/GroupSpacer'; -import { DetailsRowFields } from './DetailsRowFields'; +import { DetailsRowFields, IDetailsRowFieldsProps } from './DetailsRowFields'; import { FocusZone, FocusZoneDirection, IFocusZone } from '../../FocusZone'; import { ISelection, SelectionMode, SELECTION_CHANGE } from '../../utilities/selection/interfaces'; import { CollapseAllVisibility } from '../../GroupedList'; @@ -49,8 +50,10 @@ export interface IDetailsRowProps extends React.Props { checkboxVisibility?: CheckboxVisibility; collapseAllVisibility?: CollapseAllVisibility; getRowAriaLabel?: (item: any) => string; + getRowAriaDescribedBy?: (item: any) => string; checkButtonAriaLabel?: string; checkboxCellClassName?: string; + rowFieldsAs?: React.StatelessComponent | React.ComponentClass; className?: string; } @@ -73,14 +76,9 @@ export interface IDetailsRowState { const DEFAULT_DROPPING_CSS_CLASS = 'is-dropping'; export class DetailsRow extends BaseComponent { - public refs: { - [key: string]: React.ReactInstance, - cellMeasurer: HTMLElement - }; - private _root: HTMLElement | undefined; - private _focusZone: IFocusZone; - private _hasSetFocus: boolean; + private _cellMeasurer: HTMLElement; + private _focusZone = createRef(); private _droppingClassNames: string; private _hasMounted: boolean; private _dragDropSubscription: IDisposable; @@ -95,8 +93,6 @@ export class DetailsRow extends BaseComponent= 0) { - let newWidth = this.refs.cellMeasurer.getBoundingClientRect().width; + const newWidth = this._cellMeasurer.getBoundingClientRect().width; columnMeasureInfo.onMeasureDone(newWidth); @@ -154,7 +150,7 @@ export class DetailsRow extends BaseComponent { showCheckbox && ( @@ -251,7 +253,7 @@ export class DetailsRow extends BaseComponent ) } - { columnMeasureInfo && ( - void} onMeasureDone (the call back function when finish measure) */ public measureCell(index: number, onMeasureDone: (width: number) => void) { - let column = assign({}, this.props.columns[index]) as IColumn; + const column = assign({}, this.props.columns[index]) as IColumn; column.minWidth = 0; column.maxWidth = 999999; @@ -309,8 +310,8 @@ export class DetailsRow extends BaseComponent { ...buttonProps } = props; - let isPressed = props.isSelected || props.selected; + const isPressed = props.isSelected || props.selected; return (
    { let cellContent; try { - let render = column.onRender || onRenderItemColumn; + const render = column.onRender || onRenderItemColumn; cellContent = render ? render(item, itemIndex, column) : this._getCellText(item, column); } catch (e) { /* no-op */ } @@ -91,5 +91,4 @@ export class DetailsRowFields extends BaseComponent +
    +
    +
    +
    +
    + + + +
    +
    + + + + key + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +`; diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Advanced.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Advanced.Example.tsx index b350a86bfbac6..276b11a3d3611 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Advanced.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Advanced.Example.tsx @@ -49,11 +49,6 @@ export interface IDetailsListAdvancedExampleState { } export class DetailsListAdvancedExample extends React.Component<{}, IDetailsListAdvancedExampleState> { - public refs: { - [key: string]: React.ReactInstance; - list: DetailsList - }; - private _isFetchingItems: boolean; private _selection: Selection; @@ -86,7 +81,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList } public render() { - let { + const { checkboxVisibility, columns, constrainMode, @@ -99,8 +94,8 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList selectionMode } = this.state; - let isGrouped = groups && groups.length > 0; - let groupProps = { + const isGrouped = groups && groups.length > 0; + const groupProps = { getGroupItemLimit: (group: IGroup) => { if (group) { return group.isShowingAll ? group.count : Math.min(group.count, groupItemLimit as number); @@ -124,7 +119,6 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList } { this._isFetchingItems = false; - let itemsCopy = ([] as any[]).concat(this.state.items); + const itemsCopy = ([] as any[]).concat(this.state.items); itemsCopy.splice.apply(itemsCopy, [index, PAGING_SIZE].concat(_items.slice(index, index + PAGING_SIZE))); @@ -190,7 +184,8 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList @autobind private _onToggleResizing() { - let { items, canResizeColumns, sortedColumnKey, isSortedDescending } = this.state; + const { items, sortedColumnKey, isSortedDescending } = this.state; + let { canResizeColumns } = this.state; canResizeColumns = !canResizeColumns; @@ -233,7 +228,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList } private _getCommandItems(): IContextualMenuItem[] { - let { + const { canResizeColumns, checkboxVisibility, constrainMode, @@ -404,7 +399,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList } private _getContextualMenuProps(ev: React.MouseEvent, column: IColumn): IContextualMenuProps { - let items = [ + const items = [ { key: 'aToZ', name: 'A to Z', @@ -482,7 +477,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList @autobind private _onSortColumn(key: string, isSortedDescending: boolean) { - let sortedItems = _items.slice(0).sort((a: any, b: any) => (isSortedDescending ? a[key] < b[key] : a[key] > b[key]) ? 1 : -1); + const sortedItems = _items.slice(0).sort((a: any, b: any) => (isSortedDescending ? a[key] < b[key] : a[key] > b[key]) ? 1 : -1); this.setState({ items: sortedItems, @@ -502,8 +497,8 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList @autobind private _onGroupByColumn(column: IColumn) { - let { key, isGrouped } = column; - let { sortedColumnKey, isSortedDescending, groups, items, columns } = this.state; + const { key, isGrouped } = column; + const { sortedColumnKey, isSortedDescending, groups, items, columns } = this.state; if (isGrouped) { // ungroup this._onSortColumn(sortedColumnKey as string, !!isSortedDescending); @@ -518,7 +513,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList newGroups = this._getGroups(groupedItems, key); } - let newColumns = columns as IColumn[]; + const newColumns = columns as IColumn[]; newColumns.filter(matchColumn => matchColumn.key === key).forEach((groupedColumn: IColumn) => { groupedColumn.isGrouped = true; }); @@ -535,11 +530,11 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList if (groups) { groups.forEach((group: IGroup) => { if (group.children && group.children.length > 0) { - let childGroupedItems = this._groupByKey(group.children, items, key); + const childGroupedItems = this._groupByKey(group.children, items, key); groupedItems = groupedItems.concat(childGroupedItems); } else { - let itemsInGroup = items.slice(group.startIndex, group.startIndex + group.count); - let nextLevelGroupedItems = this._groupItems(itemsInGroup, key); + const itemsInGroup = items.slice(group.startIndex, group.startIndex + group.count); + const nextLevelGroupedItems = this._groupItems(itemsInGroup, key); groupedItems = groupedItems.concat(nextLevelGroupedItems); group.children = this._getGroups(nextLevelGroupedItems, key, group); } @@ -553,9 +548,9 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList } private _getGroups(groupedItems: any[], key: string, parentGroup?: IGroup): IGroup[] { - let separator = '-'; - let groups = groupedItems.reduce((current, item, index) => { - let currentGroup = current[current.length - 1]; + const separator = '-'; + const groups = groupedItems.reduce((current, item, index) => { + const currentGroup = current[current.length - 1]; if (!currentGroup || (this._getLeafGroupKey(currentGroup.key, separator) !== item[key])) { current.push({ @@ -577,7 +572,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList private _getLeafGroupKey(key: string, separator: string): string { let leafKey = key; if (key.indexOf(separator) !== -1) { - let arrKeys = key.split(separator); + const arrKeys = key.split(separator); leafKey = arrKeys[arrKeys.length - 1]; } return leafKey; @@ -605,7 +600,7 @@ export class DetailsListAdvancedExample extends React.Component<{}, IDetailsList isSortedDescending?: boolean, groupedColumnKey?: string, onColumnContextMenu?: (column: IColumn, ev: React.MouseEvent) => any) { - let columns = buildColumns(items, canResizeColumns, onColumnClick, sortedColumnKey, isSortedDescending, groupedColumnKey); + const columns = buildColumns(items, canResizeColumns, onColumnClick, sortedColumnKey, isSortedDescending, groupedColumnKey); columns.forEach(column => { column.onColumnContextMenu = onColumnContextMenu; diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Basic.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Basic.Example.tsx index f121a24db1908..593a874f99882 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Basic.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Basic.Example.tsx @@ -11,9 +11,9 @@ import { import { MarqueeSelection } from 'office-ui-fabric-react/lib/MarqueeSelection'; import { autobind } from 'office-ui-fabric-react/lib/Utilities'; -let _items: any[] = []; +const _items: any[] = []; -let _columns: IColumn[] = [ +const _columns: IColumn[] = [ { key: 'column1', name: 'Name', @@ -65,7 +65,7 @@ export class DetailsListBasicExample extends React.Component<{}, { } public render() { - let { items, selectionDetails } = this.state; + const { items, selectionDetails } = this.state; return (
    @@ -92,7 +92,7 @@ export class DetailsListBasicExample extends React.Component<{}, { } private _getSelectionDetails(): string { - let selectionCount = this._selection.getSelectedCount(); + const selectionCount = this._selection.getSelectedCount(); switch (selectionCount) { case 0: diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Compact.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Compact.Example.tsx index 26c9b2f1fe04e..b47e35d658b9a 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Compact.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Compact.Example.tsx @@ -10,13 +10,13 @@ import { import { MarqueeSelection } from 'office-ui-fabric-react/lib/MarqueeSelection'; import { autobind } from 'office-ui-fabric-react/lib/Utilities'; -let _items: { +const _items: { key: number, name: string, value: number }[] = []; -let _columns = [ +const _columns = [ { key: 'column1', name: 'Name', @@ -66,7 +66,7 @@ export class DetailsListCompactExample extends React.Component<{}, { } public render() { - let { items, selectionDetails } = this.state; + const { items, selectionDetails } = this.state; return (
    @@ -92,7 +92,7 @@ export class DetailsListCompactExample extends React.Component<{}, { } private _getSelectionDetails(): string { - let selectionCount = this._selection.getSelectedCount(); + const selectionCount = this._selection.getSelectedCount(); switch (selectionCount) { case 0: diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.CustomColumns.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.CustomColumns.Example.tsx index a798064e9bdc6..0589376a17908 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.CustomColumns.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.CustomColumns.Example.tsx @@ -32,7 +32,7 @@ export class DetailsListCustomColumnsExample extends React.Component<{}, IDetail } public render() { - let { sortedItems, columns } = this.state; + const { sortedItems, columns } = this.state; return ( , column: IColumn) { - let { sortedItems, columns } = this.state; + const { columns } = this.state; + let { sortedItems } = this.state; let isSortedDescending = column.isSortedDescending; // If we've sorted this column, flip it. @@ -59,8 +60,8 @@ export class DetailsListCustomColumnsExample extends React.Component<{}, IDetail // Sort the items. sortedItems = sortedItems!.concat([]).sort((a, b) => { - let firstValue = a[column.fieldName]; - let secondValue = b[column.fieldName]; + const firstValue = a[column.fieldName]; + const secondValue = b[column.fieldName]; if (isSortedDescending) { return firstValue > secondValue ? -1 : 1; @@ -94,9 +95,9 @@ export class DetailsListCustomColumnsExample extends React.Component<{}, IDetail } function _buildColumns() { - let columns = buildColumns(_items); + const columns = buildColumns(_items); - let thumbnailColumn = columns.filter(column => column.name === 'thumbnail')[0]; + const thumbnailColumn = columns.filter(column => column.name === 'thumbnail')[0]; // Special case one column's definition. thumbnailColumn.name = ''; @@ -106,7 +107,7 @@ function _buildColumns() { } function _renderItemColumn(item: any, index: number, column: IColumn) { - let fieldContent = item[column.fieldName]; + const fieldContent = item[column.fieldName]; switch (column.key) { case 'thumbnail': @@ -116,7 +117,7 @@ function _renderItemColumn(item: any, index: number, column: IColumn) { return { fieldContent }; case 'color': - return { fieldContent }; + return { fieldContent }; default: return { fieldContent }; diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Documents.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Documents.Example.tsx index 051671e1bce06..3be99fc94d1d3 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Documents.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Documents.Example.tsx @@ -204,7 +204,7 @@ export class DetailsListDocumentsExample extends React.Component @@ -297,7 +297,7 @@ export class DetailsListDocumentsExample extends React.Component, column: IColumn) { const { columns, items } = this.state; let newItems: IDocument[] = items.slice(); - let newColumns: IColumn[] = columns.slice(); - let currColumn: IColumn = newColumns.filter((currCol: IColumn, idx: number) => { + const newColumns: IColumn[] = columns.slice(); + const currColumn: IColumn = newColumns.filter((currCol: IColumn, idx: number) => { return column.key === currCol.key; })[0]; newColumns.forEach((newCol: IColumn) => { diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.DragDrop.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.DragDrop.Example.tsx index 71ae50aadd449..7b60397e17cc5 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.DragDrop.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.DragDrop.Example.tsx @@ -13,7 +13,7 @@ import { createListItems } from '@uifabric/example-app-base'; import './DetailsList.DragDrop.Example.scss'; let _draggedItem: any = null; -let _draggedIndex: number = -1; +let _draggedIndex = -1; export class DetailsListDragDropExample extends React.Component<{}, { items: {}[]; @@ -34,7 +34,7 @@ export class DetailsListDragDropExample extends React.Component<{}, { } public render() { - let { items, selectionDetails } = this.state; + const { items, selectionDetails } = this.state; return (
    @@ -89,9 +89,9 @@ export class DetailsListDragDropExample extends React.Component<{}, { } private _insertBeforeItem(item: any) { - let draggedItems = this._selection.isIndexSelected(_draggedIndex) ? this._selection.getSelection() : [_draggedItem]; + const draggedItems = this._selection.isIndexSelected(_draggedIndex) ? this._selection.getSelection() : [_draggedItem]; - let items: any[] = this.state.items.filter((i: number) => draggedItems.indexOf(i) === -1); + const items: any[] = this.state.items.filter((i: number) => draggedItems.indexOf(i) === -1); let insertIndex = items.indexOf(item); // if dragging/dropping on itself, index will be 0. diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.scss b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.scss new file mode 100644 index 0000000000000..45b51547ae802 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.scss @@ -0,0 +1,18 @@ +@import '../../../common/common'; + +:global { + .DetailsList-grouped-example { + .ms-DetailsList { + max-height: 500px; + overflow-y: scroll; + + .ms-DetailsRow-cell { + padding: 0px; + } + + .grouped-example-column { + padding: 11px 8px; + } + } + } +} diff --git a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.tsx b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.tsx index c68af796cf07e..7ecbe0e9dd3d8 100644 --- a/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.tsx +++ b/packages/office-ui-fabric-react/src/components/DetailsList/examples/DetailsList.Grouped.Example.tsx @@ -1,11 +1,16 @@ /* tslint:disable:no-unused-variable */ import * as React from 'react'; /* tslint:enable:no-unused-variable */ +import { + BaseComponent, + autobind +} from 'office-ui-fabric-react/lib/Utilities'; import { DefaultButton } from 'office-ui-fabric-react/lib/Button'; import { Fabric } from 'office-ui-fabric-react/lib/Fabric'; -import { DetailsList } from 'office-ui-fabric-react/lib/DetailsList'; +import { DetailsList, IColumn } from 'office-ui-fabric-react/lib/DetailsList'; +import './DetailsList.Grouped.Example.scss'; -let _columns = [ +const _columns = [ { key: 'name', name: 'Name', @@ -22,7 +27,7 @@ let _columns = [ maxWidth: 200 } ]; -let _items = [ +const _items = [ { key: 'a', name: 'a', @@ -50,9 +55,11 @@ let _items = [ } ]; -export class DetailsListGroupedExample extends React.Component<{}, { +export class DetailsListGroupedExample extends BaseComponent<{}, { items: {}[]; }> { + private _root: DetailsList; + constructor(props: {}) { super(props); @@ -62,15 +69,16 @@ export class DetailsListGroupedExample extends React.Component<{}, { } public render() { - let { items } = this.state; + const { items } = this.state; return ( - + ); } + @autobind private _addItem() { - let items = this.state.items; + const items = this.state.items; this.setState({ items: items.concat([{ @@ -112,7 +122,25 @@ export class DetailsListGroupedExample extends React.Component<{}, { name: 'New item ' + items.length, color: 'blue' }]) + }, () => { + this._root.focusIndex(items.length, true); }); } + private _onRenderColumn(item: any, index: number, column: IColumn) { + let value = (item && column && column.fieldName) ? item[column.fieldName] : ''; + + if (value === null || value === undefined) { + value = ''; + } + + return ( +
    + { value } +
    + ); + } } diff --git a/packages/office-ui-fabric-react/src/components/Dialog/Dialog.base.tsx b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.base.tsx new file mode 100644 index 0000000000000..54e5220ea7ddb --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.base.tsx @@ -0,0 +1,171 @@ +import * as React from 'react'; +import { + BaseComponent, + classNamesFunction, + customizable, + getId +} from '../../Utilities'; +import { + IDialogProps, + IDialogStyleProps, + IDialogStyles, +} from './Dialog.types'; +import { DialogType, IDialogContentProps } from './DialogContent.types'; +import { Modal, IModalProps } from '../../Modal'; +import { withResponsiveMode } from '../../utilities/decorators/withResponsiveMode'; + +const getClassNames = classNamesFunction(); + +import { DialogContent } from './DialogContent'; + +const DefaultModalProps: IModalProps = { + isDarkOverlay: false, + isBlocking: false, + className: '', + containerClassName: '' +}; + +const DefaultDialogContentProps: IDialogContentProps = { + type: DialogType.normal, + className: '', + topButtonsProps: [], +}; + +@customizable('Dialog', ['theme']) +@withResponsiveMode +export class DialogBase extends BaseComponent { + public static defaultProps: IDialogProps = { + hidden: true, + }; + + private _id: string; + private _defaultTitleTextId: string; + private _defaultSubTextId: string; + + constructor(props: IDialogProps) { + super(props); + + this._id = getId('Dialog'); + this._defaultTitleTextId = this._id + '-title'; + this._defaultSubTextId = this._id + '-subText'; + + this._warnDeprecations({ + 'isOpen': 'hidden', + 'type': 'dialogContentProps.type', + 'subText': 'dialogContentProps.subText', + 'contentClassName': 'dialogContentProps.className', + 'topButtonsProps': 'dialogContentProps.topButtonsProps', + 'className': 'modalProps.className', + 'isDarkOverlay': 'modalProps.isDarkOverlay', + 'isBlocking': 'modalProps.isBlocking', + 'containerClassName': 'modalProps.containerClassName', + 'onDismissed': 'modalProps.onDismissed', + 'onLayerDidMount': 'modalProps.onLayerDidMount', + 'ariaDescribedById': 'modalProps.subtitleAriaId', + 'ariaLabelledById': 'modalProps.titleAriaId' + }); + } + + public render() { + const { + className, + containerClassName, + contentClassName, + elementToFocusOnDismiss, + firstFocusableSelector, + forceFocusInsideTrap, + getStyles, + hidden, + ignoreExternalFocusing, + isBlocking, + isClickableOutsideFocusTrap, + isDarkOverlay, + isOpen, + onDismiss, + onDismissed, + onLayerDidMount, + responsiveMode, + subText, + theme, + title, + topButtonsProps, + type, + } = this.props; + + const modalProps = { + ...DefaultModalProps, + ...this.props.modalProps + }; + + const dialogContentProps: IDialogContentProps = { + ...DefaultDialogContentProps, + ...this.props.dialogContentProps, + }; + + const classNames = getClassNames(getStyles!, { + theme: theme!, + className: className || modalProps!.className, + containerClassName: containerClassName || modalProps!.containerClassName, + hidden, + }); + + return ( + + + { this.props.children } + + + ); + } + + private _getSubTextId = (): string | undefined => { + const { ariaDescribedById, modalProps, dialogContentProps, subText } = this.props; + let id = ariaDescribedById || (modalProps && modalProps.subtitleAriaId); + + if (!id) { + id = (subText || (dialogContentProps && dialogContentProps.subText)) && this._defaultSubTextId; + } + + return id; + } + + private _getTitleTextId = (): string | undefined => { + const { ariaLabelledById, modalProps, dialogContentProps, title } = this.props; + let id = ariaLabelledById || (modalProps && modalProps.titleAriaId); + + if (!id) { + id = (title || (dialogContentProps && dialogContentProps.title)) && this._defaultTitleTextId; + } + + return id; + } +} diff --git a/packages/office-ui-fabric-react/src/components/Dialog/Dialog.scss b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.scss deleted file mode 100644 index aaebc582a2d50..0000000000000 --- a/packages/office-ui-fabric-react/src/components/Dialog/Dialog.scss +++ /dev/null @@ -1,150 +0,0 @@ -@import '../../common/common'; - -// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE in the project root for license information. - -// -// Office UI Fabric -// -------------------------------------------------- -// Dialog styles - -$Dialog-lgHeader-backgroundColor: $ms-color-themePrimary; -$Dialog-default-min-width: 288px; -$Dialog-default-max-width: 340px; - -// State: The dialog is open -.isOpen { - display: flex; -} - -// The actual dialog element -.main { - width: $Dialog-default-min-width; -} - -// Close button, hidden by default -.button.isClose { - :global(.ms-Icon.ms-Icon--Cancel) { - color: $ms-color-neutralSecondary; - font-size: 16px; - } -} - -.inner { - padding: 0 28px 20px; -} - -.header { - position: relative; - width: 100%; - box-sizing: border-box; -} - -.title { - margin: 0; - @include ms-font-xl; - color: $ms-color-neutralPrimary; - @include ms-padding(20px, 36px, 20px, 28px); -} - -.topButton { - display: flex; - flex-direction: row; - flex-wrap: nowrap; - position: absolute; - top: 0; - @include ms-right(0); - @include ms-padding(12px, 12px, 0, 0); - > * { - flex: 0 0 auto; - } -} - -.content { - position: relative; - width: 100%; - - // Add margin bottom between compound buttons - :global(.ms-Button.ms-Button--compound) { - margin-bottom: 20px; - - &:last-child { - margin-bottom: 0; - } - } -} - -.subText { - margin: 0 0 20px 0; - padding-top: 8px; - @include ms-font-s; - color: $ms-color-neutralPrimary; - font-weight: $ms-font-weight-semilight; - line-height: 1.5; - word-wrap: break-word; -} - -.actions { - position: relative; - width: 100%; - min-height: 24px; - line-height: 24px; - margin: 20px 0 0; - font-size: 0; - - :global(.ms-Button) { - line-height: normal; - } -} - -// Negative margin to needed to compensate for symmetric -// padding between action elements. -.actionsRight { - @include ms-text-align(right); - @include ms-margin-right(-4px); - font-size: 0; - - // Reset spacing for first button - .action { - margin: 0px 4px; - } -} - -//= Modifier: Multiline button dialog -// -.isMultiline { - .title { - font-size: $ms-font-size-xxl; - } - - .inner { - padding: 0 20px 20px; - } -} - -//= Modifier: Large header dialog -// -.isLargeHeader { - .header { - background-color: $Dialog-lgHeader-backgroundColor; - } - - .title { - @include ms-font-xxl; - color: $ms-color-white; - padding: 26px 28px 28px; - margin-bottom: 8px; - } - - .subText { - font-size: $ms-font-size-m; - } -} - -@media (min-width: $ms-screen-min-md) { - // Allow wider dialog on larger screens - .main { - width: auto; - min-width: $Dialog-default-min-width; - max-width: $Dialog-default-max-width; - } -} diff --git a/packages/office-ui-fabric-react/src/components/Dialog/Dialog.styles.ts b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.styles.ts new file mode 100644 index 0000000000000..990aa517aace8 --- /dev/null +++ b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.styles.ts @@ -0,0 +1,39 @@ +import { IDialogStyleProps, IDialogStyles } from './Dialog.types'; +import { + ScreenWidthMinMedium, +} from '../../Styling'; + +export const getStyles = ( + props: IDialogStyleProps +): IDialogStyles => { + const { + className, + containerClassName, + dialogDefaultMinWidth = '288px', + dialogDefaultMaxWidth = '340px', + hidden, + } = props; + + return ({ + root: [ + 'ms-Dialog', + className, + ], + + main: [ + { + width: dialogDefaultMinWidth, + + selectors: { + [`@media (min-width: ${ScreenWidthMinMedium}px)`]: { + width: 'auto', + maxWidth: dialogDefaultMaxWidth, + minWidth: dialogDefaultMinWidth, + } + } + }, + !hidden && { display: 'flex' }, + containerClassName, + ] + }); +}; diff --git a/packages/office-ui-fabric-react/src/components/Dialog/Dialog.test.tsx b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.test.tsx index 03ba9f6bdd4c0..21b58689ced00 100644 --- a/packages/office-ui-fabric-react/src/components/Dialog/Dialog.test.tsx +++ b/packages/office-ui-fabric-react/src/components/Dialog/Dialog.test.tsx @@ -5,7 +5,7 @@ import * as renderer from 'react-test-renderer'; import { mount } from 'enzyme'; -import { Dialog } from './Dialog'; +import { DialogBase } from './Dialog.base'; import { DialogContent } from './DialogContent'; import { DialogType } from './DialogContent.types'; @@ -14,7 +14,7 @@ import { DialogType } from './DialogContent.types'; describe('Dialog', () => { it('renders Dialog correctly', () => { const component = renderer.create(); - let tree = component.toJSON(); + const tree = component.toJSON(); expect(tree).toMatchSnapshot(); }); @@ -26,7 +26,7 @@ describe('Dialog', () => { }; const wrapper = mount( -