From 29ce1e281306484ad09e80c70b2e22114c64770e Mon Sep 17 00:00:00 2001 From: jbadan Date: Mon, 23 Sep 2019 14:18:18 -0700 Subject: [PATCH 01/63] wip --- .storybook/addons.js | 4 + .storybook/config.js | 11 + .storybook/webpack.config.js | 10 + config/webpack.config.dev.js | 1 + package-lock.json | 3496 ++++++++++++++++- package.json | 12 +- src/ActionBar/ActionBar.js | 10 +- .../__stories__/ActionBar.stories.js | 40 + src/Alert/Alert.js | 11 +- src/Alert/__stories__/Alert.stories.js | 35 + src/Badge/Badge.js | 6 +- src/Badge/Counter.js | 8 +- src/Badge/Label.js | 8 +- src/Badge/Status.js | 15 +- src/Badge/__stories__/Badge.stories.js | 21 + src/Badge/__stories__/Counter.stories.js | 21 + src/Badge/__stories__/Label.stories.js | 21 + src/Badge/__stories__/Status.stories.js | 21 + src/Breadcrumb/Breadcrumb.js | 10 +- .../__stories__/Breadcrumb.stories.js | 31 + src/Button/Button.js | 15 +- src/Button/ButtonGroup.js | 10 +- src/Button/__stories__/Button.stories.js | 35 + src/Button/__stories__/ButtonGroup.stories.js | 32 + src/Calendar/Calendar.js | 18 +- src/Calendar/__stories__/Calendar.stories.js | 19 + .../documentation/Properties/defaults.js | 5 +- src/utils/StyleProvider.js | 42 + src/utils/customStylesTest.css | 6 + src/utils/styleLookup.js | 55 + 30 files changed, 3865 insertions(+), 164 deletions(-) create mode 100644 .storybook/addons.js create mode 100644 .storybook/config.js create mode 100644 .storybook/webpack.config.js create mode 100644 src/ActionBar/__stories__/ActionBar.stories.js create mode 100644 src/Alert/__stories__/Alert.stories.js create mode 100644 src/Badge/__stories__/Badge.stories.js create mode 100644 src/Badge/__stories__/Counter.stories.js create mode 100644 src/Badge/__stories__/Label.stories.js create mode 100644 src/Badge/__stories__/Status.stories.js create mode 100644 src/Breadcrumb/__stories__/Breadcrumb.stories.js create mode 100644 src/Button/__stories__/Button.stories.js create mode 100644 src/Button/__stories__/ButtonGroup.stories.js create mode 100644 src/Calendar/__stories__/Calendar.stories.js create mode 100644 src/utils/StyleProvider.js create mode 100644 src/utils/customStylesTest.css create mode 100644 src/utils/styleLookup.js diff --git a/.storybook/addons.js b/.storybook/addons.js new file mode 100644 index 000000000..82eb9f43e --- /dev/null +++ b/.storybook/addons.js @@ -0,0 +1,4 @@ +import '@storybook/addon-knobs/register'; +import '@storybook/addon-a11y/register'; +import '@storybook/addon-storysource/register'; +import '@storybook/addon-notes/register-panel'; diff --git a/.storybook/config.js b/.storybook/config.js new file mode 100644 index 000000000..035d56567 --- /dev/null +++ b/.storybook/config.js @@ -0,0 +1,11 @@ +import { addDecorator, configure } from '@storybook/react'; +import { withA11y } from '@storybook/addon-a11y'; + +addDecorator(withA11y); + +function loadStories() { + const req = require.context('../src', true, /\.stories\.js$/); + req.keys().forEach(filename => req(filename)); +} + +configure(loadStories, module); diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js new file mode 100644 index 000000000..c7cabe7fc --- /dev/null +++ b/.storybook/webpack.config.js @@ -0,0 +1,10 @@ +const path = require('path'); + +module.exports = function({ config }) { + config.module.rules.push({ + test: /\.stories\.js?$/, + loaders: [require.resolve('@storybook/source-loader')], + enforce: 'pre', + }); + return config; +}; diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js index b6c811516..c5c0390cb 100644 --- a/config/webpack.config.dev.js +++ b/config/webpack.config.dev.js @@ -95,6 +95,7 @@ module.exports = { runtimeChunk: true }, resolve: { + modules: ['node_modules'], extensions: ['.js', '.jsx', '.json', '.es6', '.css'], symlinks: false }, diff --git a/package-lock.json b/package-lock.json index edebbb6b9..389714df5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -756,6 +756,16 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.0.tgz", + "integrity": "sha512-np/nPuII8DHOZWB3u8u+NSeKlEz0eBrOlnVksIQog4C9NGVzXO+NLxMcXn4Eu4GMFzOw2W6Tyo6L3+Wv8z9Y5w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-transform-react-display-name": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", @@ -971,6 +981,16 @@ "semver": "^5.5.0" } }, + "@babel/preset-flow": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.0.0.tgz", + "integrity": "sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0" + } + }, "@babel/preset-react": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", @@ -1101,6 +1121,129 @@ "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, + "@emotion/cache": { + "version": "10.0.19", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.19.tgz", + "integrity": "sha512-BoiLlk4vEsGBg2dAqGSJu0vJl/PgVtCYLBFJaEO8RmQzPugXewQCXZJNXTDFaRlfCs0W+quesayav4fvaif5WQ==", + "dev": true, + "requires": { + "@emotion/sheet": "0.9.3", + "@emotion/stylis": "0.8.4", + "@emotion/utils": "0.11.2", + "@emotion/weak-memoize": "0.2.4" + } + }, + "@emotion/core": { + "version": "10.0.17", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.17.tgz", + "integrity": "sha512-gykyjjr0sxzVuZBVTVK4dUmYsorc2qLhdYgSiOVK+m7WXgcYTKZevGWZ7TLAgTZvMelCTvhNq8xnf8FR1IdTbg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.17", + "@emotion/css": "^10.0.14", + "@emotion/serialize": "^0.11.10", + "@emotion/sheet": "0.9.3", + "@emotion/utils": "0.11.2" + } + }, + "@emotion/css": { + "version": "10.0.14", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.14.tgz", + "integrity": "sha512-MozgPkBEWvorcdpqHZE5x1D/PLEHUitALQCQYt2wayf4UNhpgQs2tN0UwHYS4FMy5ROBH+0ALyCFVYJ/ywmwlg==", + "dev": true, + "requires": { + "@emotion/serialize": "^0.11.8", + "@emotion/utils": "0.11.2", + "babel-plugin-emotion": "^10.0.14" + } + }, + "@emotion/hash": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.3.tgz", + "integrity": "sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw==", + "dev": true + }, + "@emotion/is-prop-valid": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.3.tgz", + "integrity": "sha512-We7VBiltAJ70KQA0dWkdPMXnYoizlxOXpvtjmu5/MBnExd+u0PGgV27WCYanmLAbCwAU30Le/xA0CQs/F/Otig==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.3" + } + }, + "@emotion/memoize": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.3.tgz", + "integrity": "sha512-2Md9mH6mvo+ygq1trTeVp2uzAKwE2P7In0cRpD/M9Q70aH8L+rxMLbb3JCN2JoSWsV2O+DdFjfbbXoMoLBczow==", + "dev": true + }, + "@emotion/serialize": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.11.tgz", + "integrity": "sha512-YG8wdCqoWtuoMxhHZCTA+egL0RSGdHEc+YCsmiSBPBEDNuVeMWtjEWtGrhUterSChxzwnWBXvzSxIFQI/3sHLw==", + "dev": true, + "requires": { + "@emotion/hash": "0.7.3", + "@emotion/memoize": "0.7.3", + "@emotion/unitless": "0.7.4", + "@emotion/utils": "0.11.2", + "csstype": "^2.5.7" + } + }, + "@emotion/sheet": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.3.tgz", + "integrity": "sha512-c3Q6V7Df7jfwSq5AzQWbXHa5soeE4F5cbqi40xn0CzXxWW9/6Mxq48WJEtqfWzbZtW9odZdnRAkwCQwN12ob4A==", + "dev": true + }, + "@emotion/styled": { + "version": "10.0.17", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.17.tgz", + "integrity": "sha512-zHMgWjHDMNjD+ux64POtDnjLAObniu3znxFBLSdV/RiEhSLjHIowfvSbbd/C33/3uwtI6Uzs2KXnRZtka/PpAQ==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.0.17", + "babel-plugin-emotion": "^10.0.17" + } + }, + "@emotion/styled-base": { + "version": "10.0.19", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.19.tgz", + "integrity": "sha512-Sz6GBHTbOZoeZQKvkE9gQPzaJ6/qtoQ/OPvyG2Z/6NILlYk60Es1cEcTgTkm26H8y7A0GSgp4UmXl+srvsnFPg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.3", + "@emotion/serialize": "^0.11.11", + "@emotion/utils": "0.11.2" + } + }, + "@emotion/stylis": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.4.tgz", + "integrity": "sha512-TLmkCVm8f8gH0oLv+HWKiu7e8xmBIaokhxcEKPh1m8pXiV/akCiq50FvYgOwY42rjejck8nsdQxZlXZ7pmyBUQ==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.4.tgz", + "integrity": "sha512-kBa+cDHOR9jpRJ+kcGMsysrls0leukrm68DmFQoMIWQcXdr2cZvyvypWuGYT7U+9kAExUE7+T7r6G3C3A6L8MQ==", + "dev": true + }, + "@emotion/utils": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.2.tgz", + "integrity": "sha512-UHX2XklLl3sIaP6oiMmlVzT0J+2ATTVpf0dHQVyPJHTkOITvXfaSqnRk6mdDhV9pR8T/tHc3cex78IKXssmzrA==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.4.tgz", + "integrity": "sha512-6PYY5DVdAY1ifaQW6XYTnOMihmBVT27elqSjEoodchsGjzYlEsTQMcEhSud99kVawatyTZRTiVkJ/c6lwbQ7nA==", + "dev": true + }, "@hapi/address": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.1.tgz", @@ -1140,6 +1283,12 @@ "@hapi/hoek": "8.x.x" } }, + "@icons/material": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", + "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", + "dev": true + }, "@jest/console": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", @@ -1270,133 +1419,1736 @@ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.2.tgz", + "integrity": "sha512-wrIBsjA5pl13f0RN4Zx4FNWmU71lv03meGKnqRUoCyan17s4V3WL92f3w3AIuWbNnpcrQyFBU5qMavJoB8d27w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.2", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.2.tgz", + "integrity": "sha512-z8+wGWV2dgUhLqrtRYa03yDx4HWMvXKi1z8g3m2JyxAx8F7xk74asqPk5LAETjqDSGLFML/6CDl0+yFunSYicw==", + "dev": true + } + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.3.tgz", + "integrity": "sha512-l6t8xEhfK9Sa4YO5mIRdau7XSOADfmh3jCr0evNHdY+HNkW6xuQhgMH7D73VV6WpZOagrW0UludvMTiifiwTfA==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.2", + "fastq": "^1.6.0" + } + }, + "@reach/router": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.2.1.tgz", + "integrity": "sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ==", + "dev": true, + "requires": { + "create-react-context": "^0.2.1", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "warning": "^3.0.0" + }, + "dependencies": { + "create-react-context": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz", + "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==", + "dev": true, + "requires": { + "fbjs": "^0.8.0", + "gud": "^1.0.0" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "@sap-theming/theming-base-content": { + "version": "11.1.12", + "resolved": "https://registry.npmjs.org/@sap-theming/theming-base-content/-/theming-base-content-11.1.12.tgz", + "integrity": "sha512-3fNT9NqHNTp9HD4V4F6gI3Rx94zOw5HYo8pIeZh2dLRWRoDNf01cuDzzXBg6LNj6CEQdEEyMFFI0NgBGFFoOOQ==" + }, + "@storybook/addon-a11y": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-5.2.1.tgz", + "integrity": "sha512-DrS+FR8efOKVYjN1wtm0b1M9+FrPQeBAMSsStiQvgzJ67ixg56wjGd4Euen9xbIWfbKK5cs3HVnj22iwuePBow==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.1", + "@storybook/api": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/components": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/theming": "5.2.1", + "axe-core": "^3.3.2", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "global": "^4.3.2", + "hoist-non-react-statics": "^3.3.0", + "memoizerific": "^1.11.3", + "react": "^16.8.3", + "react-redux": "^7.0.2", + "react-sizeme": "^2.5.2", + "redux": "^4.0.1", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/addon-actions": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.2.1.tgz", + "integrity": "sha512-tu4LGeRGAq+sLlsRPE1PzGyYU9JyM3HMLXnOCh5dvRSS8wnoDw1zQ55LPOXH6aoJGdsrvktiw+uTVf4OyN7ryg==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.1", + "@storybook/api": "5.2.1", + "@storybook/client-api": "5.2.1", + "@storybook/components": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/theming": "5.2.1", + "core-js": "^3.0.1", + "fast-deep-equal": "^2.0.1", + "global": "^4.3.2", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "react": "^16.8.3", + "react-inspector": "^3.0.2", + "uuid": "^3.3.2" + } + }, + "@storybook/addon-knobs": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.2.1.tgz", + "integrity": "sha512-JCSqrGYyVVBNkudhvla7qc9m0/Mn1UMaMzIxH5kewEE1KWZcCkdXD5hDASN39pkn3mX1yyqveP8jiyIL9vVBLg==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.1", + "@storybook/api": "5.2.1", + "@storybook/client-api": "5.2.1", + "@storybook/components": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/theming": "5.2.1", + "copy-to-clipboard": "^3.0.8", + "core-js": "^3.0.1", + "escape-html": "^1.0.3", + "fast-deep-equal": "^2.0.1", + "global": "^4.3.2", + "lodash": "^4.17.11", + "prop-types": "^15.7.2", + "qs": "^6.6.0", + "react-color": "^2.17.0", + "react-lifecycles-compat": "^3.0.4", + "react-select": "^3.0.0" + }, + "dependencies": { + "qs": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==", + "dev": true + } + } + }, + "@storybook/addon-notes": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-notes/-/addon-notes-5.2.1.tgz", + "integrity": "sha512-kpzadrYwnIOosCPW3VKxsR93JjAlIV4H4Ckrm7Aoz25isZwNB5jo61kmJ0ZGcWzKbTma2u0HnHuxuuvYix3Tzw==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.1", + "@storybook/api": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/components": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/router": "5.2.1", + "@storybook/theming": "5.2.1", + "core-js": "^3.0.1", + "global": "^4.3.2", + "markdown-to-jsx": "^6.10.3", + "memoizerific": "^1.11.3", + "prop-types": "^15.7.2", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/addon-storysource": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-storysource/-/addon-storysource-5.2.1.tgz", + "integrity": "sha512-g8RDPdH8wfeXiGeXe2S04jy9VF4bnrRrkXoq6Xa4BuDT//6IzecrObHO+6KNHYR7qf1vdBNDu4Yc5xFjqPi9Sw==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.1", + "@storybook/components": "5.2.1", + "@storybook/router": "5.2.1", + "@storybook/source-loader": "5.2.1", + "@storybook/theming": "5.2.1", + "core-js": "^3.0.1", + "estraverse": "^4.2.0", + "loader-utils": "^1.2.3", + "prettier": "^1.16.4", + "prop-types": "^15.7.2", + "react-syntax-highlighter": "^8.0.1", + "regenerator-runtime": "^0.12.1", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "dev": true + }, + "lowlight": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", + "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==", + "dev": true, + "requires": { + "fault": "^1.0.2", + "highlight.js": "~9.12.0" + } + }, + "react-syntax-highlighter": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-8.1.0.tgz", + "integrity": "sha512-G2bkZxmF3VOa4atEdXIDSfwwCqjw6ZQX5znfTaHcErA1WqHIS0o6DaSCDKFPVaOMXQEB9Hf1UySYQvuJmV8CXg==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "highlight.js": "~9.12.0", + "lowlight": "~1.9.1", + "prismjs": "^1.8.4", + "refractor": "^2.4.1" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + } + } + }, + "@storybook/addons": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.2.1.tgz", + "integrity": "sha512-kdx97tTKsMf/lBlT40uLYsHMF1J71mn2j41RNaCXmWw/PrKCDmiNfinemN2wtbwRSvGqb3q/BAqjKLvUtWynGg==", + "dev": true, + "requires": { + "@storybook/api": "5.2.1", + "@storybook/channels": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/core-events": "5.2.1", + "core-js": "^3.0.1", + "global": "^4.3.2", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/api": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.2.1.tgz", + "integrity": "sha512-EXN6sqkGHRuNq0W6BZXOlxe2I2dmN0yUdQLiUOpzH2I3mXnVHpad/0v76dRc9fZbC4LaYUSxR8lBTr0rqIb4mA==", + "dev": true, + "requires": { + "@storybook/channels": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/router": "5.2.1", + "@storybook/theming": "5.2.1", + "core-js": "^3.0.1", + "fast-deep-equal": "^2.0.1", + "global": "^4.3.2", + "lodash": "^4.17.11", + "memoizerific": "^1.11.3", + "prop-types": "^15.6.2", + "react": "^16.8.3", + "semver": "^6.0.0", + "shallow-equal": "^1.1.0", + "store2": "^2.7.1", + "telejson": "^2.2.2", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@storybook/channel-postmessage": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.2.1.tgz", + "integrity": "sha512-gmnn9qU1iLCpfF6bZuEM3QQOZsAviWeIpiezjrd/qkxatgr3qtbXd4EoZpcVuQw314etarWtNxVpcX6PXcASjQ==", + "dev": true, + "requires": { + "@storybook/channels": "5.2.1", + "@storybook/client-logger": "5.2.1", + "core-js": "^3.0.1", + "global": "^4.3.2", + "telejson": "^2.2.2" + } + }, + "@storybook/channels": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.2.1.tgz", + "integrity": "sha512-AsF/Hwx91SDOgiOGOBSWS8EJAgqVm939n2nkfdLSJQQmX5EdPRAc3EIE3f13tyQub2yNx0OR4UzQDWgjwfVsEQ==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } + }, + "@storybook/client-api": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.2.1.tgz", + "integrity": "sha512-VxexqxrbORCGqwx2j0/91Eu1A/vq+rSVIesWwzIowmoLfBwRwDdskO20Yn9U7iMSpux4RvHGF6y1Q1ZtnXm9aA==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.1", + "@storybook/channel-postmessage": "5.2.1", + "@storybook/channels": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/router": "5.2.1", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "eventemitter3": "^4.0.0", + "global": "^4.3.2", + "is-plain-object": "^3.0.0", + "lodash": "^4.17.11", + "memoizerific": "^1.11.3", + "qs": "^6.6.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, + "qs": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==", + "dev": true + } + } + }, + "@storybook/client-logger": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.2.1.tgz", + "integrity": "sha512-wzxSE9t3DaLCdd/gnGFnjevmYRZ92F3TEwhUP/QDXM9cZkNsRKHkjE61qjiO5aQPaZQG6Ea9ayWEQEMgZXDucg==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } + }, + "@storybook/components": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.2.1.tgz", + "integrity": "sha512-cik5J/mTm1b1TOI17qM+2Mikk3rjb3SbBD4WlNz3Zvn+Hw0ukgbx6kQwVBgujhMlDtsHreidyEgIg4TM13S0Tg==", + "dev": true, + "requires": { + "@storybook/client-logger": "5.2.1", + "@storybook/theming": "5.2.1", + "@types/react-syntax-highlighter": "10.1.0", + "core-js": "^3.0.1", + "global": "^4.3.2", + "markdown-to-jsx": "^6.9.1", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "popper.js": "^1.14.7", + "prop-types": "^15.7.2", + "react": "^16.8.3", + "react-dom": "^16.8.3", + "react-focus-lock": "^1.18.3", + "react-helmet-async": "^1.0.2", + "react-popper-tooltip": "^2.8.3", + "react-syntax-highlighter": "^8.0.1", + "react-textarea-autosize": "^7.1.0", + "simplebar-react": "^1.0.0-alpha.6" + }, + "dependencies": { + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "dev": true + }, + "lowlight": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", + "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==", + "dev": true, + "requires": { + "fault": "^1.0.2", + "highlight.js": "~9.12.0" + } + }, + "react-syntax-highlighter": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-8.1.0.tgz", + "integrity": "sha512-G2bkZxmF3VOa4atEdXIDSfwwCqjw6ZQX5znfTaHcErA1WqHIS0o6DaSCDKFPVaOMXQEB9Hf1UySYQvuJmV8CXg==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "highlight.js": "~9.12.0", + "lowlight": "~1.9.1", + "prismjs": "^1.8.4", + "refractor": "^2.4.1" + } + } + } + }, + "@storybook/core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.2.1.tgz", + "integrity": "sha512-mGGvN3GWeLxZ9lYZ4IuD1IoJD+cn6XXm2Arzw+k6KEtJJDFrC5SjESTDGLVFienX5s2tgH4FjYb9Ps9sKfhHlg==", + "dev": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.3.3", + "@babel/plugin-proposal-object-rest-spread": "^7.3.2", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-react-constant-elements": "^7.2.0", + "@babel/preset-env": "^7.4.5", + "@storybook/addons": "5.2.1", + "@storybook/channel-postmessage": "5.2.1", + "@storybook/client-api": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/node-logger": "5.2.1", + "@storybook/router": "5.2.1", + "@storybook/theming": "5.2.1", + "@storybook/ui": "5.2.1", + "airbnb-js-shims": "^1 || ^2", + "ansi-to-html": "^0.6.11", + "autoprefixer": "^9.4.9", + "babel-plugin-add-react-displayname": "^0.0.5", + "babel-plugin-emotion": "^10.0.14", + "babel-plugin-macros": "^2.4.5", + "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5", + "boxen": "^3.0.0", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "cli-table3": "0.5.1", + "commander": "^2.19.0", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "corejs-upgrade-webpack-plugin": "^2.2.0", + "css-loader": "^3.0.0", + "detect-port": "^1.3.0", + "dotenv-webpack": "^1.7.0", + "ejs": "^2.6.1", + "express": "^4.17.0", + "file-loader": "^3.0.1", + "file-system-cache": "^1.0.5", + "find-cache-dir": "^3.0.0", + "fs-extra": "^8.0.1", + "global": "^4.3.2", + "html-webpack-plugin": "^4.0.0-beta.2", + "inquirer": "^6.2.0", + "interpret": "^1.2.0", + "ip": "^1.1.5", + "json5": "^2.1.0", + "lazy-universal-dotenv": "^3.0.1", + "node-fetch": "^2.6.0", + "open": "^6.1.0", + "pnp-webpack-plugin": "1.4.3", + "postcss-flexbugs-fixes": "^4.1.0", + "postcss-loader": "^3.0.0", + "pretty-hrtime": "^1.0.3", + "qs": "^6.6.0", + "raw-loader": "^2.0.0", + "react-dev-utils": "^9.0.0", + "regenerator-runtime": "^0.12.1", + "resolve": "^1.11.0", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "serve-favicon": "^2.5.0", + "shelljs": "^0.8.3", + "style-loader": "^0.23.1", + "terser-webpack-plugin": "^1.2.4", + "unfetch": "^4.1.0", + "url-loader": "^2.0.1", + "util-deprecate": "^1.0.2", + "webpack": "^4.33.0", + "webpack-dev-middleware": "^3.7.0", + "webpack-hot-middleware": "^2.25.0" + }, + "dependencies": { + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "boxen": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", + "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^2.4.2", + "cli-boxes": "^2.2.0", + "string-width": "^3.0.0", + "term-size": "^1.2.0", + "type-fest": "^0.3.0", + "widest-line": "^2.0.0" + } + }, + "browserslist": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", + "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000984", + "electron-to-chromium": "^1.3.191", + "node-releases": "^1.1.25" + } + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "find-cache-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dev": true, + "requires": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.8", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.8.tgz", + "integrity": "sha512-n5S2hJi3/vioRvEDswZP2WFgZU8TUqFoYIrkg5dt+xDC4TigQEhIcl4Y81Qs2La/EqKWuJZP8+ikbHGVmzQ4Mg==", + "dev": true, + "requires": { + "html-minifier": "^4.0.0", + "loader-utils": "^1.2.3", + "lodash": "^4.17.11", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-ExrNwuFH3DudHwWY2uRMqyiCOBEDdhQYHIAsqW/CM6hIZlSgXC/ma/p08FoNOUhVyh9hl1NGnMpR94T5i3SHaQ==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.2" + } + }, + "qs": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==", + "dev": true + }, + "react-dev-utils": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.0.3.tgz", + "integrity": "sha512-OyInhcwsvycQ3Zr2pQN+HV4gtRXrky5mJXIy4HnqrWa+mI624xfYfqGuC9dYbxp4Qq3YZzP8GSGQjv0AgNU15w==", + "dev": true, + "requires": { + "@babel/code-frame": "7.5.5", + "address": "1.1.0", + "browserslist": "4.6.6", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "1.0.5", + "filesize": "3.6.1", + "find-up": "3.0.0", + "fork-ts-checker-webpack-plugin": "1.5.0", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "6.5.0", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^6.3.0", + "pkg-up": "2.0.0", + "react-error-overlay": "^6.0.1", + "recursive-readdir": "2.2.2", + "shell-quote": "1.6.1", + "sockjs-client": "1.3.0", + "strip-ansi": "5.2.0", + "text-table": "0.2.0" + }, + "dependencies": { + "address": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.0.tgz", + "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "inquirer": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } + } + }, + "react-error-overlay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.1.tgz", + "integrity": "sha512-V9yoTr6MeZXPPd4nV/05eCBvGH9cGzc52FN8fs0O0TVQ3HYYf1n7EgZVtHbldRq5xU9zEzoXIITjYNIfxDDdUw==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "terser-webpack-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "dev": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "@storybook/core-events": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.2.1.tgz", + "integrity": "sha512-AIYV/I+baQ0KxvEM7QAKqUedLn2os0XU9HTdtfZJTC3U9wjmR2ah2ScD6T0n7PBz3MderkvZG6dNjs9h8gRquQ==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } + }, + "@storybook/node-logger": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.2.1.tgz", + "integrity": "sha512-rz+snXZyKwTegKEf15w4uaFWIKpgaWzTw+Ar8mxa+mX7C2DP65TOc+JGYZ7lsXdred+0WP0DhnmhGu2cX8z3lA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "core-js": "^3.0.1", + "npmlog": "^4.1.2", + "pretty-hrtime": "^1.0.3", + "regenerator-runtime": "^0.12.1" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + } + } + }, + "@storybook/react": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.2.1.tgz", + "integrity": "sha512-brUG8iK2+1Fk5VFZWpAoSokCx21MaPX1zSAVA+Z/Ia0I0sFfurhpQgAGlVePTy9r7dtEEEdniZVtJOH/tHqk4Q==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-constant-elements": "^7.2.0", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "@storybook/addons": "5.2.1", + "@storybook/core": "5.2.1", + "@storybook/node-logger": "5.2.1", + "@svgr/webpack": "^4.0.3", + "babel-plugin-add-react-displayname": "^0.0.5", + "babel-plugin-named-asset-import": "^0.3.1", + "babel-plugin-react-docgen": "^3.0.0", + "babel-preset-react-app": "^9.0.0", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "global": "^4.3.2", + "lodash": "^4.17.11", + "mini-css-extract-plugin": "^0.7.0", + "prop-types": "^15.7.2", + "react-dev-utils": "^9.0.0", + "regenerator-runtime": "^0.12.1", + "semver": "^6.0.0", + "webpack": "^4.33.0" + }, + "dependencies": { + "address": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.0.tgz", + "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "browserslist": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", + "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000984", + "electron-to-chromium": "^1.3.191", + "node-releases": "^1.1.25" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "inquirer": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz", + "integrity": "sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "react-dev-utils": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.0.3.tgz", + "integrity": "sha512-OyInhcwsvycQ3Zr2pQN+HV4gtRXrky5mJXIy4HnqrWa+mI624xfYfqGuC9dYbxp4Qq3YZzP8GSGQjv0AgNU15w==", + "dev": true, + "requires": { + "@babel/code-frame": "7.5.5", + "address": "1.1.0", + "browserslist": "4.6.6", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "1.0.5", + "filesize": "3.6.1", + "find-up": "3.0.0", + "fork-ts-checker-webpack-plugin": "1.5.0", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "6.5.0", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^6.3.0", + "pkg-up": "2.0.0", + "react-error-overlay": "^6.0.1", + "recursive-readdir": "2.2.2", + "shell-quote": "1.6.1", + "sockjs-client": "1.3.0", + "strip-ansi": "5.2.0", + "text-table": "0.2.0" + } + }, + "react-error-overlay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.1.tgz", + "integrity": "sha512-V9yoTr6MeZXPPd4nV/05eCBvGH9cGzc52FN8fs0O0TVQ3HYYf1n7EgZVtHbldRq5xU9zEzoXIITjYNIfxDDdUw==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@storybook/router": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.2.1.tgz", + "integrity": "sha512-Mlk275cyPoKtnP4DwQ5D8gTfnaRPL6kDZOSn0wbTMa6pQOfYKgJsa7tjzeAtZuZ/j8hKI4gAfT/auMgH6g+94A==", + "dev": true, + "requires": { + "@reach/router": "^1.2.1", + "@types/reach__router": "^1.2.3", + "core-js": "^3.0.1", + "global": "^4.3.2", + "lodash": "^4.17.11", + "memoizerific": "^1.11.3", + "qs": "^6.6.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "qs": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==", "dev": true } } }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "@storybook/source-loader": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-5.2.1.tgz", + "integrity": "sha512-JbvcN9pLbT0mMq5fy/TXE8OcZGk/LVvpNhJtv0rOpREbm8Ia5Xk0tBF5IfGh7bWbHz8DndlgikaMx1mSTv6l9A==", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@storybook/addons": "5.2.1", + "@storybook/router": "5.2.1", + "core-js": "^3.0.1", + "estraverse": "^4.2.0", + "global": "^4.3.2", + "loader-utils": "^1.2.3", + "prettier": "^1.16.4", + "prop-types": "^15.7.2", + "regenerator-runtime": "^0.12.1" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + } } }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "@storybook/theming": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.2.1.tgz", + "integrity": "sha512-lbAfcyI7Tx8swduIPmlu/jdWzqTBN/v82IEQbZbPR4LS5OHRPmhXPNgFGrcH4kFAiD0GoezSsdum1x0ZZpsQUQ==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" + "@emotion/core": "^10.0.14", + "@emotion/styled": "^10.0.14", + "@storybook/client-logger": "5.2.1", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.14", + "global": "^4.3.2", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "@storybook/ui": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.2.1.tgz", + "integrity": "sha512-h6Yf1ro/nZcz4nQAU+eSVPxVmpqv7uT7RMb3Vz+VLTY59IEA/sWcoIgA4MIxwf14nVcWOqSmVBJzNKWwc+NGJw==", + "dev": true, + "requires": { + "@storybook/addon-actions": "5.2.1", + "@storybook/addon-knobs": "5.2.1", + "@storybook/addons": "5.2.1", + "@storybook/api": "5.2.1", + "@storybook/channels": "5.2.1", + "@storybook/client-logger": "5.2.1", + "@storybook/components": "5.2.1", + "@storybook/core-events": "5.2.1", + "@storybook/router": "5.2.1", + "@storybook/theming": "5.2.1", + "copy-to-clipboard": "^3.0.8", + "core-js": "^3.0.1", + "core-js-pure": "^3.0.1", + "emotion-theming": "^10.0.14", + "fast-deep-equal": "^2.0.1", + "fuse.js": "^3.4.4", + "global": "^4.3.2", + "lodash": "^4.17.11", + "markdown-to-jsx": "^6.9.3", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "qs": "^6.6.0", + "react": "^16.8.3", + "react-dom": "^16.8.3", + "react-draggable": "^3.3.2", + "react-helmet-async": "^1.0.2", + "react-hotkeys": "2.0.0-pre4", + "react-sizeme": "^2.6.7", + "regenerator-runtime": "^0.13.2", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "store2": "^2.7.1", + "telejson": "^2.2.2", + "util-deprecate": "^1.0.2" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "qs": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", + "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==", + "dev": true + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", + "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==", + "dev": true + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz", + "integrity": "sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw==", + "dev": true + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", + "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==", + "dev": true + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", + "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==", + "dev": true + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", + "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==", + "dev": true + }, + "@svgr/babel-preset": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.1.tgz", + "integrity": "sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", + "@svgr/babel-plugin-svg-dynamic-title": "^4.3.1", + "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", + "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", + "@svgr/babel-plugin-transform-svg-component": "^4.2.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@svgr/core": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.2.tgz", + "integrity": "sha512-N+tP5CLFd1hP9RpO83QJPZY3NL8AtrdqNbuhRgBkjE/49RnMrrRsFm1wY8pueUfAGvzn6tSXUq29o6ah8RuR5w==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@svgr/plugin-jsx": "^4.3.2", + "camelcase": "^5.3.1", + "cosmiconfig": "^5.2.1" } }, - "@nodelib/fs.scandir": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.2.tgz", - "integrity": "sha512-wrIBsjA5pl13f0RN4Zx4FNWmU71lv03meGKnqRUoCyan17s4V3WL92f3w3AIuWbNnpcrQyFBU5qMavJoB8d27w==", + "@svgr/hast-util-to-babel-ast": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", + "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.2", - "run-parallel": "^1.1.9" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.2.tgz", - "integrity": "sha512-z8+wGWV2dgUhLqrtRYa03yDx4HWMvXKi1z8g3m2JyxAx8F7xk74asqPk5LAETjqDSGLFML/6CDl0+yFunSYicw==", - "dev": true - } + "@babel/types": "^7.4.4" } }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "@svgr/plugin-jsx": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.2.tgz", + "integrity": "sha512-+1GW32RvmNmCsOkMoclA/TppNjHPLMnNZG3/Ecscxawp051XJ2MkO09Hn11VcotdC2EPrDfT8pELGRo+kbZ1Eg==", + "dev": true, + "requires": { + "@babel/core": "^7.4.5", + "@svgr/babel-preset": "^4.3.1", + "@svgr/hast-util-to-babel-ast": "^4.3.2", + "svg-parser": "^2.0.0" + } }, - "@nodelib/fs.walk": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.3.tgz", - "integrity": "sha512-l6t8xEhfK9Sa4YO5mIRdau7XSOADfmh3jCr0evNHdY+HNkW6xuQhgMH7D73VV6WpZOagrW0UludvMTiifiwTfA==", + "@svgr/plugin-svgo": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", + "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.2", - "fastq": "^1.6.0" + "cosmiconfig": "^5.2.1", + "merge-deep": "^3.0.2", + "svgo": "^1.2.2" } }, - "@sap-theming/theming-base-content": { - "version": "11.1.12", - "resolved": "https://registry.npmjs.org/@sap-theming/theming-base-content/-/theming-base-content-11.1.12.tgz", - "integrity": "sha512-3fNT9NqHNTp9HD4V4F6gI3Rx94zOw5HYo8pIeZh2dLRWRoDNf01cuDzzXBg6LNj6CEQdEEyMFFI0NgBGFFoOOQ==" + "@svgr/webpack": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.2.tgz", + "integrity": "sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w==", + "dev": true, + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-transform-react-constant-elements": "^7.0.0", + "@babel/preset-env": "^7.4.5", + "@babel/preset-react": "^7.0.0", + "@svgr/core": "^4.3.2", + "@svgr/plugin-jsx": "^4.3.2", + "@svgr/plugin-svgo": "^4.3.1", + "loader-utils": "^1.2.3" + } }, "@types/babel__core": { "version": "7.1.3", @@ -1456,6 +3208,12 @@ "@types/node": "*" } }, + "@types/history": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.3.tgz", + "integrity": "sha512-cS5owqtwzLN5kY+l+KgKdRJ/Cee8tlmQoGQuIE9tWnSmS3JMKzmxo2HIAk2wODMifGwO20d62xZQLYz+RLfXmw==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -1499,12 +3257,47 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, + "@types/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-f8JzJNWVhKtc9dg/dyDNfliTKNOJSLa7Oht/ElZdF/UbMUmAH3rLmAk3ODNjw0mZajDEgatA03tRjB4+Dp/tzA==", + "dev": true + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, + "@types/reach__router": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.2.5.tgz", + "integrity": "sha512-Lna9cD38dN3deqJ6ThZgMKoAzW1LE3u+uUbPGdHUqquoM/fnZitSV1xfJxHjovu4SsNkpN9udkte3wEyrBPawQ==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react": { + "version": "16.9.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.2.tgz", + "integrity": "sha512-jYP2LWwlh+FTqGd9v7ynUKZzjj98T8x7Yclz479QdRhHfuW9yQ+0jjnD31eXSXutmBpppj5PYNLYLRfnZJvcfg==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-syntax-highlighter": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-10.1.0.tgz", + "integrity": "sha512-dF49hC4FZp1dIKyzacOrHvqMUe8U2IXyQCQXOcT1e6n64gLBp+xM6qGtPsThIT9XjiIHSg2W5Jc2V5IqekBfnA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -1846,6 +3639,31 @@ } } }, + "airbnb-js-shims": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.0.tgz", + "integrity": "sha512-pcSQf1+Kx7/0ibRmxj6rmMYc5V8SHlKu+rkQ80h0bjSLDaIxHg/3PiiFJi4A9mDc01CoBHoc8Fls2G/W0/+s5g==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "array.prototype.flatmap": "^1.2.1", + "es5-shim": "^4.5.13", + "es6-shim": "^0.35.5", + "function.prototype.name": "^1.1.0", + "globalthis": "^1.0.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0 || ^1.0.0", + "object.getownpropertydescriptors": "^2.0.3", + "object.values": "^1.1.0", + "promise.allsettled": "^1.0.0", + "promise.prototype.finally": "^3.1.0", + "string.prototype.matchall": "^3.0.1", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", + "symbol.prototype.description": "^1.0.0" + } + }, "airbnb-prop-types": { "version": "2.15.0", "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz", @@ -1951,6 +3769,15 @@ "color-convert": "^1.9.0" } }, + "ansi-to-html": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.11.tgz", + "integrity": "sha512-88XZtrcwrfkyn6fGstHnkaF1kl7hGtNCYh4vSmItgEV+6JnQHryDBf7udF4f2RhTRQmYvJvPcTtqgaqrxzc9oA==", + "dev": true, + "requires": { + "entities": "^1.1.1" + } + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -1972,6 +3799,12 @@ } } }, + "app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", + "dev": true + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -2131,12 +3964,29 @@ "function-bind": "^1.1.1" } }, + "array.prototype.flatmap": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.1.tgz", + "integrity": "sha512-i18e2APdsiezkcqDyZor78Pbfjfds3S94dG6dgIV2ZASJaUf1N0dz2tGdrmwrmlZuNUgxH+wz6Z0zYVH2c5xzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -2196,6 +4046,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", + "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==", + "dev": true + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -2274,6 +4130,12 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, + "axe-core": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.3.2.tgz", + "integrity": "sha512-lRdxsRt7yNhqpcXQk1ao1BL73OZDzmFCWOG0mC4tGR/r14ohH2payjHwCMQjHGbBKm924eDlmG7utAGHiX/A6g==", + "dev": true + }, "axios": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", @@ -2292,15 +4154,74 @@ } } }, - "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^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=", + "dev": true + } + } + }, "babel-eslint": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", @@ -2324,6 +4245,48 @@ "babylon": "^6.18.0" } }, + "babel-helper-evaluate-path": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", + "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", + "dev": true + }, + "babel-helper-flip-expressions": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", + "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", + "dev": true + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", + "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", + "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", + "dev": true + }, + "babel-helper-remove-or-void": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", + "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", + "dev": true + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", + "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", + "dev": true + }, "babel-jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", @@ -2351,6 +4314,12 @@ "pify": "^4.0.1" } }, + "babel-plugin-add-react-displayname": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", + "integrity": "sha1-M51M3be2X9YtHfnbn+BN4TQSK9U=", + "dev": true + }, "babel-plugin-dynamic-import-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", @@ -2360,6 +4329,24 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-emotion": { + "version": "10.0.19", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.19.tgz", + "integrity": "sha512-1pJb5uKN/gx6bi3gGr588Krj49sxARI9KmxhtMUa+NRJb6lR3OfC51mh3NlWRsOqdjWlT4cSjnZpnFq5K3T5ZA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.7.3", + "@emotion/memoize": "0.7.3", + "@emotion/serialize": "^0.11.11", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, "babel-plugin-istanbul": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", @@ -2392,18 +4379,153 @@ "resolve": "^1.10.0" } }, + "babel-plugin-minify-builtins": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", + "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", + "dev": true + }, + "babel-plugin-minify-constant-folding": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", + "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", + "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-mark-eval-scopes": "^0.4.3", + "babel-helper-remove-or-void": "^0.4.3", + "lodash": "^4.17.11" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", + "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", + "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", + "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", + "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "^0.4.3" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", + "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", + "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", + "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.5.0" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", + "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, "babel-plugin-named-asset-import": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.3.tgz", "integrity": "sha512-1XDRysF4894BUdMChT+2HHbtJYiO7zx5Be7U6bT8dISy7OdyETMGIAQBMPQCsY1YRf0xcubwnKKaDr5bk15JTA==", "dev": true }, + "babel-plugin-react-docgen": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-3.1.0.tgz", + "integrity": "sha512-W6xqZnZIWjZuE9IjP7XolxxgFGB5Y9GZk4cLPSWKa10MrT86q7bX4ke9jbrNhFVIRhbmzL8wE1Sn++mIWoJLbw==", + "dev": true, + "requires": { + "lodash": "^4.17.11", + "react-docgen": "^4.1.0", + "recast": "^0.14.7" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", + "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", + "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", + "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", + "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "dev": true + }, "babel-plugin-transform-object-rest-spread": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", @@ -2414,12 +4536,60 @@ "babel-runtime": "^6.26.0" } }, + "babel-plugin-transform-property-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", + "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", "dev": true }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", + "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", + "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", + "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", + "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", + "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", + "dev": true + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", + "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "dev": true + }, "babel-preset-jest": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", @@ -2430,6 +4600,37 @@ "babel-plugin-jest-hoist": "^24.9.0" } }, + "babel-preset-minify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", + "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.5.0", + "babel-plugin-minify-constant-folding": "^0.5.0", + "babel-plugin-minify-dead-code-elimination": "^0.5.1", + "babel-plugin-minify-flip-comparisons": "^0.4.3", + "babel-plugin-minify-guarded-expressions": "^0.4.4", + "babel-plugin-minify-infinity": "^0.4.3", + "babel-plugin-minify-mangle-names": "^0.5.0", + "babel-plugin-minify-numeric-literals": "^0.4.3", + "babel-plugin-minify-replace": "^0.5.0", + "babel-plugin-minify-simplify": "^0.5.1", + "babel-plugin-minify-type-constructors": "^0.4.3", + "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", + "babel-plugin-transform-member-expression-literals": "^6.9.4", + "babel-plugin-transform-merge-sibling-variables": "^6.9.4", + "babel-plugin-transform-minify-booleans": "^6.9.4", + "babel-plugin-transform-property-literals": "^6.9.4", + "babel-plugin-transform-regexp-constructors": "^0.4.3", + "babel-plugin-transform-remove-console": "^6.9.4", + "babel-plugin-transform-remove-debugger": "^6.9.4", + "babel-plugin-transform-remove-undefined": "^0.5.0", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", + "babel-plugin-transform-undefined-to-void": "^6.9.4", + "lodash": "^4.17.11" + } + }, "babel-preset-react-app": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.0.1.tgz", @@ -2678,6 +4879,12 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -3143,6 +5350,12 @@ } } }, + "can-use-dom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", + "integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=", + "dev": true + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3383,6 +5596,17 @@ "restore-cursor": "^2.0.0" } }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -3550,6 +5774,13 @@ "simple-swizzle": "^0.2.2" } }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true, + "optional": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4375,6 +6606,15 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "copy-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz", + "integrity": "sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w==", + "dev": true, + "requires": { + "toggle-selection": "^1.0.6" + } + }, "core-js": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", @@ -4399,12 +6639,36 @@ } } }, + "core-js-pure": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.2.1.tgz", + "integrity": "sha512-+qpvnYrsi/JDeQTArB7NnNc2VoMYLE1YSkziCDHgjexC2KH7OFiGhLUd3urxfyWmNjSwSW7NYXPWHMhuIJx9Ow==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "corejs-upgrade-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-J0QMp9GNoiw91Kj/dkIQFZeiCXgXoja/Wlht1SPybxerBWh4NCmb0pOgCv61lrlQZETwvVVfAFAA3IqoEO9aqQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0", + "webpack": "^4.38.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -4771,6 +7035,12 @@ "cssom": "0.3.x" } }, + "csstype": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.6.tgz", + "integrity": "sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg==", + "dev": true + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -4903,6 +7173,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deep-object-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.0.tgz", + "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", + "dev": true + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -5267,6 +7543,12 @@ "entities": "^1.1.1" } }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -5322,12 +7604,38 @@ "integrity": "sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA==", "dev": true }, + "dotenv-defaults": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.0.2.tgz", + "integrity": "sha512-iXFvHtXl/hZPiFj++1hBg4lbKwGM+t/GlvELDnRtOFdjXyWP7mubkVr+eZGWG62kdsbulXAef6v/j6kiWc/xGA==", + "dev": true, + "requires": { + "dotenv": "^6.2.0" + }, + "dependencies": { + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true + } + } + }, "dotenv-expand": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "dotenv-webpack": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz", + "integrity": "sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw==", + "dev": true, + "requires": { + "dotenv-defaults": "^1.0.2" + } + }, "dotgitignore": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-1.0.3.tgz", @@ -5429,6 +7737,15 @@ "integrity": "sha512-wGt+OivF1C1MPwaSv3LJ96ebNbLAWlx3HndivDDWqwIVSQxmhL17Y/YmwUdEMtS/bPyommELt47Dct0/VZNQBQ==", "dev": true }, + "element-resize-detector": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.15.tgz", + "integrity": "sha512-16/5avDegXlUxytGgaumhjyQoM6hpp5j3+L79sYq5hlXfTNRy5WMMuTVWkZU3egp/CokCmTmvf18P3KeB57Iog==", + "dev": true, + "requires": { + "batch-processor": "^1.0.0" + } + }, "elliptic": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", @@ -5462,12 +7779,32 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "emotion-theming": { + "version": "10.0.19", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.0.19.tgz", + "integrity": "sha512-dQRBPLAAQ6eA8JKhkLCIWC8fdjPbiNC1zNTdFF292h9amhZXofcNGUP7axHoHX4XesqQESYwZrXp53OPInMrKw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.4", + "hoist-non-react-statics": "^3.3.0" + } + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -5600,6 +7937,12 @@ "is-symbol": "^1.0.2" } }, + "es5-shim": { + "version": "4.5.13", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz", + "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw==", + "dev": true + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -5615,6 +7958,12 @@ "es6-promise": "^4.0.3" } }, + "es6-shim": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.5.tgz", + "integrity": "sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -6613,6 +8962,29 @@ "bser": "^2.0.0" } }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "dev": true, + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, "fd-slicer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", @@ -6656,6 +9028,47 @@ "schema-utils": "^2.0.0" } }, + "file-system-cache": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", + "integrity": "sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08=", + "dev": true, + "requires": { + "bluebird": "^3.3.5", + "fs-extra": "^0.30.0", + "ramda": "^0.21.0" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ramda": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", + "integrity": "sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=", + "dev": true + } + } + }, "filename-reserved-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", @@ -6738,6 +9151,12 @@ "pkg-dir": "^3.0.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -6780,6 +9199,12 @@ "readable-stream": "^2.3.6" } }, + "focus-lock": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.6.5.tgz", + "integrity": "sha512-i/mVBOoa9o+tl+u9owOJUF8k8L85odZNIsctB+JAK2HFT8jckiBwmk+3uydlm6FN8czgnkIwQtBv6yyAbrzXjw==", + "dev": true + }, "focus-trap": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-4.0.2.tgz", @@ -6838,6 +9263,22 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, + "fork-ts-checker-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + } + }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -6950,8 +9391,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -6972,14 +9412,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6994,20 +9432,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -7124,8 +9559,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -7137,7 +9571,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -7152,7 +9585,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -7160,14 +9592,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -7186,7 +9616,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -7267,8 +9696,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -7280,7 +9708,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -7366,8 +9793,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -7403,7 +9829,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7423,7 +9848,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -7467,14 +9891,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -7528,6 +9950,12 @@ "@sap-theming/theming-base-content": "^11.1.10" } }, + "fuse.js": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.4.5.tgz", + "integrity": "sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -8046,6 +10474,16 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -8072,6 +10510,17 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globalthis": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.0.tgz", + "integrity": "sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "object-keys": "^1.0.12" + } + }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", @@ -8949,6 +11398,12 @@ "ipaddr.js": "^1.9.0" } }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -9148,6 +11603,16 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, + "is-dom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", + "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, + "requires": { + "is-object": "^1.0.1", + "is-window": "^1.0.2" + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -9175,6 +11640,12 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -9228,6 +11699,12 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -9371,6 +11848,12 @@ "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", "dev": true }, + "is-window": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", + "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -9407,6 +11890,16 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -10318,6 +12811,15 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -10340,6 +12842,25 @@ "webpack-sources": "^1.1.0" } }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazy-universal-dotenv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", + "integrity": "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.0", + "app-root-dir": "^1.0.2", + "core-js": "^3.0.4", + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0" + } + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -10516,6 +13037,12 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "lodash.escape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", @@ -10565,6 +13092,12 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -10688,6 +13221,12 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -10709,6 +13248,22 @@ "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, + "markdown-to-jsx": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.10.3.tgz", + "integrity": "sha512-PSoUyLnW/xoW6RsxZrquSSz5eGEOTwa15H5eqp3enmrp8esmgDJmhzd6zmQ9tgAA9TxJzx1Hmf3incYU/IamoQ==", + "dev": true, + "requires": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + } + }, + "material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", + "dev": true + }, "mathml-tag-names": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", @@ -10784,6 +13339,21 @@ } } }, + "memoize-one": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", + "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==", + "dev": true + }, + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -10914,6 +13484,79 @@ } } }, + "merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" + }, + "dependencies": { + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "dev": true, + "requires": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + } + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + } + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -10938,6 +13581,12 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -10996,6 +13645,15 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, "mini-create-react-context": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz", @@ -11108,6 +13766,24 @@ } } }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -11247,6 +13923,15 @@ "lower-case": "^1.1.1" } }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, "node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -11257,6 +13942,16 @@ "semver": "^5.7.0" } }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, "node-forge": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.2.tgz", @@ -11766,6 +14461,15 @@ "mimic-fn": "^1.0.0" } }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, "opener": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", @@ -12290,6 +14994,15 @@ "ts-pnp": "^1.1.2" } }, + "polished": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.1.tgz", + "integrity": "sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.5" + } + }, "popper.js": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", @@ -13510,6 +16223,12 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true + }, "pretty-bytes": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", @@ -13546,6 +16265,12 @@ } } }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, "prismjs": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", @@ -13579,12 +16304,43 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise.allsettled": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.1.tgz", + "integrity": "sha512-3ST7RS7TY3TYLOIe+OACZFvcWVe1osbgz2x07nTb446pa3t4GUZWidMDzQ4zf9jC2l6mRa1/3X81icFYbi+D/g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0", + "function-bind": "^1.1.1" + } + }, + "promise.prototype.finally": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.1.tgz", + "integrity": "sha512-gnt8tThx0heJoI3Ms8a/JdkYBVhYP/wv+T7yQimR+kdOEJL21xTFbiJhMRqnSPcr54UVvMbsscDk2w+ivyaLPw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0", + "function-bind": "^1.1.1" + } + }, "prompts": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", @@ -13895,6 +16651,29 @@ } } }, + "raw-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-2.0.0.tgz", + "integrity": "sha512-kZnO5MoIyrojfrPWqrhFNLZemIAX8edMOCp++yC5RKxzFB3m92DqKNhKlU6+FvpOhWtvyh3jOaD7J6/9tpdIKg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -13926,6 +16705,29 @@ "prop-types": "^15.6.2" } }, + "react-clientside-effect": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz", + "integrity": "sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "react-color": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.17.3.tgz", + "integrity": "sha512-1dtO8LqAVotPIChlmo6kLtFS1FP89ll8/OiA8EcFRDR+ntcK+0ukJgByuIQHRtzvigf26dV5HklnxDIvhON9VQ==", + "dev": true, + "requires": { + "@icons/material": "^0.2.4", + "lodash": "^4.17.11", + "material-colors": "^1.2.1", + "prop-types": "^15.5.10", + "reactcss": "^1.2.0", + "tinycolor2": "^1.4.1" + } + }, "react-context-toolbox": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/react-context-toolbox/-/react-context-toolbox-2.0.2.tgz", @@ -14082,6 +16884,41 @@ } } }, + "react-docgen": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-4.1.1.tgz", + "integrity": "sha512-o1wdswIxbgJRI4pckskE7qumiFyqkbvCO++TylEDOo2RbMiueIOg8YzKU4X9++r0DjrbXePw/LHnh81GRBTWRw==", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@babel/runtime": "^7.0.0", + "async": "^2.1.4", + "commander": "^2.19.0", + "doctrine": "^3.0.0", + "node-dir": "^0.1.10", + "recast": "^0.17.3" + }, + "dependencies": { + "recast": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz", + "integrity": "sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ==", + "dev": true, + "requires": { + "ast-types": "0.12.4", + "esprima": "~4.0.0", + "private": "^0.1.8", + "source-map": "~0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "react-dom": { "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", @@ -14094,6 +16931,16 @@ "scheduler": "^0.15.0" } }, + "react-draggable": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", + "integrity": "sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==", + "dev": true, + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, "react-element-to-jsx-string": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.1.0.tgz", @@ -14138,6 +16985,18 @@ "resolved": "https://registry.npmjs.org/react-foco/-/react-foco-1.3.1.tgz", "integrity": "sha512-Wyzgs3wBFKuWnIHb7SGG+ARFB74TGk8b/jKvHBKoHCcspVHQL5S9OVgnGfNk0U92QetEFL5/3kNaZBX4AFTqVw==" }, + "react-focus-lock": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-1.19.1.tgz", + "integrity": "sha512-TPpfiack1/nF4uttySfpxPk4rGZTLXlaZl7ncZg/ELAk24Iq2B1UUaUioID8H8dneUXqznT83JTNDHDj+kwryw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.6.3", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.0" + } + }, "react-helmet-async": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.3.tgz", @@ -14168,11 +17027,46 @@ } } }, + "react-hotkeys": { + "version": "2.0.0-pre4", + "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0-pre4.tgz", + "integrity": "sha512-oa+UncSWyOwMK3GExt+oELXaR7T3ItgcMolsupQFdKvwkEhVAluJd5rYczsRSQpQlVkdNoHG46De2NUeuS+88Q==", + "dev": true, + "requires": { + "prop-types": "^15.6.1" + } + }, + "react-input-autosize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.1.tgz", + "integrity": "sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA==", + "dev": true, + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-inspector": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-3.0.2.tgz", + "integrity": "sha512-PSR8xDoGFN8R3LKmq1NT+hBBwhxjd9Qwz8yKY+5NXY/CHpxXHm01CVabxzI7zFwFav/M3JoC/Z0Ro2kSX6Ef2Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "is-dom": "^1.0.9", + "prop-types": "^15.6.1" + } + }, "react-is": { "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==" }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, "react-markdown": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-4.2.2.tgz", @@ -14217,6 +17111,30 @@ "warning": "^4.0.2" } }, + "react-popper-tooltip": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.8.3.tgz", + "integrity": "sha512-g5tfxmuj8ClNVwH4zswYJcD3GKoc5RMeRawd/WZnbyZGEDecsRKaVL+Kj7L3BG7w5qb6/MHcLTG8yE4CidwezQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.5", + "react-popper": "^1.3.3" + } + }, + "react-redux": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.1.1.tgz", + "integrity": "sha512-QsW0vcmVVdNQzEkrgzh2W3Ksvr8cqpAv5FhEk7tNEft+5pp7rXxAudTz3VOPawRkLIepItpkEIyLcN/VVXzjTg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + } + }, "react-router": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.0.1.tgz", @@ -14250,6 +17168,36 @@ "tiny-warning": "^1.0.0" } }, + "react-select": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-3.0.4.tgz", + "integrity": "sha512-fbVISKa/lSUlLsltuatfUiKcWCNvdLXxFFyrzVQCBUsjxJZH/m7UMPdw/ywmRixAmwXAP++MdbNNZypOsiDEfA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@emotion/cache": "^10.0.9", + "@emotion/core": "^10.0.9", + "@emotion/css": "^10.0.9", + "classnames": "^2.2.5", + "memoize-one": "^5.0.0", + "prop-types": "^15.6.0", + "raf": "^3.4.0", + "react-input-autosize": "^2.2.1", + "react-transition-group": "^2.2.1" + } + }, + "react-sizeme": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.7.tgz", + "integrity": "sha512-xCjPoBP5jmeW58TxIkcviMZqabZis7tTvDFWf0/Wa5XCgVWQTIe74NQBes2N1Kmp64GRLkpm60BaP0kk+v8aCQ==", + "dev": true, + "requires": { + "element-resize-detector": "^1.1.15", + "invariant": "^2.2.4", + "shallowequal": "^1.1.0", + "throttle-debounce": "^2.1.0" + } + }, "react-syntax-highlighter": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz", @@ -14275,6 +17223,37 @@ "scheduler": "^0.15.0" } }, + "react-textarea-autosize": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz", + "integrity": "sha512-c2FlR/fP0qbxmlrW96SdrbgP/v0XZMTupqB90zybvmDVDutytUgPl7beU35klwcTeMepUIQEpQUn3P3bdshGPg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.6.0" + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dev": true, + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "reactcss": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", + "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", + "dev": true, + "requires": { + "lodash": "^4.0.1" + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -14331,6 +17310,41 @@ "util.promisify": "^1.0.0" } }, + "recast": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", + "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", + "dev": true, + "requires": { + "ast-types": "0.11.3", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + }, + "dependencies": { + "ast-types": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -14350,6 +17364,16 @@ "strip-indent": "^1.0.1" } }, + "redux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz", + "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" + } + }, "reflect.ownkeys": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", @@ -14739,6 +17763,12 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", @@ -15340,6 +18370,33 @@ } } }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, "serve-handler": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-5.0.8.tgz", @@ -15492,6 +18549,12 @@ "kind-of": "^6.0.2" } }, + "shallow-equal": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.0.tgz", + "integrity": "sha512-Z21pVxR4cXsfwpMKMhCEIO1PCi5sp7KEp+CmOpBQ+E8GpHwKOw2sEzk7sgblM3d/j4z4gakoWEoPcjK0VJQogA==", + "dev": true + }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -15519,6 +18582,17 @@ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -15556,6 +18630,30 @@ } } }, + "simplebar": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-4.2.2.tgz", + "integrity": "sha512-OWHcnifIbGhB7RBdYS57xsqOUIp9GOKCJw5dOJCuKsV83+1kdKcbIaXaqb6A9zAOIRqhJIdN2qOBrsd4Axe84A==", + "dev": true, + "requires": { + "can-use-dom": "^0.1.0", + "core-js": "^3.0.1", + "lodash.debounce": "^4.0.8", + "lodash.memoize": "^4.1.2", + "lodash.throttle": "^4.1.1", + "resize-observer-polyfill": "^1.5.1" + } + }, + "simplebar-react": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-1.2.2.tgz", + "integrity": "sha512-fWf6cRQSsDcPsRb4Ubli7ZwIN0RFO2mOL04YfY60Kf8DBnw23rOSjc4xcNVMxDJhpzC5dYsC8ZYnDwr5JXrxVw==", + "dev": true, + "requires": { + "prop-types": "^15.6.1", + "simplebar": "^4.2.2" + } + }, "sisteransi": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", @@ -16792,6 +19890,12 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, + "store2": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.9.0.tgz", + "integrity": "sha512-JmK+95jLX2zAP75DVAJ1HAziQ6f+f495h4P9ez2qbmxazN6fE7doWlitqx9hj2YohH3kOi6RVksJe1UH0sJfPw==", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -16857,6 +19961,19 @@ "strip-ansi": "^4.0.0" } }, + "string.prototype.matchall": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-3.0.1.tgz", + "integrity": "sha512-NSiU0ILQr9PQ1SZmM1X327U5LsM+KfDTassJfqN1al1+0iNpKzmQ4BfXOJwRnTEqv8nKJ67mFpqRoPaGWwvy5A==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "regexp.prototype.flags": "^1.2.0" + } + }, "string.prototype.padend": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", @@ -16868,6 +19985,17 @@ "function-bind": "^1.0.2" } }, + "string.prototype.padstart": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz", + "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, "string.prototype.trim": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz", @@ -17433,6 +20561,12 @@ "has-flag": "^3.0.0" } }, + "svg-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.2.tgz", + "integrity": "sha512-1gtApepKFweigFZj3sGO8KT8LvVZK8io146EzXrpVuWCDAbISz/yMucco3hWTkpZNoPabM+dnMOpy6Swue68Zg==", + "dev": true + }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -17484,12 +20618,27 @@ } } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "symbol.prototype.description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.0.tgz", + "integrity": "sha512-I9mrbZ5M96s7QeJDv95toF1svkUjeBybe8ydhY7foPaBmr0SPJMFupArmMkDrOKTTj0sJVr+nvQNxWLziQ7nDQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, "tabbable": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-3.1.2.tgz", @@ -17552,6 +20701,21 @@ "inherits": "2" } }, + "telejson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-2.2.2.tgz", + "integrity": "sha512-YyNwnKY0ilabOwYgC/J754En1xOe5PBIUIw+C9e0+5HjVVcnQE5/gdu2yET2pmSbp5bxIDqYNjvndj2PUkIiYA==", + "dev": true, + "requires": { + "global": "^4.3.2", + "is-function": "^1.0.1", + "is-regex": "^1.0.4", + "is-symbol": "^1.0.2", + "isobject": "^3.0.1", + "lodash": "^4.17.11", + "memoizerific": "^1.11.3" + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -17781,6 +20945,12 @@ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, + "throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -17837,6 +21007,12 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "dev": true }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -17912,6 +21088,12 @@ "integrity": "sha512-aQua2zshZpY5MFpd8gdmFOromgszMESf/eYY3LQcj+nLHHrzwyKW+QS21IQlKsi+uvh3yRURIl7Ou0JAE54hpg==", "dev": true }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", + "dev": true + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -18100,6 +21282,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "ua-parser-js": { + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", + "dev": true + }, "uglify-js": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", @@ -18133,6 +21321,12 @@ "invariant": "^2.2.4" } }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", + "dev": true + }, "unherit": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", @@ -19005,6 +22199,35 @@ } } }, + "webpack-hot-middleware": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz", + "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "html-entities": "^1.2.0", + "querystring": "^0.2.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "webpack-log": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", @@ -19083,6 +22306,12 @@ "iconv-lite": "0.4.24" } }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==", + "dev": true + }, "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", @@ -19326,6 +22555,15 @@ "errno": "~0.1.7" } }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index fc7f05d13..a733e40d7 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "config:lint": "eslint 'config/**' --ext .js,.jsx --env browser,node", "deploy": "gh-pages -d build", "devtools:lint": "eslint 'devtools/**' --ext .js,.jsx --env browser,node", + "docs:dev": "FUNDAMENTAL_REACT_PLAYGROUND=true npm start", "dry-run": "npm run build && npm publish --dry-run", "lint:fix": "npm run build:lint:fix && npm run scripts:lint:fix && npm run config:lint:fix", "lint:pre-commit": "printf \"running pre-commit lint...\" && npm run lint && printf \"done!\n\"", @@ -34,9 +35,10 @@ "scripts:lint": "eslint 'scripts/**' --ext .js,.jsx --env browser,node", "size": "npm run build && size-limit", "size:debug": "npm run build && size-limit --why", - "start:playground": "FUNDAMENTAL_REACT_PLAYGROUND=true npm start", "start": "npm run build && node scripts/start.js", + "start:playground": "npm run storybook", "std-version": "standard-version -m \"chore(release): version %s build ${TRAVIS_BUILD_NUMBER} [ci skip]\"", + "storybook": "start-storybook -p 12123", "style:lint": "stylelint 'src/**/*.scss' 'src/**/*.css'", "test:coverage:watch": "npm run test:coverage -- --watch", "test:coverage": "npm run test:dev -- --coverage", @@ -65,13 +67,19 @@ "@babel/plugin-proposal-class-properties": "^7.3.0", "@babel/plugin-proposal-object-rest-spread": "^7.3.1", "@babel/plugin-transform-object-assign": "^7.2.0", - "babel-plugin-named-asset-import": "^0.3.2", "@babel/preset-env": "^7.3.1", "@babel/preset-react": "^7.0.0", + "@storybook/addon-a11y": "^5.2.1", + "@storybook/addon-knobs": "^5.2.1", + "@storybook/addon-notes": "^5.2.1", + "@storybook/addon-storysource": "^5.2.1", + "@storybook/react": "^5.2.1", + "@storybook/source-loader": "^5.2.1", "annotated-prop-types": "^0.3.0", "babel-eslint": "9.0.0", "babel-jest": "^24.8.0", "babel-loader": "8.0.6", + "babel-plugin-named-asset-import": "^0.3.2", "babel-plugin-transform-react-remove-prop-types": "^0.4.23", "babel-preset-react-app": "^9.0.0", "bfj": "7.0.1", diff --git a/src/ActionBar/ActionBar.js b/src/ActionBar/ActionBar.js index 2b6ac6cdf..d453feb8c 100644 --- a/src/ActionBar/ActionBar.js +++ b/src/ActionBar/ActionBar.js @@ -1,12 +1,12 @@ -import 'fundamental-styles/dist/action-bar.css'; import ActionBarActions from './_ActionBarActions'; import ActionBarBack from './_ActionBarBack'; import ActionBarHeader from './_ActionBarHeader'; import classnames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/StyleProvider'; -const ActionBar = ({ children, className, ...props }) => { +const ActionBar = ({ children, className, customStyles, disableStyles, ...props }) => { const actionBarClasses = classnames( 'fd-action-bar', className @@ -21,11 +21,13 @@ ActionBar.displayName = 'ActionBar'; ActionBar.propTypes = { children: PropTypes.node, - className: PropTypes.string + className: PropTypes.string, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool }; ActionBar.Actions = ActionBarActions; ActionBar.Back = ActionBarBack; ActionBar.Header = ActionBarHeader; -export default ActionBar; +export default withStyles(ActionBar); diff --git a/src/ActionBar/__stories__/ActionBar.stories.js b/src/ActionBar/__stories__/ActionBar.stories.js new file mode 100644 index 000000000..b3949d6e0 --- /dev/null +++ b/src/ActionBar/__stories__/ActionBar.stories.js @@ -0,0 +1,40 @@ +import ActionBar from '../ActionBar'; +import Button from '../../Button/Button'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +// storiesOf('Components|ActionBar', module) +// .addDecorator(withKnobs) +// .add('Default', () => ( +// +// +// +// +// +// +// +// +// )) +// .add('disable styles', () => ( +// +// +// +// +// +// +// +// +// )) +// .add('custom styles', () => ( +// +// +// +// +// +// +// +// +// )); diff --git a/src/Alert/Alert.js b/src/Alert/Alert.js index 347e364b5..e2cb1140e 100644 --- a/src/Alert/Alert.js +++ b/src/Alert/Alert.js @@ -1,10 +1,10 @@ -import 'fundamental-styles/dist/alert.css'; import { ALERT_TYPES } from '../utils/constants'; import classnames from 'classnames'; import CustomPropTypes from '../utils/CustomPropTypes/CustomPropTypes'; import Icon from '../Icon/Icon'; import Link from '../Link/Link'; import PropTypes from 'prop-types'; +import withStyles from '../utils/StyleProvider'; import React, { Component } from 'react'; class Alert extends Component { @@ -27,6 +27,8 @@ class Alert extends Component { const { onCloseClicked, buttonProps, + customStyles, + disableStyles, type, link, linkProps, @@ -35,6 +37,7 @@ class Alert extends Component { dismissible, children, className, + useIcons, ...props } = this.props; @@ -88,6 +91,8 @@ Alert.propTypes = { buttonProps: PropTypes.object, children: PropTypes.node, className: PropTypes.string, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, dismissible: PropTypes.bool, link: PropTypes.string, linkProps: PropTypes.object, @@ -96,6 +101,7 @@ Alert.propTypes = { close: PropTypes.string }), type: PropTypes.oneOf(ALERT_TYPES), + useIcons: PropTypes.bool, onCloseClicked: PropTypes.func }; @@ -103,6 +109,7 @@ Alert.defaultProps = { localizedText: { close: 'Close' }, + useIcons: true, onCloseClicked: () => { } }; @@ -117,4 +124,4 @@ Alert.propDescriptions = { onCloseClicked: 'Callback function passing event when close button is clicked.' }; -export default Alert; +export default withStyles(Alert); diff --git a/src/Alert/__stories__/Alert.stories.js b/src/Alert/__stories__/Alert.stories.js new file mode 100644 index 000000000..818837b2b --- /dev/null +++ b/src/Alert/__stories__/Alert.stories.js @@ -0,0 +1,35 @@ +import Alert from '../Alert'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Alert', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + Default alert + + )) + .add('disable styles', () => ( + + Default alert + + )) + .add('custom styles', () => ( + + Default alert + + )); diff --git a/src/Badge/Badge.js b/src/Badge/Badge.js index 44d0f6aef..fe877e8d2 100644 --- a/src/Badge/Badge.js +++ b/src/Badge/Badge.js @@ -1,7 +1,7 @@ -import 'fundamental-styles/dist/badge.css'; import classnames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/StyleProvider'; import { BADGE_MODIFIERS, BADGE_TYPES } from '../utils/constants'; @@ -26,9 +26,11 @@ Badge.displayName = 'Badge'; Badge.propTypes = { children: PropTypes.node, className: PropTypes.string, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, modifier: PropTypes.oneOf(BADGE_MODIFIERS), type: PropTypes.oneOf(BADGE_TYPES) }; -export default Badge; +export default withStyles(Badge); diff --git a/src/Badge/Counter.js b/src/Badge/Counter.js index d25541743..44cc830a9 100644 --- a/src/Badge/Counter.js +++ b/src/Badge/Counter.js @@ -1,10 +1,10 @@ -import 'fundamental-styles/dist/counter.css'; import classnames from 'classnames'; import CustomPropTypes from '../utils/CustomPropTypes/CustomPropTypes'; import PropTypes from 'prop-types'; +import withStyles from '../utils/StyleProvider'; import React from 'react'; -const Counter = ({ localizedText, notification, children, className, ...props }) => { +const Counter = ({ localizedText, notification, children, className, customStyles, disableStyles, ...props }) => { const counterClasses = classnames( 'fd-counter', { @@ -25,6 +25,8 @@ Counter.displayName = 'Counter'; Counter.propTypes = { children: PropTypes.node, className: PropTypes.string, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, localizedText: CustomPropTypes.i18n({ counterLabel: PropTypes.string }), @@ -44,4 +46,4 @@ Counter.propDescriptions = { notification: 'Set to **true** to enable counter with notification.' }; -export default Counter; +export default withStyles(Counter); diff --git a/src/Badge/Label.js b/src/Badge/Label.js index 678591dc8..5f17332de 100644 --- a/src/Badge/Label.js +++ b/src/Badge/Label.js @@ -1,10 +1,10 @@ -import 'fundamental-styles/dist/label.css'; import classnames from 'classnames'; import { LABEL_TYPES } from '../utils/constants'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/StyleProvider'; -const Label = ({ type, children, className, ...props }) => { +const Label = ({ type, children, className, customStyles, disableStyles, ...props }) => { const labelClasses = classnames( 'fd-label', { @@ -20,7 +20,9 @@ Label.displayName = 'Label'; Label.propTypes = { children: PropTypes.node, className: PropTypes.string, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, type: PropTypes.oneOf(LABEL_TYPES) }; -export default Label; +export default withStyles(Label); diff --git a/src/Badge/Status.js b/src/Badge/Status.js index 65a56896e..5c5b4cbe3 100644 --- a/src/Badge/Status.js +++ b/src/Badge/Status.js @@ -1,10 +1,10 @@ -import 'fundamental-styles/dist/status-label.css'; import classnames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; import { STATUS_TYPES } from '../utils/constants'; +import withStyles from '../utils/StyleProvider'; -const Status = ({ type, glyph, children, className, ...props }) => { +const Status = ({ type, glyph, children, className, customStyles, disableStyles, useIcons, ...props }) => { const statusClasses = classnames( 'fd-status-label', { @@ -27,8 +27,15 @@ Status.displayName = 'Status'; Status.propTypes = { children: PropTypes.node, className: PropTypes.string, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, glyph: PropTypes.string, - type: PropTypes.oneOf(STATUS_TYPES) + type: PropTypes.oneOf(STATUS_TYPES), + useIcons: PropTypes.bool }; -export default Status; +Status.defaultProps = { + useIcons: true +}; + +export default withStyles(Status); diff --git a/src/Badge/__stories__/Badge.stories.js b/src/Badge/__stories__/Badge.stories.js new file mode 100644 index 000000000..f0ea0f77d --- /dev/null +++ b/src/Badge/__stories__/Badge.stories.js @@ -0,0 +1,21 @@ +import Badge from '../Badge'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Badge', module) + .addDecorator(withKnobs) + .add('Default', () => ( + Default + )) + .add('disable styles', () => ( + Default + )) + .add('custom styles', () => ( + + Default + + )); diff --git a/src/Badge/__stories__/Counter.stories.js b/src/Badge/__stories__/Counter.stories.js new file mode 100644 index 000000000..90e6f1ad0 --- /dev/null +++ b/src/Badge/__stories__/Counter.stories.js @@ -0,0 +1,21 @@ +import Counter from '../Counter'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Counter', module) + .addDecorator(withKnobs) + .add('Default', () => ( + 5 + )) + .add('disable styles', () => ( + 5 + )) + .add('custom styles', () => ( + + 5 + + )); diff --git a/src/Badge/__stories__/Label.stories.js b/src/Badge/__stories__/Label.stories.js new file mode 100644 index 000000000..158618522 --- /dev/null +++ b/src/Badge/__stories__/Label.stories.js @@ -0,0 +1,21 @@ +import Label from '../Label'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Label', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + )) + .add('disable styles', () => ( + + )) + .add('custom styles', () => ( + + )); diff --git a/src/Badge/__stories__/Status.stories.js b/src/Badge/__stories__/Status.stories.js new file mode 100644 index 000000000..ba7e43313 --- /dev/null +++ b/src/Badge/__stories__/Status.stories.js @@ -0,0 +1,21 @@ +import React from 'react'; +import Status from '../Status'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Status', module) + .addDecorator(withKnobs) + .add('Default', () => ( + Default + )) + .add('disable styles', () => ( + Default + )) + .add('custom styles', () => ( + + Default + + )); diff --git a/src/Breadcrumb/Breadcrumb.js b/src/Breadcrumb/Breadcrumb.js index db54f6bf1..c0ba3b935 100644 --- a/src/Breadcrumb/Breadcrumb.js +++ b/src/Breadcrumb/Breadcrumb.js @@ -1,16 +1,18 @@ -import 'fundamental-styles/dist/breadcrumb.css'; import BreadcrumbItem from './_BreadcrumbItem'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/StyleProvider'; -const Breadcrumb = ({ children, ...props }) => { +const Breadcrumb = ({ children, customStyles, disableStyles, ...props }) => { return ; }; Breadcrumb.displayName = 'Breadcrumb'; Breadcrumb.propTypes = { - children: PropTypes.node + children: PropTypes.node, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool }; Breadcrumb.propDescriptions = { @@ -19,4 +21,4 @@ Breadcrumb.propDescriptions = { Breadcrumb.Item = BreadcrumbItem; -export default Breadcrumb; +export default withStyles(Breadcrumb); diff --git a/src/Breadcrumb/__stories__/Breadcrumb.stories.js b/src/Breadcrumb/__stories__/Breadcrumb.stories.js new file mode 100644 index 000000000..00895fd37 --- /dev/null +++ b/src/Breadcrumb/__stories__/Breadcrumb.stories.js @@ -0,0 +1,31 @@ +import Breadcrumb from '../Breadcrumb'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Breadcrumb', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + + + + + )) + .add('disable styles', () => ( + + + + + + )) + .add('custom styles', () => ( + + + + + + )); diff --git a/src/Button/Button.js b/src/Button/Button.js index 02e912b64..127061553 100644 --- a/src/Button/Button.js +++ b/src/Button/Button.js @@ -1,13 +1,15 @@ -import 'fundamental-styles/dist/button.css'; import classnames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/StyleProvider'; import { BUTTON_OPTIONS, BUTTON_TYPES } from '../utils/constants'; const Button = ({ option, type, compact, + customStyles, + disableStyles, glyph, selected, disabled, @@ -15,8 +17,10 @@ const Button = ({ onClick, children, className, + useIcons, ...props }) => { + console.log('inbutton', disableStyles) const buttonClasses = classnames( { 'fd-button': !option, @@ -44,19 +48,26 @@ Button.propTypes = { children: PropTypes.node, className: PropTypes.string, compact: PropTypes.bool, + customStyles: PropTypes.object, disabled: PropTypes.bool, + disableStyles: PropTypes.bool, glyph: PropTypes.string, option: PropTypes.oneOf(BUTTON_OPTIONS), selected: PropTypes.bool, type: PropTypes.oneOf(BUTTON_TYPES), typeAttr: PropTypes.string, + useIcons: PropTypes.bool, onClick: PropTypes.func }; +Button.defaultProps = { + useIcons: true +}; + Button.propDescriptions = { option: 'Indicates the importance of the button.', selected: 'Set to **true** to set state of the button to "selected".', typeAttr: 'Value for the `type` attribute on the ` + )) + .add('props', () => ( + + )) + .add('disabled styles', () => ( + + )) + .add('dynamic requires', () => ( + + )); diff --git a/src/Button/__stories__/ButtonGroup.stories.js b/src/Button/__stories__/ButtonGroup.stories.js new file mode 100644 index 000000000..ccfa74b71 --- /dev/null +++ b/src/Button/__stories__/ButtonGroup.stories.js @@ -0,0 +1,32 @@ +import Button from '../Button'; +import ButtonGroup from '../ButtonGroup'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|ButtonGroup', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + -// -// -// -// )) -// .add('disable styles', () => ( -// -// -// -// -// -// -// -// -// )) -// .add('custom styles', () => ( -// -// -// -// -// -// -// -// -// )); +storiesOf('Components|ActionBar', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + + + + + + + + )) + .add('disable styles', () => ( + + + + + + + + + )) + .add('custom styles', () => ( + + + + + + + + + )); diff --git a/src/Alert/Alert.js b/src/Alert/Alert.js index e2cb1140e..1b81c25d2 100644 --- a/src/Alert/Alert.js +++ b/src/Alert/Alert.js @@ -50,6 +50,8 @@ class Alert extends Component { className ); + const disableCSS = disableStyles || customStyles; + return (
{this.state.isActive && ( @@ -73,6 +75,7 @@ class Alert extends Component { {link && ( {linkText}{' '} @@ -124,4 +127,4 @@ Alert.propDescriptions = { onCloseClicked: 'Callback function passing event when close button is clicked.' }; -export default withStyles(Alert); +export default withStyles(Alert, { cssFile: 'alert', fonts: true }); diff --git a/src/Badge/Badge.js b/src/Badge/Badge.js index fe877e8d2..58b698d5f 100644 --- a/src/Badge/Badge.js +++ b/src/Badge/Badge.js @@ -5,7 +5,7 @@ import withStyles from '../utils/StyleProvider'; import { BADGE_MODIFIERS, BADGE_TYPES } from '../utils/constants'; -const Badge = ({ type, modifier, children, className, ...props }) => { +const Badge = ({ type, modifier, children, className, customStyles, disableStyles, ...props }) => { const badgeClasses = classnames( 'fd-badge', { @@ -32,5 +32,4 @@ Badge.propTypes = { type: PropTypes.oneOf(BADGE_TYPES) }; -export default withStyles(Badge); - +export default withStyles(Badge, { cssFile: 'badge', fonts: true }); diff --git a/src/Badge/Counter.js b/src/Badge/Counter.js index 44cc830a9..55791a045 100644 --- a/src/Badge/Counter.js +++ b/src/Badge/Counter.js @@ -1,8 +1,8 @@ import classnames from 'classnames'; import CustomPropTypes from '../utils/CustomPropTypes/CustomPropTypes'; import PropTypes from 'prop-types'; -import withStyles from '../utils/StyleProvider'; import React from 'react'; +import withStyles from '../utils/StyleProvider'; const Counter = ({ localizedText, notification, children, className, customStyles, disableStyles, ...props }) => { const counterClasses = classnames( @@ -46,4 +46,4 @@ Counter.propDescriptions = { notification: 'Set to **true** to enable counter with notification.' }; -export default withStyles(Counter); +export default withStyles(Counter, { cssFile: 'counter', fonts: true }); diff --git a/src/Badge/Label.js b/src/Badge/Label.js index 5f17332de..2342b81c3 100644 --- a/src/Badge/Label.js +++ b/src/Badge/Label.js @@ -25,4 +25,4 @@ Label.propTypes = { type: PropTypes.oneOf(LABEL_TYPES) }; -export default withStyles(Label); +export default withStyles(Label, { cssFile: 'label', font: true }); diff --git a/src/Badge/Status.js b/src/Badge/Status.js index 5c5b4cbe3..93f675199 100644 --- a/src/Badge/Status.js +++ b/src/Badge/Status.js @@ -38,4 +38,4 @@ Status.defaultProps = { useIcons: true }; -export default withStyles(Status); +export default withStyles(Status, { cssFile: 'status-label', font: true }); diff --git a/src/Breadcrumb/Breadcrumb.js b/src/Breadcrumb/Breadcrumb.js index c0ba3b935..98ccb28ee 100644 --- a/src/Breadcrumb/Breadcrumb.js +++ b/src/Breadcrumb/Breadcrumb.js @@ -21,4 +21,4 @@ Breadcrumb.propDescriptions = { Breadcrumb.Item = BreadcrumbItem; -export default withStyles(Breadcrumb); +export default withStyles(Breadcrumb, { cssFile: 'breadcrumb', font: true }); diff --git a/src/Breadcrumb/__stories__/Breadcrumb.stories.js b/src/Breadcrumb/__stories__/Breadcrumb.stories.js index 00895fd37..37bdb5b06 100644 --- a/src/Breadcrumb/__stories__/Breadcrumb.stories.js +++ b/src/Breadcrumb/__stories__/Breadcrumb.stories.js @@ -7,25 +7,25 @@ import { storiesOf('Components|Breadcrumb', module) .addDecorator(withKnobs) - .add('Default', () => ( - - - - - - )) - .add('disable styles', () => ( - - - - - - )) - .add('custom styles', () => ( - - - - - - )); + // .add('Default', () => ( + // + // + // + // + // + // )) + // .add('disable styles', () => ( + // + // + // + // + // + // )) + // .add('custom styles', () => ( + // + // + // + // + // + // )); diff --git a/src/Button/Button.js b/src/Button/Button.js index 127061553..e03eb8093 100644 --- a/src/Button/Button.js +++ b/src/Button/Button.js @@ -20,7 +20,6 @@ const Button = ({ useIcons, ...props }) => { - console.log('inbutton', disableStyles) const buttonClasses = classnames( { 'fd-button': !option, @@ -70,4 +69,4 @@ Button.propDescriptions = { typeAttr: 'Value for the `type` attribute on the `
} + disableStyles={disableCSS} noArrow /> ); @@ -45,6 +51,8 @@ ComboboxInput.propTypes = { buttonProps: PropTypes.object, className: PropTypes.string, compact: PropTypes.bool, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, inputProps: PropTypes.object, placeholder: PropTypes.string, popoverProps: PropTypes.object @@ -54,4 +62,4 @@ ComboboxInput.propDescriptions = { menu: 'An object containing a `Menu` component.' }; -export default ComboboxInput; +export default withStyles(ComboboxInput); diff --git a/src/ComboboxInput/__stories__/ComboboxInput.stories.js b/src/ComboboxInput/__stories__/ComboboxInput.stories.js new file mode 100644 index 000000000..6833d8d22 --- /dev/null +++ b/src/ComboboxInput/__stories__/ComboboxInput.stories.js @@ -0,0 +1,60 @@ +import ComboboxInput from '../ComboboxInput'; +import Menu from '../../Menu/Menu'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|ComboboxInput', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + + Pear + Strawberry + Raspberry + + + New Item + + + + } + placeholder='Select Fruit' /> + )) + .add('disable styles', () => ( + + + Pear + Strawberry + Raspberry + + + New Item + + + + } + placeholder='Select Fruit' /> + )) + .add('custom styles', () => ( + + + Pear + Strawberry + Raspberry + + + New Item + + + + } + placeholder='Select Fruit' /> + )); diff --git a/src/DatePicker/DatePicker.js b/src/DatePicker/DatePicker.js index d59b71586..0273e0fa1 100644 --- a/src/DatePicker/DatePicker.js +++ b/src/DatePicker/DatePicker.js @@ -5,6 +5,7 @@ import Button from '../Button/Button'; import Calendar from '../Calendar/Calendar'; import classnames from 'classnames'; import PropTypes from 'prop-types'; +import withStyles from '../utils/StyleProvider'; import React, { Component } from 'react'; class DatePicker extends Component { @@ -283,9 +284,25 @@ class DatePicker extends Component { }; render() { - const { enableRangeSelection, disableWeekends, disableBeforeDate, disableAfterDate, - disableWeekday, disablePastDates, disableFutureDates, blockedDates, disabledDates, - compact, className, inputProps, buttonProps, onBlur, ...props } = this.props; + const { + blockedDates, + buttonProps, + className, + compact, + customStyles, + disableAfterDate, + disableBeforeDate, + disabledDates, + disableFutureDates, + disablePastDates, + disableStyles, + disableWeekday, + disableWeekends, + enableRangeSelection, + inputProps, + onBlur, + ...props + } = this.props; const datePickerInputGroupClasses = classnames( 'fd-input-group' @@ -321,6 +338,7 @@ class DatePicker extends Component { ); -}; +}); Button.displayName = 'Button'; diff --git a/src/Button/Button.test.js b/src/Button/Button.test.js index 24b58d1d4..7d2f2443c 100644 --- a/src/Button/Button.test.js +++ b/src/Button/Button.test.js @@ -67,4 +67,16 @@ describe('; + } + mount(); + expect(ref.current.tagName).toEqual('BUTTON'); + }); }); diff --git a/src/Button/ButtonGroup.js b/src/Button/ButtonGroup.js index 24ea591bc..eb05d36fe 100644 --- a/src/Button/ButtonGroup.js +++ b/src/Button/ButtonGroup.js @@ -1,18 +1,19 @@ import PropTypes from 'prop-types'; import React from 'react'; -import withStyles from '../utils/StyleProvider'; +import withStyles from '../utils/WithStyles'; -const ButtonGroup = ({ children, customStyles, disableStyles, ...props }) => { +const ButtonGroup = React.forwardRef(({ children, customStyles, disableStyles, ...props }, ref) => { return (
{children}
); -}; +}); ButtonGroup.displayName = 'ButtonGroup'; diff --git a/src/Button/ButtonGroup.test.js b/src/Button/ButtonGroup.test.js index e154fbafe..e3f13adcd 100644 --- a/src/Button/ButtonGroup.test.js +++ b/src/Button/ButtonGroup.test.js @@ -28,4 +28,16 @@ describe('', () => { ).toBe('Sample'); }); }); + test('forwards the ref', () => { + let ref; + class Test extends React.Component { + constructor(props) { + super(props); + ref = React.createRef(); + } + render = () => ; + } + mount(); + expect(ref.current.tagName).toEqual('DIV'); + }); }); diff --git a/src/Button/__stories__/Button.stories.js b/src/Button/__stories__/Button.stories.js index 48db30511..d538c5bbb 100644 --- a/src/Button/__stories__/Button.stories.js +++ b/src/Button/__stories__/Button.stories.js @@ -28,7 +28,7 @@ storiesOf('Components|Button', module) })}>Customizable )) .add('disabled styles', () => ( - + )) .add('dynamic requires', () => ( diff --git a/src/Calendar/Calendar.js b/src/Calendar/Calendar.js index 04705ca0f..ea2cd0533 100644 --- a/src/Calendar/Calendar.js +++ b/src/Calendar/Calendar.js @@ -2,7 +2,7 @@ import Button from '../Button/Button'; import classnames from 'classnames'; import CustomPropTypes from '../utils/CustomPropTypes/CustomPropTypes'; import PropTypes from 'prop-types'; -import withStyles from '../utils/StyleProvider'; +import withStyles from '../utils/WithStyles'; import React, { Component } from 'react'; class Calendar extends Component { diff --git a/src/ComboboxInput/ComboboxInput.js b/src/ComboboxInput/ComboboxInput.js index 2eaccaca2..7158e3357 100644 --- a/src/ComboboxInput/ComboboxInput.js +++ b/src/ComboboxInput/ComboboxInput.js @@ -1,13 +1,12 @@ -import 'fundamental-styles/dist/input-group.css'; import Button from '../Button/Button'; import classnames from 'classnames'; import FormInput from '../Forms/FormInput'; import Popover from '../Popover/Popover'; import PropTypes from 'prop-types'; import React from 'react'; -import withStyles from '../utils/StyleProvider'; +import withStyles from '../utils/WithStyles'; -const ComboboxInput = ({ placeholder, menu, compact, className, customStyles, disableStyles, popoverProps, inputProps, buttonProps, ...props }) => { +const ComboboxInput = React.forwardRef(({ placeholder, menu, compact, className, customStyles, disableStyles, popoverProps, inputProps, buttonProps, ...props }, ref) => { const comboboxPopoverClasses = classnames( 'fd-input-group' ); @@ -15,7 +14,8 @@ const ComboboxInput = ({ placeholder, menu, compact, className, customStyles, di const disableCSS = disableStyles || customStyles; return ( -
+
); -}; +}); ComboboxInput.displayName = 'ComboboxInput'; @@ -62,4 +62,4 @@ ComboboxInput.propDescriptions = { menu: 'An object containing a `Menu` component.' }; -export default withStyles(ComboboxInput); +export default withStyles(ComboboxInput, { cssFile: 'input-group' }); diff --git a/src/ComboboxInput/ComboboxInput.test.js b/src/ComboboxInput/ComboboxInput.test.js index fb61c0566..1605baebd 100644 --- a/src/ComboboxInput/ComboboxInput.test.js +++ b/src/ComboboxInput/ComboboxInput.test.js @@ -77,4 +77,16 @@ describe('', () => { ).toBe('Sample'); }); }); + test('forwards the ref', () => { + let ref; + class Test extends React.Component { + constructor(props) { + super(props); + ref = React.createRef(); + } + render = () => ; + } + mount(); + expect(ref.current.tagName).toEqual('DIV'); + }); }); diff --git a/src/DatePicker/DatePicker.js b/src/DatePicker/DatePicker.js index 0273e0fa1..db648b945 100644 --- a/src/DatePicker/DatePicker.js +++ b/src/DatePicker/DatePicker.js @@ -1,11 +1,8 @@ -import 'fundamental-styles/dist/popover.css'; -import 'fundamental-styles/dist/input-group.css'; -import 'fundamental-styles/dist/input.css'; import Button from '../Button/Button'; import Calendar from '../Calendar/Calendar'; import classnames from 'classnames'; import PropTypes from 'prop-types'; -import withStyles from '../utils/StyleProvider'; +import withStyles from '../utils/WithStyles'; import React, { Component } from 'react'; class DatePicker extends Component { @@ -338,7 +335,7 @@ class DatePicker extends Component { } + id='jhqD0555' + noArrow /> + + )) + .add('disable styles', () => ( + + + + Option 1 + Option 2 + Option 3 + Option 4 + + + } + control={} + id='jhqD0555' + noArrow /> + + )) + .add('custom styles', () => ( + + + + Option 1 + Option 2 + Option 3 + Option 4 + + + } + control={} + id='jhqD0555' + noArrow /> + + )); diff --git a/src/Forms/Checkbox.js b/src/Forms/Checkbox.js index eec18c881..f07b9f0cc 100644 --- a/src/Forms/Checkbox.js +++ b/src/Forms/Checkbox.js @@ -1,4 +1,3 @@ -import 'fundamental-styles/dist/checkbox.css'; import classnames from 'classnames'; import FormItem from './FormItem'; import FormLabel from './FormLabel'; @@ -15,7 +14,7 @@ const getCheckStatus = (checked, indeterminate) => { } }; -const Checkbox = ({ checked, className, defaultChecked, disabled, id, indeterminate, inline, inputProps, labelProps, name, onChange, value, ...props }) => { +const Checkbox = React.forwardRef(({ checked, className, defaultChecked, disabled, id, indeterminate, inline, inputProps, labelProps, name, onChange, value, ...props }, ref) => { const classes = classnames( className, 'fd-checkbox' @@ -25,7 +24,8 @@ const Checkbox = ({ checked, className, defaultChecked, disabled, id, indetermin + isInline={inline} + ref={ref}> ); -}; +}); Checkbox.displayName = 'Checkbox'; diff --git a/src/Forms/Checkbox.test.js b/src/Forms/Checkbox.test.js index 8173a5760..ce2169802 100644 --- a/src/Forms/Checkbox.test.js +++ b/src/Forms/Checkbox.test.js @@ -82,4 +82,16 @@ describe('', () => { ).toBe('Sample'); }); }); + test('forwards the ref', () => { + let ref; + class Test extends React.Component { + constructor(props) { + super(props); + ref = React.createRef(); + } + render = () => ; + } + mount(); + expect(ref.current.tagName).toEqual('DIV'); + }); }); diff --git a/src/utils/StyleProvider.js b/src/utils/WithStyles.js similarity index 91% rename from src/utils/StyleProvider.js rename to src/utils/WithStyles.js index 9398a98fe..9df880fa5 100644 --- a/src/utils/StyleProvider.js +++ b/src/utils/WithStyles.js @@ -38,7 +38,11 @@ export default function withStyles(WrappedComponent, defaults) { } return ( - + ); } } diff --git a/src/utils/customStylesTest.css b/src/utils/customStylesTest.css index 45afb5846..2cbf3a9c8 100644 --- a/src/utils/customStylesTest.css +++ b/src/utils/customStylesTest.css @@ -1,6 +1,6 @@ .fd-alert, .fd-button, .fd-badge, .fd-breadcrumb, .fd-button-group, -.fd-counter, +.fd-counter, .fd-calendar, .fd-label, .fd-status-label, .fd-form-input, .fd-popover { From 071c855efc5cf53b9470fff0db0061553f0c2337 Mon Sep 17 00:00:00 2001 From: jbadan Date: Wed, 25 Sep 2019 13:40:56 -0700 Subject: [PATCH 04/63] wip --- config/webpack.config.dev.js | 1 - 1 file changed, 1 deletion(-) diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js index c5c0390cb..b6c811516 100644 --- a/config/webpack.config.dev.js +++ b/config/webpack.config.dev.js @@ -95,7 +95,6 @@ module.exports = { runtimeChunk: true }, resolve: { - modules: ['node_modules'], extensions: ['.js', '.jsx', '.json', '.es6', '.css'], symlinks: false }, From 0442ee1dd4ea1fee1ad6d30095676ff792a03f57 Mon Sep 17 00:00:00 2001 From: jbadan Date: Wed, 25 Sep 2019 15:38:58 -0700 Subject: [PATCH 05/63] input group --- src/Forms/Checkbox.js | 25 ++++++++-- src/Forms/Checkbox.test.js | 1 + src/Forms/FormRadioGroup.js | 7 ++- src/Forms/__stories__/Checkbox.stories.js | 21 ++++++++ .../__stories__/FormRadioGroup.stories.js | 49 +++++++++++++++++++ src/InputGroup/InputGroup.js | 26 +++++++--- .../__stories__/InputGroup.stories.js | 36 ++++++++++++++ src/utils/customStylesTest.css | 3 +- 8 files changed, 154 insertions(+), 14 deletions(-) create mode 100644 src/Forms/__stories__/Checkbox.stories.js create mode 100644 src/Forms/__stories__/FormRadioGroup.stories.js create mode 100644 src/InputGroup/__stories__/InputGroup.stories.js diff --git a/src/Forms/Checkbox.js b/src/Forms/Checkbox.js index f07b9f0cc..1d2d0a29d 100644 --- a/src/Forms/Checkbox.js +++ b/src/Forms/Checkbox.js @@ -2,7 +2,8 @@ import classnames from 'classnames'; import FormItem from './FormItem'; import FormLabel from './FormLabel'; import PropTypes from 'prop-types'; -import React from 'react'; +import withStyles from '../utils/WithStyles'; +import React, { useEffect, useRef } from 'react'; const getCheckStatus = (checked, indeterminate) => { if (indeterminate) { @@ -14,19 +15,31 @@ const getCheckStatus = (checked, indeterminate) => { } }; -const Checkbox = React.forwardRef(({ checked, className, defaultChecked, disabled, id, indeterminate, inline, inputProps, labelProps, name, onChange, value, ...props }, ref) => { +const Checkbox = React.forwardRef(({ checked, className, customStyles, defaultChecked, disabled, disableStyles, id, indeterminate, inline, inputProps, labelProps, name, onChange, value, ...props }, ref) => { + + const inputEl = useRef(); + + useEffect(() => { + return inputEl && (inputEl.current.indeterminate = indeterminate); + }); + const classes = classnames( className, 'fd-checkbox' ); + const disableCSS = disableStyles || customStyles; + return ( - + { onChange(e, !checked); }} - ref={el => el && (el.indeterminate = indeterminate)} + ref={inputEl} type='checkbox' /> {value} @@ -51,8 +64,10 @@ Checkbox.displayName = 'Checkbox'; Checkbox.propTypes = { checked: PropTypes.bool, className: PropTypes.string, + customStyles: PropTypes.object, defaultChecked: PropTypes.bool, disabled: PropTypes.bool, + disableStyles: PropTypes.bool, id: PropTypes.string, indeterminate: PropTypes.bool, inline: PropTypes.bool, @@ -78,4 +93,4 @@ Checkbox.propDescriptions = { value: 'Sets the `value` for the checkbox input.' }; -export default Checkbox; +export default withStyles(Checkbox, { cssFile: 'checkbox' }); diff --git a/src/Forms/Checkbox.test.js b/src/Forms/Checkbox.test.js index ce2169802..ddcaf3e21 100644 --- a/src/Forms/Checkbox.test.js +++ b/src/Forms/Checkbox.test.js @@ -92,6 +92,7 @@ describe('', () => { render = () => ; } mount(); + console.log(ref) expect(ref.current.tagName).toEqual('DIV'); }); }); diff --git a/src/Forms/FormRadioGroup.js b/src/Forms/FormRadioGroup.js index 8803bdbf8..7bd5a2f53 100644 --- a/src/Forms/FormRadioGroup.js +++ b/src/Forms/FormRadioGroup.js @@ -1,5 +1,6 @@ import PropTypes from 'prop-types'; import shortId from '../utils/shortId'; +import withStyles from '../utils/WithStyles'; import React, { Component } from 'react'; class FormRadioGroup extends Component { @@ -10,7 +11,7 @@ class FormRadioGroup extends Component { } render() { - const { children, disabled, inline, onChange, ...props } = this.props; + const { children, customStyles, disabled, disableStyles, inline, onChange, ...props } = this.props; return (
( + + )) + .add('indeterminate', () => ( + + )) + .add('disable styles', () => ( + + )) + .add('custom styles', () => ( + + )); diff --git a/src/Forms/__stories__/FormRadioGroup.stories.js b/src/Forms/__stories__/FormRadioGroup.stories.js new file mode 100644 index 000000000..28d5949dc --- /dev/null +++ b/src/Forms/__stories__/FormRadioGroup.stories.js @@ -0,0 +1,49 @@ +import FormRadioGroup from '../FormRadioGroup'; +import FormRadioItem from '../FormRadioItem'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|FormRadioGroup', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + + Option 1 + + + Option 2 + + + Option 3 + + + )) + .add('disable styles', () => ( + + + Option 1 + + + Option 2 + + + Option 3 + + + )) + .add('custom styles', () => ( + + + Option 1 + + + Option 2 + + + Option 3 + + + )); diff --git a/src/InputGroup/InputGroup.js b/src/InputGroup/InputGroup.js index d01dcb6c0..7b528b9bd 100644 --- a/src/InputGroup/InputGroup.js +++ b/src/InputGroup/InputGroup.js @@ -1,9 +1,10 @@ -import 'fundamental-styles/dist/input-group.css'; import Button from '../Button/Button'; import classnames from 'classnames'; import CustomPropTypes from '../utils/CustomPropTypes/CustomPropTypes'; import FormInput from '../Forms/FormInput'; +import Icon from '../Icon/Icon'; import PropTypes from 'prop-types'; +import withStyles from '../utils/WithStyles'; import { INPUT_GROUP_ADDON_POSITIONS, INPUT_GROUP_TYPES } from '../utils/constants'; import React, { Component } from 'react'; @@ -61,6 +62,8 @@ class InputGroup extends Component { children, className, compact, + customStyles, + disableStyles, glyph, inputClassName, inputType, @@ -91,6 +94,8 @@ class InputGroup extends Component { 'fd-input-group__input' ); + const disableCSS = disableStyles || customStyles; + switch (inputType) { case 'number': @@ -108,6 +113,7 @@ class InputGroup extends Component { {...inputProps} className={inputNumberClasses} compact={compact} + disableStyles={disableCSS} id={inputId} name={inputName} onChange={this.handleTextChange} @@ -119,6 +125,7 @@ class InputGroup extends Component { aria-label={localizedText.up} className='fd-button--half' compact={compact} + disableStyles={disableCSS} glyph='slim-arrow-up' onClick={this.handleUp} option='light' /> @@ -127,6 +134,7 @@ class InputGroup extends Component { aria-label={localizedText.down} className='fd-button--half' compact={compact} + disableStyles={disableCSS} glyph='slim-arrow-down' onClick={this.handleDown} option='light' /> @@ -147,8 +155,9 @@ class InputGroup extends Component { ) : ( {glyph ? ( - ) : ( addon @@ -159,6 +168,7 @@ class InputGroup extends Component { {...inputProps} className={inputClasses} compact={compact} + disableStyles={disableCSS} id={inputId} name={inputName} onChange={this.handleTextChange} @@ -174,6 +184,7 @@ class InputGroup extends Component { {...inputProps} className={inputClasses} compact={compact} + disableStyles={disableCSS} id={inputId} name={inputName} onChange={this.handleTextChange} @@ -185,8 +196,9 @@ class InputGroup extends Component { ) : ( {glyph ? ( - ) : ( addon @@ -211,6 +223,8 @@ InputGroup.propTypes = { children: PropTypes.node, className: PropTypes.string, compact: PropTypes.bool, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, glyph: PropTypes.string, inputClassName: PropTypes.string, inputId: PropTypes.string, @@ -259,4 +273,4 @@ InputGroup.propDescriptions = { numberUpButtonProps: 'Additional props to be spread to the up `
- } /> + } + disableStyles={disableCSS} />
); } @@ -190,6 +197,8 @@ SearchInput.displayName = 'SearchInput'; SearchInput.propTypes = { className: PropTypes.string, compact: PropTypes.bool, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, inputProps: PropTypes.object, inShellbar: PropTypes.bool, listProps: PropTypes.object, @@ -219,4 +228,4 @@ SearchInput.propDescriptions = { searchList: 'Collection of items to display in the dropdown list.' }; -export default SearchInput; +export default withStyles(SearchInput, { cssFile: 'input-group' }); diff --git a/src/SearchInput/__stories__/SearchInput.stories.js b/src/SearchInput/__stories__/SearchInput.stories.js new file mode 100644 index 000000000..1a3b9acb2 --- /dev/null +++ b/src/SearchInput/__stories__/SearchInput.stories.js @@ -0,0 +1,38 @@ +import React from 'react'; +import SearchInput from '../SearchInput'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +const searchData = [ + { text: 'apple', callback: () => alert('apple') }, + { text: 'apricot', callback: () => alert('apricot') }, + { text: 'banana', callback: () => alert('banana') }, + { text: 'blueberry', callback: () => alert('blueberry') }, + { text: 'blackberry', callback: () => alert('blackberry') }, + { text: 'calabash', callback: () => alert('calabash') }, + { text: 'clementines', callback: () => alert('clementines') }, + { text: 'kiwi', callback: () => alert('kiwi') }, + { text: 'orange', callback: () => alert('orange') } +]; + +storiesOf('Components|SearchInput', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + )) + .add('disable styles', () => ( + + )) + .add('custom styles', () => ( + + )); diff --git a/src/Shellbar/Shellbar.js b/src/Shellbar/Shellbar.js index 2c10c9a4c..d91f62497 100644 --- a/src/Shellbar/Shellbar.js +++ b/src/Shellbar/Shellbar.js @@ -1,4 +1,3 @@ -import 'fundamental-styles/dist/shellbar.css'; import Button from '../Button/Button'; import classnames from 'classnames'; import Counter from '../Badge/Counter'; @@ -9,6 +8,7 @@ import Menu from '../Menu/Menu'; import Popover from '../Popover/Popover'; import PropTypes from 'prop-types'; import SearchInput from '../SearchInput/SearchInput'; +import withStyles from '../utils/WithStyles/WithStyles'; import React, { Component } from 'react'; class Shellbar extends Component { @@ -89,6 +89,8 @@ class Shellbar extends Component { render() { const { + customStyles, + disableStyles, localizedText, logo, logoSAP, @@ -111,6 +113,8 @@ class Shellbar extends Component { className ); + const disableCSS = disableStyles || customStyles ? true : false; + return (
@@ -126,7 +130,7 @@ class Shellbar extends Component { + {productMenu.map((item, index) => { return ( @@ -156,6 +160,7 @@ class Shellbar extends Component { } + disableStyles={disableCSS} noArrow />
)} @@ -175,6 +180,7 @@ class Shellbar extends Component {
{action.notificationCount > 0 && ( {action.notificationCount} )} } + disableStyles={disableCSS} placement='bottom-end' /> ) : (
} + disableStyles={disableCSS} placement='bottom-end' /> ) : (
} + disableStyles={disableCSS} placement='bottom-end' />
} @@ -325,7 +344,7 @@ class Shellbar extends Component { + {profile.userName} {profileMenu.map((item, index) => { @@ -337,7 +356,9 @@ class Shellbar extends Component { url={item.url} > {item.glyph && ( - +     )} @@ -353,16 +374,19 @@ class Shellbar extends Component { profile.image ? ( ) : ( {profile.initials} ) } + disableStyles={disableCSS} placement='bottom-end' /> @@ -394,8 +418,11 @@ class Shellbar extends Component { } - control={ diff --git a/src/Alert/Alert.js b/src/Alert/Alert.js index bb9aa7a8b..4ce39ba58 100644 --- a/src/Alert/Alert.js +++ b/src/Alert/Alert.js @@ -37,7 +37,6 @@ class Alert extends Component { dismissible, children, className, - useIcons, ...props } = this.props; @@ -104,7 +103,6 @@ Alert.propTypes = { close: PropTypes.string }), type: PropTypes.oneOf(ALERT_TYPES), - useIcons: PropTypes.bool, onCloseClicked: PropTypes.func }; @@ -112,7 +110,6 @@ Alert.defaultProps = { localizedText: { close: 'Close' }, - useIcons: true, onCloseClicked: () => { } }; @@ -127,4 +124,4 @@ Alert.propDescriptions = { onCloseClicked: 'Callback function passing event when close button is clicked.' }; -export default withStyles(Alert, { cssFile: 'alert', fonts: true }); +export default withStyles(Alert, { cssFile: 'alert', fonts: true, icons: true }); diff --git a/src/Badge/Status.js b/src/Badge/Status.js index b4efab745..95ec589eb 100644 --- a/src/Badge/Status.js +++ b/src/Badge/Status.js @@ -4,7 +4,7 @@ import React from 'react'; import { STATUS_TYPES } from '../utils/constants'; import withStyles from '../utils/WithStyles/WithStyles'; -const Status = React.forwardRef(({ type, glyph, children, className, customStyles, disableStyles, useIcons, ...props }, ref) => { +const Status = React.forwardRef(({ type, glyph, children, className, customStyles, disableStyles, ...props }, ref) => { const statusClasses = classnames( 'fd-status-label', { @@ -31,12 +31,7 @@ Status.propTypes = { customStyles: PropTypes.object, disableStyles: PropTypes.bool, glyph: PropTypes.string, - type: PropTypes.oneOf(STATUS_TYPES), - useIcons: PropTypes.bool + type: PropTypes.oneOf(STATUS_TYPES) }; -Status.defaultProps = { - useIcons: true -}; - -export default withStyles(Status, { cssFile: 'status-label', font: true }); +export default withStyles(Status, { cssFile: 'status-label', font: true, icons: true }); diff --git a/src/Button/Button.js b/src/Button/Button.js index 97d18cdd3..beae893c5 100644 --- a/src/Button/Button.js +++ b/src/Button/Button.js @@ -17,7 +17,6 @@ const Button = React.forwardRef(({ onClick, children, className, - useIcons, ...props }, ref) => { const buttonClasses = classnames( @@ -56,18 +55,13 @@ Button.propTypes = { selected: PropTypes.bool, type: PropTypes.oneOf(BUTTON_TYPES), typeAttr: PropTypes.string, - useIcons: PropTypes.bool, onClick: PropTypes.func }; -Button.defaultProps = { - useIcons: true -}; - Button.propDescriptions = { option: 'Indicates the importance of the button.', selected: 'Set to **true** to set state of the button to "selected".', typeAttr: 'Value for the `type` attribute on the ` + + + + )) .add('props', () => ( - + + )) .add('custom styles', () => ( - + - - + + )); diff --git a/src/ListGroup/__stories__/ListGroup.stories.js b/src/ListGroup/__stories__/ListGroup.stories.js index 5fc69e49c..f3674a9ce 100644 --- a/src/ListGroup/__stories__/ListGroup.stories.js +++ b/src/ListGroup/__stories__/ListGroup.stories.js @@ -9,23 +9,35 @@ storiesOf('Components|ListGroup', module) .addDecorator(withKnobs) .add('Default', () => ( -
Default1
-
Default2
-
Default3
+ List item 1 + List item 2 + + + + + List item 1
)) .add('disable styles', () => ( -
Default1
-
Default2
-
Default3
+ List item 1 + List item 2 + + + + + List item 1
)) .add('custom styles', () => ( -
Default1
-
Default2
-
Default3
+ List item 1 + List item 2 + + + + + List item 1
)); From 9afc12fb41919c0922dc3248434d440603313176 Mon Sep 17 00:00:00 2001 From: "h.van.seeters" Date: Thu, 26 Sep 2019 15:00:26 -0700 Subject: [PATCH 30/63] LocalizationEditor --- src/LocalizationEditor/LocalizationEditor.js | 15 ++-- .../LocalizationEditor.test.js | 20 +++++ .../__stories__/LocalizationEditor.stories.js | 77 +++++++++++++++++++ src/utils/customStylesTest.css | 4 +- 4 files changed, 108 insertions(+), 8 deletions(-) create mode 100644 src/LocalizationEditor/__stories__/LocalizationEditor.stories.js diff --git a/src/LocalizationEditor/LocalizationEditor.js b/src/LocalizationEditor/LocalizationEditor.js index 4b024c538..57d91ac22 100644 --- a/src/LocalizationEditor/LocalizationEditor.js +++ b/src/LocalizationEditor/LocalizationEditor.js @@ -1,5 +1,3 @@ -import 'fundamental-styles/dist/input-group.css'; //remove when replaced with InputGroup component -import 'fundamental-styles/dist/localization-editor.css'; import Button from '../Button/Button'; import classnames from 'classnames'; import FormInput from '../Forms/FormInput'; @@ -9,9 +7,11 @@ import Menu from '../Menu/Menu'; import Popover from '../Popover/Popover'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/WithStyles/WithStyles'; -const LocalizationEditor = ({ control, menu, id, compact, textarea, className, inputClassName, listProps, popoverProps, ...props }) => { +const LocalizationEditor = React.forwardRef(({ control, menu, id, compact, textarea, className, inputClassName, listProps, popoverProps, + customStyles, disableStyles, ...props }, ref) => { const localizationEditorClasses = classnames( 'fd-localization-editor', @@ -24,7 +24,8 @@ const LocalizationEditor = ({ control, menu, id, compact, textarea, className, i ); return ( -
+
@@ -102,7 +103,7 @@ const LocalizationEditor = ({ control, menu, id, compact, textarea, className, i noArrow />
); -}; +}); LocalizationEditor.displayName = 'LocalizationEditor'; @@ -124,6 +125,8 @@ LocalizationEditor.propTypes = { ).isRequired, className: PropTypes.string, compact: PropTypes.bool, + customStyles: PropTypes.object, + disableStyles: PropTypes.bool, id: PropTypes.string, inputClassName: PropTypes.string, listProps: PropTypes.object, @@ -141,4 +144,4 @@ LocalizationEditor.propDescriptions = { textarea: 'Set to **true** to enable a Localization Editor with a textarea.' }; -export default LocalizationEditor; +export default withStyles(LocalizationEditor, { cssFile: ['input-group', 'localization-editor'] }); diff --git a/src/LocalizationEditor/LocalizationEditor.test.js b/src/LocalizationEditor/LocalizationEditor.test.js index 9985d616e..28627f147 100644 --- a/src/LocalizationEditor/LocalizationEditor.test.js +++ b/src/LocalizationEditor/LocalizationEditor.test.js @@ -272,4 +272,24 @@ describe('', () => { ).toBe('Sample 3'); }); }); + + test('forwards the ref', () => { + const menu = [ + { placeholder: 'Enter Label', language: 'ES', inputProps: { 'data-sample': 'Sample 1' } }, + { placeholder: 'Enter Label', language: 'CH', inputProps: { 'data-sample': 'Sample 2' } }, + { placeholder: 'Enter Label', language: 'PL', inputProps: { 'data-sample': 'Sample 3' } } + ]; + + let ref; + class Test extends React.Component { + constructor(props) { + super(props); + ref = React.createRef(); + } + render = () => (); + } + mount(); + expect(ref.current.tagName).toEqual('DIV'); + }); }); diff --git a/src/LocalizationEditor/__stories__/LocalizationEditor.stories.js b/src/LocalizationEditor/__stories__/LocalizationEditor.stories.js new file mode 100644 index 000000000..a61322212 --- /dev/null +++ b/src/LocalizationEditor/__stories__/LocalizationEditor.stories.js @@ -0,0 +1,77 @@ +import LocalizationEditor from '../LocalizationEditor'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|LocalizationEditor', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + )) + .add('disable styles', () => ( + + )) + .add('custom styles', () => ( + + )); diff --git a/src/utils/customStylesTest.css b/src/utils/customStylesTest.css index b0c0194c2..1c3965b94 100644 --- a/src/utils/customStylesTest.css +++ b/src/utils/customStylesTest.css @@ -3,8 +3,8 @@ .fd-counter, .fd-calendar, .fd-checkbox, .fd-fieldset, .fd-fieldset__legend, .fd-form-group, .fd-form-input, .fd-form-item, .fd-form-label, .fd-form-message, .fd-form-select, .fd-label, .fd-status-label, -.fd-identifier, .fd-inline-help, .fd-input, .fd-input-group, -.fd-layout-grid, .fd-link, .fd-list-group, +.fd-identifier, .fd-inline-help, .fd-input, .fd-input-group, .fd-input-group__input, +.fd-layout-grid, .fd-link, .fd-list-group, .fd-localization-editor, .fd-modal, .fd-multi-input, .fd-overlay, .fd-textarea, From a1e2fb193a0679d64f880f2b84d625b0158ced55 Mon Sep 17 00:00:00 2001 From: "h.van.seeters" Date: Thu, 26 Sep 2019 16:36:01 -0700 Subject: [PATCH 31/63] panel --- src/Panel/Panel.js | 19 +++++++++++-------- src/Panel/Panel.test.js | 13 +++++++++++++ src/Panel/__stories__/Panel.stories.js | 21 +++++++++++++++++++++ src/utils/customStylesTest.css | 4 ++-- 4 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 src/Panel/__stories__/Panel.stories.js diff --git a/src/Panel/Panel.js b/src/Panel/Panel.js index dac1deee0..391d6a44b 100644 --- a/src/Panel/Panel.js +++ b/src/Panel/Panel.js @@ -1,5 +1,3 @@ -import 'fundamental-styles/dist/layout-grid.css'; //needed for fd-layout-grid__span-column -import 'fundamental-styles/dist/panel.css'; import classnames from 'classnames'; import CustomPropTypes from '../utils/CustomPropTypes/CustomPropTypes'; import PanelActions from './_PanelActions'; @@ -10,9 +8,9 @@ import PanelHead from './_PanelHead'; import PanelHeader from './_PanelHeader'; import PropTypes from 'prop-types'; import React from 'react'; +import withStyles from '../utils/WithStyles/WithStyles'; -const Panel = props => { - const { colSpan, children, className, ...rest } = props; +const Panel = React.forwardRef(({ colSpan, children, className, customStyles, disableStyles, ...props }, ref) => { const panelClasses = classnames( 'fd-panel', @@ -22,15 +20,20 @@ const Panel = props => { className ); - return
{children}
; -}; + return (
+ {children} +
); +}); Panel.displayName = 'Panel'; Panel.propTypes = { children: PropTypes.node, className: PropTypes.string, - colSpan: CustomPropTypes.range(2, 6) + colSpan: CustomPropTypes.range(2, 6), + customStyles: PropTypes.object, + disableStyles: PropTypes.bool }; Panel.propDescriptions = { @@ -44,4 +47,4 @@ Panel.Footer = PanelFooter; Panel.Head = PanelHead; Panel.Header = PanelHeader; -export default Panel; +export default withStyles(Panel, { cssFile: ['layout-grid', 'panel'] }); diff --git a/src/Panel/Panel.test.js b/src/Panel/Panel.test.js index 21c5326b8..cd7b4e465 100644 --- a/src/Panel/Panel.test.js +++ b/src/Panel/Panel.test.js @@ -72,4 +72,17 @@ describe('', () => { ).toBe('Sample'); }); }); + + test('forwards the ref', () => { + let ref; + class Test extends React.Component { + constructor(props) { + super(props); + ref = React.createRef(); + } + render = () => ; + } + mount(); + expect(ref.current.tagName).toEqual('DIV'); + }); }); diff --git a/src/Panel/__stories__/Panel.stories.js b/src/Panel/__stories__/Panel.stories.js new file mode 100644 index 000000000..362a7c805 --- /dev/null +++ b/src/Panel/__stories__/Panel.stories.js @@ -0,0 +1,21 @@ +import Panel from '../Panel'; +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { + withKnobs +} from '@storybook/addon-knobs'; + +storiesOf('Components|Panel', module) + .addDecorator(withKnobs) + .add('Default', () => ( + Default + )) + .add('disable styles', () => ( + Default + )) + .add('custom styles', () => ( + + Default + + )); diff --git a/src/utils/customStylesTest.css b/src/utils/customStylesTest.css index 1c3965b94..eafd8e711 100644 --- a/src/utils/customStylesTest.css +++ b/src/utils/customStylesTest.css @@ -7,9 +7,9 @@ .fd-layout-grid, .fd-link, .fd-list-group, .fd-localization-editor, .fd-modal, .fd-multi-input, .fd-overlay, -.fd-textarea, -.fd-pagination, .fd-popover, .fd-product-tile, +.fd-pagination, .fd-panel, .fd-popover, .fd-product-tile, .fd-shellbar, .fd-side-nav, +.fd-textarea, .fd-tabs, .fd-tile, .fd-time, .fd-toggle, .fd-tree { background-color: hotpink; } From 9d7a95917caf72ea97093e247b93fe2576d5119f Mon Sep 17 00:00:00 2001 From: jbadan Date: Thu, 26 Sep 2019 17:03:48 -0700 Subject: [PATCH 32/63] test updates (not complete) --- src/Alert/Alert.test.js | 6 ++--- src/Calendar/Calendar.test.js | 28 +++++++++---------- src/DatePicker/DatePicker.test.js | 42 ++++++++++++++--------------- src/InputGroup/InputGroup.test.js | 4 +-- src/MultiInput/MultiInput.test.js | 22 +++++++-------- src/Pagination/Pagination.test.js | 10 +++---- src/Popover/Popover.test.js | 8 +++--- src/SearchInput/SearchInput.test.js | 28 +++++++++---------- src/Shellbar/Shellbar.test.js | 2 +- src/SideNavigation/SideNav.test.js | 4 +-- src/Tabs/TabGroup.test.js | 2 +- src/Tile/Tile.test.js | 2 +- src/Time/Time.test.js | 2 +- src/TimePicker/TimePicker.test.js | 28 +++++++++---------- src/Toggle/Toggle.test.js | 7 +++-- 15 files changed, 95 insertions(+), 100 deletions(-) diff --git a/src/Alert/Alert.test.js b/src/Alert/Alert.test.js index 0376f7bc7..d01456cba 100644 --- a/src/Alert/Alert.test.js +++ b/src/Alert/Alert.test.js @@ -34,9 +34,9 @@ describe('', () => { tree = component.toJSON(); expect(tree).toMatchSnapshot(); - let wrapper = mount(basicAlert); + let wrapper = mount(basicAlert).children().children(); - expect(wrapper.childAt(0).state(['isActive'])).toBeTruthy(); + expect(wrapper.state(['isActive'])).toBeTruthy(); wrapper.find('button.fd-alert__close').simulate('click'); expect(wrapper.state(['isActive'])).toBeFalsy(); }); @@ -72,7 +72,7 @@ describe('', () => { }); test('should allow props to be spread to the Alert component\'s a element when link provided', () => { - const element = mount(); + const element = mount(); expect( element.find('a').getDOMNode().attributes['data-sample'].value diff --git a/src/Calendar/Calendar.test.js b/src/Calendar/Calendar.test.js index 3f08635eb..24fab8a9b 100644 --- a/src/Calendar/Calendar.test.js +++ b/src/Calendar/Calendar.test.js @@ -47,7 +47,7 @@ describe('', () => { }); test('show/hide months', () => { - let wrapper = mount(defaultCalendar); + let wrapper = mount(defaultCalendar).children().children(); expect(wrapper.state('showMonths')).toBeFalsy(); wrapper .find( @@ -69,7 +69,7 @@ describe('', () => { }); test('click month from list', () => { - let wrapper = mount(defaultCalendar); + let wrapper = mount(defaultCalendar).children().children(); expect(wrapper.state('showMonths')).toBeFalsy(); @@ -102,7 +102,7 @@ describe('', () => { }); test('click month from list with date range', () => { - let wrapper = mount(rangeSelect); + let wrapper = mount(rangeSelect).children().children(); expect(wrapper.state('showMonths')).toBeFalsy(); //set baseline initial date @@ -131,7 +131,7 @@ describe('', () => { }); test('show/hide years', () => { - let wrapper = mount(defaultCalendar); + let wrapper = mount(defaultCalendar).children().children(); expect(wrapper.state('showYears')).toBeFalsy(); wrapper .find( @@ -155,7 +155,7 @@ describe('', () => { test('click year from list', () => { let wrapper = mount(defaultCalendar); const currentDateDisplayed = Object.assign(new Date(), wrapper.state('currentDateDisplayed')); - expect(wrapper.state('showYears')).toBeFalsy(); + expect(wrapper.children().children().state('showYears')).toBeFalsy(); wrapper .find( 'header.fd-calendar__header button.fd-button--light.fd-button--compact' @@ -170,14 +170,14 @@ describe('', () => { .at(3) .simulate('click'); - let newDateDisplayed = new Date(wrapper.state('currentDateDisplayed')); + let newDateDisplayed = new Date(wrapper.children().children().state('currentDateDisplayed')); expect(newDateDisplayed.getFullYear()).toEqual( currentDateDisplayed.getFullYear() + 3 ); }); test('click disabled day', () => { - const wrapper = mount(disabledWeekEnds); + const wrapper = mount(disabledWeekEnds).children().children(); // select day of month wrapper .find( @@ -201,7 +201,7 @@ describe('', () => { }); test('click year from list from range selector', () => { - let wrapper = mount(rangeSelect); + let wrapper = mount(rangeSelect).children().children(); const currentDateDisplayed = Object.assign(new Date(), wrapper.state('currentDateDisplayed')); expect(wrapper.state('showYears')).toBeFalsy(); wrapper @@ -225,7 +225,7 @@ describe('', () => { }); test('click previous button', () => { - let wrapper = mount(defaultCalendar); + let wrapper = mount(defaultCalendar).children().children(); let initialDate = new Date('3/28/2019'); wrapper.setState({ currentDateDisplayed: initialDate }); @@ -262,7 +262,7 @@ describe('', () => { }); test('click next button', () => { - let wrapper = mount(defaultCalendar); + let wrapper = mount(defaultCalendar).children().children(); let initialDate = new Date('3/28/2019'); wrapper.setState({ currentDateDisplayed: initialDate }); @@ -301,7 +301,7 @@ describe('', () => { // broken test for 31st of month -> needs to be tested once calendar is refactored. xtest('click next button on the 31st of month', () => { - let wrapper = mount(defaultCalendar); + let wrapper = mount(defaultCalendar).children().children(); let initialDate = new Date('5/31/2019'); wrapper.setState({ currentDateDisplayed: initialDate }); @@ -318,7 +318,7 @@ describe('', () => { }); test('click on day', () => { - const wrapper = mount(defaultCalendar); + const wrapper = mount(defaultCalendar).children().children(); // select first day of month wrapper .find( @@ -334,7 +334,7 @@ describe('', () => { }); test('click on day with range enabled', () => { - const wrapper = mount(rangeSelect); + const wrapper = mount(rangeSelect).children().children(); // select first day of month wrapper .find( @@ -361,7 +361,7 @@ describe('', () => { }); test('click on multiple days with range enabled', () => { - const wrapper = mount(rangeSelect); + const wrapper = mount(rangeSelect).children().children(); // select first day of month wrapper .find( diff --git a/src/DatePicker/DatePicker.test.js b/src/DatePicker/DatePicker.test.js index ac62ba8d9..fc978e60f 100644 --- a/src/DatePicker/DatePicker.test.js +++ b/src/DatePicker/DatePicker.test.js @@ -23,7 +23,7 @@ describe('', () => { }); test('open/close by calendar icon button', () => { - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); expect(wrapper.state('hidden')).toBeTruthy(); wrapper @@ -34,7 +34,7 @@ describe('', () => { }); test('open/close calendar', () => { - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); // check to make sure calendar is hidden expect(wrapper.state('hidden')).toBeTruthy(); @@ -58,7 +58,7 @@ describe('', () => { }); test('open/close range calendar', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); //open date picker calendar expect(wrapper.state('hidden')).toBeTruthy(); @@ -87,7 +87,7 @@ describe('', () => { }); test('start date and end date range', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); // set dates let startRangeDate = new Date(); let endRangeDate = new Date(); @@ -109,7 +109,7 @@ describe('', () => { }); test('check start date greater than end date for range', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); // set dates let startRangeDate = new Date(); let endRangeDate = new Date(); @@ -139,7 +139,7 @@ describe('', () => { }); test('entering start date and disabled end range dates', () => { - wrapper = mount(disabledFutureRangePicker); + wrapper = mount(disabledFutureRangePicker).children().children(); // set dates let startRangeDate = new Date(); let endRangeDate = new Date(); @@ -159,7 +159,7 @@ describe('', () => { }); test('entering invalid range dates', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); // set dates let startRangeDate = new Date(); let endRangeDate = new Date(); @@ -180,7 +180,7 @@ describe('', () => { test('updateDate method', () => { // choose one day in default picker - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); const date = new Date(); wrapper.instance().updateDate(date); expect(wrapper.state('selectedDate')).toEqual(date); @@ -189,7 +189,7 @@ describe('', () => { expect(wrapper.state('formattedDate')).toEqual(formattedDate); // choose 1 day in range picker - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); let startRangeDate = new Date(); let arrDates = [startRangeDate]; @@ -201,7 +201,7 @@ describe('', () => { expect(wrapper.state('arrSelectedDates').length).toEqual(1); // choose 2 days in range picker - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); startRangeDate = new Date(); let endRangeDate = new Date(); endRangeDate.setDate(endRangeDate.getDate() + 3); @@ -218,7 +218,7 @@ describe('', () => { }); test('pressing enter key on date input', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); let startRangeDate = new Date(); let endRangeDate = new Date(); @@ -238,7 +238,7 @@ describe('', () => { }); test('pressing enter key on date input where start date > than end date', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); let startRangeDate = new Date(); let endRangeDate = new Date(); @@ -259,7 +259,7 @@ describe('', () => { test('enter a valid date string', () => { // enter a valid date input - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); let date = new Date(); let formattedDate = `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`; @@ -274,7 +274,7 @@ describe('', () => { test('enter a disabled date string', () => { // enter a valid date input - wrapper = mount(disabledFuturePicker); + wrapper = mount(disabledFuturePicker).children().children(); let date = new Date(); let formattedDate = `${date.getMonth() + 1}/${date.getDate() + 1}/${date.getFullYear()}`; @@ -288,7 +288,7 @@ describe('', () => { }); test('enter an invalid date string', () => { - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); let date = new Date(); let formattedDate = `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear() + 4000}`; @@ -301,7 +301,7 @@ describe('', () => { }); test('formatDate method', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); let startRangeDate = new Date(); let endRangeDate = new Date(); endRangeDate.setDate(endRangeDate.getDate() + 3); @@ -316,7 +316,7 @@ describe('', () => { expect(wrapper.instance().formatDate([])).toEqual(''); // enter end year of 3001 - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); startRangeDate = new Date(); endRangeDate = new Date(); @@ -328,7 +328,7 @@ describe('', () => { expect(wrapper.instance().formatDate([])).toEqual(''); // default date picker format date - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); startRangeDate = new Date(); formattedDate = `${startRangeDate.getMonth() + @@ -338,7 +338,7 @@ describe('', () => { }); test('enter text string for date', () => { - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); wrapper.find('input[type="text"]') .simulate('change', { target: { value: 'May 14th, 2018' } }); @@ -349,7 +349,7 @@ describe('', () => { }); test('enter text string for date on date range component', () => { - wrapper = mount(rangeDatePicker); + wrapper = mount(rangeDatePicker).children().children(); wrapper.find('input[type="text"]') .simulate('change', { target: { value: 'May 14th, 2018-May 15th, 2018' } }); @@ -360,7 +360,7 @@ describe('', () => { }); test('modify date on change', () => { - wrapper = mount(defaultDatePicker); + wrapper = mount(defaultDatePicker).children().children(); wrapper .find('input[type="text"]') .simulate('change', { target: { value: '05/04/2018' } }); diff --git a/src/InputGroup/InputGroup.test.js b/src/InputGroup/InputGroup.test.js index aad8dc527..7118e76f0 100644 --- a/src/InputGroup/InputGroup.test.js +++ b/src/InputGroup/InputGroup.test.js @@ -216,7 +216,7 @@ describe('', () => { }); test('input text entered', () => { - const wrapper = mount(inputTextPosBefore); + const wrapper = mount(inputTextPosBefore).children().children(); // click up wrapper.setState({ value: '' }); @@ -228,7 +228,7 @@ describe('', () => { }); test('number input handle up and down', () => { - const wrapper = mount(numberInput); + const wrapper = mount(numberInput).children().children(); // click up wrapper.setState({ value: 0 }); diff --git a/src/MultiInput/MultiInput.test.js b/src/MultiInput/MultiInput.test.js index b583e48af..1f7ecf833 100644 --- a/src/MultiInput/MultiInput.test.js +++ b/src/MultiInput/MultiInput.test.js @@ -65,7 +65,7 @@ describe('', () => { // check that the tag list is hidden test('check that tag list is hidden', () => { - wrapper = mount(multiInput); + wrapper = mount(multiInput).children().children(); // check if bShowList state is changed expect(wrapper.state(['bShowList'])).toBe(false); @@ -85,7 +85,7 @@ describe('', () => { wrapper.find('input[type="text"].fd-input').simulate('click'); // check if bShowList state is changed - expect(wrapper.state(['bShowList'])).toBe(true); + expect(wrapper.children().children().state(['bShowList'])).toBe(true); // check to see if list is shown let results = getListStatus(true); @@ -103,7 +103,7 @@ describe('', () => { .simulate('click'); // check if bShowList state is changed - expect(wrapper.state(['bShowList'])).toBe(true); + expect(wrapper.children().children().state(['bShowList'])).toBe(true); // check to see if list is shown let results = getListStatus(true); @@ -118,7 +118,7 @@ describe('', () => { .simulate('click'); // check that no tags exist - expect(wrapper.state(['tags'])).toHaveLength(0); + expect(wrapper.children().children().state(['tags'])).toHaveLength(0); // add tag to list wrapper @@ -126,7 +126,7 @@ describe('', () => { .simulate('change', { target: { value: data[0] } }); // check that tag list contains value - expect(wrapper.state(['tags'])).toHaveLength(1); + expect(wrapper.children().children().state(['tags'])).toHaveLength(1); // check to see if tag button is created expect(wrapper.find('span.fd-token[role="button"]')).toHaveLength(1); @@ -144,7 +144,7 @@ describe('', () => { .simulate('click'); // check that no tags exist - expect(wrapper.state(['tags'])).toHaveLength(0); + expect(wrapper.children().children().state(['tags'])).toHaveLength(0); // add tag to list wrapper @@ -152,7 +152,7 @@ describe('', () => { .simulate('change', { target: { value: data[0] } }); // check that tag list contains value - expect(wrapper.state(['tags'])).toHaveLength(1); + expect(wrapper.children().children().state(['tags'])).toHaveLength(1); // simulate unchecking tag from tag list wrapper @@ -160,7 +160,7 @@ describe('', () => { .simulate('change', { target: { value: data[0] } }); // check that no tags exist - expect(wrapper.state(['tags'])).toHaveLength(0); + expect(wrapper.children().children().state(['tags'])).toHaveLength(0); }); test('remove tag from taglist by clicking on tag', () => { @@ -168,7 +168,7 @@ describe('', () => { wrapper.find('.fd-input').simulate('click'); // check that no tags exist - expect(wrapper.state(['tags'])).toHaveLength(0); + expect(wrapper.children().children().state(['tags'])).toHaveLength(0); // add tag to list wrapper @@ -183,13 +183,13 @@ describe('', () => { .simulate('change', { target: { value: data[2] } }); // check that tag list contains value - expect(wrapper.state(['tags'])).toHaveLength(2); + expect(wrapper.children().children().state(['tags'])).toHaveLength(2); // simulate clicking on tag in tag collection under input box wrapper.find('.fd-token').first().simulate('click'); // check that no tags exist - expect(wrapper.state(['tags'])).toHaveLength(1); + expect(wrapper.children().children().state(['tags'])).toHaveLength(1); }); describe('Prop spreading', () => { diff --git a/src/Pagination/Pagination.test.js b/src/Pagination/Pagination.test.js index 807f448e3..5c620a810 100644 --- a/src/Pagination/Pagination.test.js +++ b/src/Pagination/Pagination.test.js @@ -114,7 +114,7 @@ describe('', () => { }); test('navigate to previous page', () => { - const wrapper = shallow(initialSetPagination); + const wrapper = shallow(initialSetPagination).dive().dive(); wrapper.setState({ selectedPage: 5 }); expect(wrapper.state(['selectedPage'])).toEqual(5); wrapper.find('nav>a[aria-label="Previous"]').simulate('click'); @@ -122,21 +122,21 @@ describe('', () => { }); test('navigate to previous page when on first page', () => { - const wrapper = shallow(initialSetPagination); + const wrapper = shallow(initialSetPagination).dive().dive(); expect(wrapper.state(['selectedPage'])).toEqual(1); wrapper.find('nav>a[aria-label="Previous"]').simulate('click'); expect(wrapper.state(['selectedPage'])).toEqual(1); }); test('navigate to next page', () => { - const wrapper = shallow(defaultPagination); + const wrapper = shallow(defaultPagination).dive().dive(); expect(wrapper.state(['selectedPage'])).toEqual(1); wrapper.find('nav>a[aria-label="Next"]').simulate('click'); expect(wrapper.state(['selectedPage'])).toEqual(2); }); test('navigate to next page when on last page', () => { - const wrapper = shallow(defaultPagination); + const wrapper = shallow(defaultPagination).dive().dive(); wrapper.setState({ selectedPage: 11 }); expect(wrapper.state(['selectedPage'])).toEqual(11); wrapper.find('nav>a[aria-label="Next"]').simulate('click'); @@ -144,7 +144,7 @@ describe('', () => { }); test('navigate to page clicked', () => { - const wrapper = shallow(defaultPagination); + const wrapper = shallow(defaultPagination).dive().dive(); expect(wrapper.state(['selectedPage'])).toEqual(1); wrapper .find('a.fd-pagination__link') diff --git a/src/Popover/Popover.test.js b/src/Popover/Popover.test.js index 80b813b29..14930bf79 100644 --- a/src/Popover/Popover.test.js +++ b/src/Popover/Popover.test.js @@ -119,7 +119,7 @@ describe('', () => { }); test('handle document click to close popover', () => { - const wrapper = mount(popOver); + const wrapper = mount(popOver).children().children(); // click on popover to show wrapper.find('div.fd-popover__control .sap-icon--cart').simulate('click'); @@ -133,7 +133,7 @@ describe('', () => { }); test('handle esc key to close popover', () => { - const wrapper = mount(popOver); + const wrapper = mount(popOver).children().children(); // click on popover to show wrapper.find('div.fd-popover__control .sap-icon--cart').simulate('click'); @@ -146,7 +146,7 @@ describe('', () => { }); test('handle document click to close popover', () => { - const wrapper = mount(popOver); + const wrapper = mount(popOver).children().children(); // click on popover to show wrapper.find('div.fd-popover__control .sap-icon--cart').simulate('click'); @@ -159,7 +159,7 @@ describe('', () => { }); test('handle document click to close popover', () => { - const wrapper = mount(popOverDisabled); + const wrapper = mount(popOverDisabled).children().children(); // click on popover to show wrapper.find('div.fd-popover__control .sap-icon--cart').simulate('click'); diff --git a/src/SearchInput/SearchInput.test.js b/src/SearchInput/SearchInput.test.js index 5e2334b90..d7f7ec1c1 100644 --- a/src/SearchInput/SearchInput.test.js +++ b/src/SearchInput/SearchInput.test.js @@ -53,10 +53,6 @@ describe('', () => { let component; - afterEach(() => { - component.unmount(); - }); - test('create SearchInput', () => { component = renderer.create(defaultSearchInput); let tree = component.toJSON(); @@ -77,7 +73,7 @@ describe('', () => { describe('onChange handler', () => { test('calling parent onChange event', () => { - const wrapper = mount(searchOnChange); + const wrapper = mount(searchOnChange).children().children(); // enter text into search input wrapper @@ -117,7 +113,7 @@ describe('', () => { // press enter key wrapper.find(searchInput).simulate('keypress', { key: 'Enter' }); - expect(wrapper.state(['value'])).toBe(searchData[0].text); + expect(wrapper.children().children().state(['value'])).toBe(searchData[0].text); }); test('click outside search input to close list', () => { @@ -135,7 +131,7 @@ describe('', () => { // click outside to close list document.dispatchEvent(event); - expect(wrapper.state(['value'])).toBe(searchData[0].text); + expect(wrapper.children().children().state(['value'])).toBe(searchData[0].text); }); test('show/hide auto complete list', () => { @@ -144,12 +140,12 @@ describe('', () => { // click in search box to show wrapper.find(searchInput).simulate('click'); - expect(wrapper.state('isExpanded')).toBeTruthy(); + expect(wrapper.children().children().state('isExpanded')).toBeTruthy(); // click in search box to hide wrapper.find(searchInput).simulate('click'); - expect(wrapper.state('isExpanded')).toBeFalsy(); + expect(wrapper.children().children().state('isExpanded')).toBeFalsy(); }); test('check for enter key press on search input without autocomplete', () => { @@ -166,7 +162,7 @@ describe('', () => { // press enter key wrapper.find(searchInput).simulate('keypress', { key: 'Enter' }); - expect(wrapper.state(['value'])).toBe(searchData[2].text); + expect(wrapper.children().children().state(['value'])).toBe(searchData[2].text); }); test('click on result in autocomplete', () => { @@ -175,7 +171,7 @@ describe('', () => { // click in search box to show wrapper.find(searchInput).simulate('click'); - expect(wrapper.state('isExpanded')).toBeTruthy(); + expect(wrapper.children().children().state('isExpanded')).toBeTruthy(); // enter text into search input wrapper @@ -186,7 +182,7 @@ describe('', () => { // click in search box to hide wrapper.find(searchInput).simulate('click'); - expect(wrapper.state('isExpanded')).toBeFalsy(); + expect(wrapper.children().children().state('isExpanded')).toBeFalsy(); }); test('check search executed on search button click', () => { @@ -197,11 +193,11 @@ describe('', () => { .simulate('change', { target: { value: searchData[0].text } }); // check if searchTerm state is updated - expect(wrapper.state(['value'])).toBe(searchData[0].text); + expect(wrapper.children().children().state(['value'])).toBe(searchData[0].text); wrapper.find('.fd-button--light.sap-icon--search').simulate('click'); - expect(wrapper.state(['value'])).toBe(searchData[0].text); + expect(wrapper.children().children().state(['value'])).toBe(searchData[0].text); }); test('pressing Esc key to close search list', () => { @@ -210,13 +206,13 @@ describe('', () => { // click in search box to show wrapper.find(searchInput).simulate('click'); - expect(wrapper.state('isExpanded')).toBeTruthy(); + expect(wrapper.children().children().state('isExpanded')).toBeTruthy(); // handle esc key let event = new KeyboardEvent('keydown', { keyCode: 27 }); document.dispatchEvent(event); - expect(wrapper.state('isExpanded')).toBeFalsy(); + expect(wrapper.children().children().state('isExpanded')).toBeFalsy(); }); describe('Prop spreading', () => { diff --git a/src/Shellbar/Shellbar.test.js b/src/Shellbar/Shellbar.test.js index cbf2ea9a9..6e91a95bf 100644 --- a/src/Shellbar/Shellbar.test.js +++ b/src/Shellbar/Shellbar.test.js @@ -280,7 +280,7 @@ describe('', () => { wrapper.find('a.fd-menu__item span.sap-icon--grid').simulate('click'); wrapper.find('span.fd-menu.sap-icon--nav-back').simulate('click'); - expect(wrapper.state(['showCollapsedProductSwitcherMenu'])).toBeFalsy(); + expect(wrapper.children().children().state(['showCollapsedProductSwitcherMenu'])).toBeFalsy(); }); describe('Prop spreading', () => { diff --git a/src/SideNavigation/SideNav.test.js b/src/SideNavigation/SideNav.test.js index 02ce33d3a..9b17f20ab 100644 --- a/src/SideNavigation/SideNav.test.js +++ b/src/SideNavigation/SideNav.test.js @@ -284,7 +284,7 @@ describe('', () => { }); test('handle side nav list link click', () => { - const wrapper = mount(sideNavMultiLevel); + const wrapper = mount(sideNavMultiLevel).children().children(); const Item2 = wrapper.find({ 'id': 'item_2' }); const Item4 = wrapper.find({ 'id': 'item_4' }); @@ -310,7 +310,7 @@ describe('', () => { }); test('handle side nav sub link click', () => { - const wrapper = mount(sideNavMultiLevel); + const wrapper = mount(sideNavMultiLevel).children().children(); wrapper .find('.fd-side-nav__sublink') .at(0) diff --git a/src/Tabs/TabGroup.test.js b/src/Tabs/TabGroup.test.js index 8daca6f93..d709dd6fe 100644 --- a/src/Tabs/TabGroup.test.js +++ b/src/Tabs/TabGroup.test.js @@ -61,7 +61,7 @@ describe('', () => { }); test('tab selection', () => { - const wrapper = mount(defaultTabsWithClass); + const wrapper = mount(defaultTabsWithClass).children().children(); // check selected tab expect(wrapper.state(['selectedIndex'])).toEqual(1); diff --git a/src/Tile/Tile.test.js b/src/Tile/Tile.test.js index dfef7d5cd..96907c750 100644 --- a/src/Tile/Tile.test.js +++ b/src/Tile/Tile.test.js @@ -181,7 +181,7 @@ describe('', () => { super(props); ref = React.createRef(); } - render = () => ; + render = () => ; } mount(); expect(ref.current.tagName).toEqual('DIV'); diff --git a/src/Time/Time.test.js b/src/Time/Time.test.js index 6a80405c0..91784e2c5 100644 --- a/src/Time/Time.test.js +++ b/src/Time/Time.test.js @@ -112,7 +112,7 @@ describe('