diff --git a/.babelrc b/.babelrc index 7209ea5efdb..5bb6c1c0e48 100644 --- a/.babelrc +++ b/.babelrc @@ -1,10 +1,10 @@ { "presets": [ "env", - "stage-0", "react" ], "plugins": [ - "add-react-displayname" + "add-react-displayname", + "transform-object-rest-spread" ] } diff --git a/README.md b/README.md index cc814f57050..7db52631b6d 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ All of our components are exported by name from `primer-react`, so you can impor ```js import { - Block, + Box, Button, Heading, Text @@ -60,54 +60,8 @@ To run `primer-react` locally when adding or updating components: Remember to build the documentation before publishing with `npm run build:docs` -### Code Style +> 👉 See [the contributing docs](contributing.md) for more info on code style, testing, and coverage. -We use the [React configuration](https://github.com/github/eslint-plugin-github/blob/master/lib/configs/react.js) -from [GitHub's eslint plugin](https://github.com/github/eslint-plugin-github) -to lint our JavaScript. To check your work before pushing, run: - -``` -npm run lint -``` - -Or, you can use [npx] to run eslint on one or more specific files: - - -```sh -# lint the component and the tests in src/__tests__ -npx eslint src/**/MyComponent.js -``` - -**Protip:** The [eslint `--fix` flag](https://eslint.org/docs/user-guide/command-line-interface#--fix) -can automatically fix most linting errors, such as those involving whitespace -or incorrect ordering of object keys and imports. You can fix those issues -across the entire project with: - -```sh -npm run lint -- --fix -``` - -**Protip:** `npm run lint -- --quiet` (or `npx eslint --quiet ...`) will -suppress warnings so that you can focus on fixing errors. - -### Testing - -We test our components with [Jest](https://facebook.github.io/jest/) and -[react-test-renderer](https://reactjs.org/docs/test-renderer.html). You can run -the tests locally with `npm test` (or `npm t`). To run the tests as you work, -run Jest in watch mode with: - -``` -npm t -- --watch -``` - -See [`src/__tests__/example.js`](src/__tests__/example.js) for an -example of how we're testing our components. - -#### Code coverage - -A code coverage report is included in the `npm test` output, and -test coverage data is generated in the `coverage/` directory. ## Principles @@ -120,5 +74,4 @@ test coverage data is generated in the `coverage/` directory. [emotion]: https://emotion.sh/ -[npx]: https://www.npmjs.com/package/npx [Primer CSS]: https://github.com/primer/primer diff --git a/contributing.md b/contributing.md index 3b28256ee30..bb550cf88bf 100644 --- a/contributing.md +++ b/contributing.md @@ -1,13 +1,60 @@ # Contribution guidelines +1. [Code style](#code-style) +2. [Testing](#testing) + * [Code coverage](#code-coverage) +3. [Tools we use](#tools-we-use) +4. [Component patterns](#component-patterns) + * [Components with only system props](#components-with-only-system-props) + * [Primer CSS components](#primer-css-components) +5. [Glossary](#glossary) + +## Code Style + +We use the [React configuration](https://github.com/github/eslint-plugin-github/blob/master/lib/configs/react.js) from [GitHub's eslint plugin](https://github.com/github/eslint-plugin-github) to lint our JavaScript. To check your work before pushing, run: + +``` +npm run lint +``` + +Or, you can use [npx] to run eslint on one or more specific files: + + +```sh +# lint the component and the tests in src/__tests__ +npx eslint src/**/MyComponent.js +``` + +**Protip:** The [eslint `--fix` flag](https://eslint.org/docs/user-guide/command-line-interface#--fix) can automatically fix most linting errors, such as those involving whitespace or incorrect ordering of object keys and imports. You can fix those issues across the entire project with: + +```sh +npm run lint -- --fix +``` + +**Protip:** `npm run lint -- --quiet` (or `npx eslint --quiet ...`) will suppress warnings so that you can focus on fixing errors. + +## Testing + +We test our components with [Jest](https://facebook.github.io/jest/) and [react-test-renderer](https://reactjs.org/docs/test-renderer.html). You can run the tests locally with `npm test` (or `npm t`). To run the tests as you work, run Jest in watch mode with: + +``` +npm t -- --watch +``` + +See [`src/__tests__/example.js`](src/__tests__/example.js) for examples of ways that we test our components. + +### Code coverage + +A code coverage report is included in the `npm test` output, and test coverage data is generated in the `coverage/` directory. + ## Tools we use -### Components 1. We use [emotion] to style our components, and [emotion-theming] as the theme provider. -1. We use style functions from [styled-system] whenever possible, and styled-systems' `style()` function to create new ones. -1. We use [system-components] to reduce the amount of boilerplate needed to implement styled-system functions. +2. We use style functions from [styled-system] whenever possible, and styled-systems' `style()` function to create new ones. +3. We use [system-components] to reduce the amount of boilerplate needed to implement styled-system functions. ## Component patterns + With a couple of exceptions, all components should be created by the `withSystemProps()` function from `src/system-props.js`. This function takes a "component-ish" value as its first argument, and an array of [system props](#system-props) as the second: ```jsx @@ -41,6 +88,7 @@ Categories of system props are exported from `src/system-props`: * `FLEX_ITEM` includes `COMMON` and flexbox props for items in a flex container ### Components with only system props + Components with only system props should be created by passing the default tag to `withSystemProps()`: ```jsx @@ -148,3 +196,4 @@ SpaceDiv.propTypes = { [styled-system]: https://jxnblk.com/styled-system/getting-started [system-components]: https://jxnblk.com/styled-system/system-components [table]: https://jxnblk.com/styled-system/table +[npx]: https://www.npmjs.com/package/npx diff --git a/docs/bundle.js b/docs/bundle.js index aae1cab5a13..ca82f16b789 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -1,4 +1,4 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/primer-react/",n(n.s=590)}([function(e,t,n){"use strict";e.exports=n(544)},function(e,t,n){e.exports=n(529)()},function(e,t,n){e.exports=n(534)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(75);Object.defineProperty(t,"theme",{enumerable:!0,get:function(){return B(r).default}});var i=n(175);Object.defineProperty(t,"Block",{enumerable:!0,get:function(){return B(i).default}});var o=n(108);Object.defineProperty(t,"Box",{enumerable:!0,get:function(){return B(o).default}});var a=n(507);Object.defineProperty(t,"Avatar",{enumerable:!0,get:function(){return B(a).default}});var s=n(47);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return B(s).default}});var u=n(506);Object.defineProperty(t,"ButtonDanger",{enumerable:!0,get:function(){return B(u).default}});var c=n(505);Object.defineProperty(t,"ButtonPrimary",{enumerable:!0,get:function(){return B(c).default}});var l=n(504);Object.defineProperty(t,"ButtonOutline",{enumerable:!0,get:function(){return B(l).default}});var f=n(503);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return B(f).default}});var p=n(502);Object.defineProperty(t,"OcticonButton",{enumerable:!0,get:function(){return B(p).default}});var h=n(107);Object.defineProperty(t,"Caret",{enumerable:!0,get:function(){return B(h).default}});var d=n(494);Object.defineProperty(t,"CaretBox",{enumerable:!0,get:function(){return B(d).default}});var m=n(493);Object.defineProperty(t,"CircleOcticon",{enumerable:!0,get:function(){return B(m).default}});var y=n(492);Object.defineProperty(t,"CircleBadge",{enumerable:!0,get:function(){return B(y).default}});var g=n(170);Object.defineProperty(t,"Details",{enumerable:!0,get:function(){return B(g).default}});var v=n(491);Object.defineProperty(t,"Dropdown",{enumerable:!0,get:function(){return B(v).default}});var b=n(489);Object.defineProperty(t,"DonutChart",{enumerable:!0,get:function(){return B(b).default}});var x=n(169);Object.defineProperty(t,"DonutSlice",{enumerable:!0,get:function(){return B(x).default}});var w=n(168);Object.defineProperty(t,"FilterList",{enumerable:!0,get:function(){return B(w).default}});var k=n(488);Object.defineProperty(t,"FilterListItem",{enumerable:!0,get:function(){return B(k).default}});var E=n(103);Object.defineProperty(t,"FlexContainer",{enumerable:!0,get:function(){return B(E).default}});var _=n(487);Object.defineProperty(t,"FlexItem",{enumerable:!0,get:function(){return B(_).default}});var S=n(486);Object.defineProperty(t,"TextInput",{enumerable:!0,get:function(){return B(S).default}});var C=n(485);Object.defineProperty(t,"Heading",{enumerable:!0,get:function(){return B(C).default}});var A=n(484);Object.defineProperty(t,"Label",{enumerable:!0,get:function(){return B(A).default}});var D=n(483);Object.defineProperty(t,"BranchName",{enumerable:!0,get:function(){return B(D).default}});var T=n(482);Object.defineProperty(t,"Link",{enumerable:!0,get:function(){return B(T).default}});var O=n(481);Object.defineProperty(t,"MergeStatus",{enumerable:!0,get:function(){return B(O).default}});var P=n(480);Object.defineProperty(t,"Text",{enumerable:!0,get:function(){return B(P).default}});var M=n(479);Object.defineProperty(t,"Tooltip",{enumerable:!0,get:function(){return B(M).default}});var L=n(478);Object.defineProperty(t,"CounterLabel",{enumerable:!0,get:function(){return B(L).default}});var F=n(477);Object.defineProperty(t,"Flash",{enumerable:!0,get:function(){return B(F).default}});var j=n(167);Object.defineProperty(t,"StateLabel",{enumerable:!0,get:function(){return B(j).default}});var N=n(166);Object.defineProperty(t,"UnderlineNav",{enumerable:!0,get:function(){return B(N).default}});var R=n(476);function B(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"UnderlineNavLink",{enumerable:!0,get:function(){return B(R).default}})},function(e,t,n){e.exports=n(536)()},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(50));t.default=r.default||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:h;if(m(e))throw new Error(e.name+" is already a system component; can't call withSystemProps() on it");var n="object"===(void 0===e?"undefined":(0,u.default)(e))?e:{is:e};"function"==typeof n.is&&(n.is=function(e){return function t(n){var i=n.is,o=(0,r.default)(n,["is"]);return i===e||i===t?c.default.createElement(e,o):c.default.createElement(e,n)}}(n.is));var f=l.default.apply(void 0,[n].concat((0,s.default)(t)));f.displayName=e.displayName,(0,a.default)(f.propTypes,e.propTypes);var p=!0,d=!1,g=void 0;try{for(var v,b=(0,o.default)((0,i.default)(e));!(p=(v=b.next()).done);p=!0){var x=v.value;f.hasOwnProperty(x)||(f[x]=e[x])}}catch(e){d=!0,g=e}finally{try{!p&&b.return&&b.return()}finally{if(d)throw g}}return y(f)},t.withDefaultTheme=y,t.withoutPropTypes=function(e,t){var n=!0,r=!1,i=void 0;try{for(var a,s=(0,o.default)(t);!(n=(a=s.next()).done);n=!0){var u=a.value;delete e.propTypes[u]}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}return e};var c=p(n(0)),l=p(n(516)),f=p(n(75));function p(e){return e&&e.__esModule?e:{default:e}}t.default=l.default;var h=t.COMMON=["color","space"],d=(t.TYPOGRAPHY=h.concat("fontFamily","fontSize","fontWeight","lineHeight"),t.LAYOUT=h.concat("borders","borderColor","borderRadius","boxShadow","display","size","width","height","minWidth","minHeight","maxWidth","maxHeight","verticalAlign"));t.POSITION=["position","zIndex","top","right","bottom","left"],t.FLEX_CONTAINER=d.concat("alignContent","alignItems","flexWrap","flex","flexBasis","flexDirection","justifyContent","order"),t.FLEX_ITEM=d.concat("justifySelf","alignSelf");function m(e){return!0===e.systemComponent||e.defaultProps&&Array.isArray(e.defaultProps.blacklist)}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.default;return e.defaultProps?e.defaultProps.theme=t:e.defaultProps={theme:t},e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(471);Object.defineProperty(t,"Library",{enumerable:!0,get:function(){return r.Library}}),Object.defineProperty(t,"Example",{enumerable:!0,get:function(){return r.Example}}),Object.defineProperty(t,"Detail",{enumerable:!0,get:function(){return r.Detail}}),Object.defineProperty(t,"Head",{enumerable:!0,get:function(){return r.Head}});var i=n(459);Object.defineProperty(t,"LiveEditor",{enumerable:!0,get:function(){return E(i).default}});var o=n(102);Object.defineProperty(t,"Frame",{enumerable:!0,get:function(){return E(o).default}});var a=n(101);Object.defineProperty(t,"Catch",{enumerable:!0,get:function(){return E(a).default}});var s=n(390);Object.defineProperty(t,"XRay",{enumerable:!0,get:function(){return E(s).default}});var u=n(388);Object.defineProperty(t,"PropsForm",{enumerable:!0,get:function(){return E(u).default}});var c=n(387);Object.defineProperty(t,"Responsive",{enumerable:!0,get:function(){return E(c).default}});var l=n(386);Object.defineProperty(t,"Cartesian",{enumerable:!0,get:function(){return E(l).default}});var f=n(385);Object.defineProperty(t,"Matrix",{enumerable:!0,get:function(){return E(f).default}});var p=n(384);Object.defineProperty(t,"Markdown",{enumerable:!0,get:function(){return E(p).default}});var h=n(279);Object.defineProperty(t,"Diff",{enumerable:!0,get:function(){return E(h).default}});var d=n(278);Object.defineProperty(t,"Debug",{enumerable:!0,get:function(){return d.Debug}}),Object.defineProperty(t,"withDebug",{enumerable:!0,get:function(){return d.withDebug}});var m=n(276);Object.defineProperty(t,"TypeScale",{enumerable:!0,get:function(){return E(m).default}});var y=n(275);Object.defineProperty(t,"Color",{enumerable:!0,get:function(){return E(y).default}});var g=n(262);Object.defineProperty(t,"Style",{enumerable:!0,get:function(){return E(g).default}});var v=n(261);Object.defineProperty(t,"Font",{enumerable:!0,get:function(){return E(v).default}});var b=n(28);Object.defineProperty(t,"UI",{enumerable:!0,get:function(){return E(b).default}});var x=n(258);Object.defineProperty(t,"State",{enumerable:!0,get:function(){return E(x).default}});var w=n(257);Object.defineProperty(t,"Colorable",{enumerable:!0,get:function(){return E(w).default}});var k=n(249);function E(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Fetch",{enumerable:!0,get:function(){return E(k).default}})},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";var r=n(56),i=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],o=["scalar","sequence","mapping"];e.exports=function(e,t){if(t=t||{},Object.keys(t).forEach(function(t){if(-1===i.indexOf(t))throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach(function(n){e[n].forEach(function(e){t[String(e)]=n})}),t}(t.styleAliases||null),-1===o.indexOf(this.kind))throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},function(e,t,n){var r; +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/primer-react/",n(n.s=592)}([function(e,t,n){"use strict";e.exports=n(546)},function(e,t,n){e.exports=n(531)()},function(e,t,n){e.exports=n(536)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(75);Object.defineProperty(t,"theme",{enumerable:!0,get:function(){return I(r).default}});var i=n(108);Object.defineProperty(t,"BorderBox",{enumerable:!0,get:function(){return I(i).default}});var o=n(172);Object.defineProperty(t,"Box",{enumerable:!0,get:function(){return I(o).default}});var a=n(509);Object.defineProperty(t,"Position",{enumerable:!0,get:function(){return a.Position}}),Object.defineProperty(t,"Absolute",{enumerable:!0,get:function(){return a.Absolute}}),Object.defineProperty(t,"Fixed",{enumerable:!0,get:function(){return a.Fixed}}),Object.defineProperty(t,"Relative",{enumerable:!0,get:function(){return a.Relative}}),Object.defineProperty(t,"Sticky",{enumerable:!0,get:function(){return a.Sticky}});var s=n(508);Object.defineProperty(t,"Avatar",{enumerable:!0,get:function(){return I(s).default}});var u=n(47);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return I(u).default}});var c=n(507);Object.defineProperty(t,"ButtonDanger",{enumerable:!0,get:function(){return I(c).default}});var l=n(506);Object.defineProperty(t,"ButtonPrimary",{enumerable:!0,get:function(){return I(l).default}});var f=n(505);Object.defineProperty(t,"ButtonOutline",{enumerable:!0,get:function(){return I(f).default}});var p=n(504);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return I(p).default}});var h=n(503);Object.defineProperty(t,"OcticonButton",{enumerable:!0,get:function(){return I(h).default}});var d=n(107);Object.defineProperty(t,"Caret",{enumerable:!0,get:function(){return I(d).default}});var m=n(495);Object.defineProperty(t,"PointerBox",{enumerable:!0,get:function(){return I(m).default}});var y=n(494);Object.defineProperty(t,"CircleOcticon",{enumerable:!0,get:function(){return I(y).default}});var g=n(493);Object.defineProperty(t,"CircleBadge",{enumerable:!0,get:function(){return I(g).default}});var v=n(170);Object.defineProperty(t,"Details",{enumerable:!0,get:function(){return I(v).default}});var b=n(492);Object.defineProperty(t,"Dropdown",{enumerable:!0,get:function(){return I(b).default}});var x=n(490);Object.defineProperty(t,"DonutChart",{enumerable:!0,get:function(){return I(x).default}});var w=n(169);Object.defineProperty(t,"DonutSlice",{enumerable:!0,get:function(){return I(w).default}});var k=n(168);Object.defineProperty(t,"FilterList",{enumerable:!0,get:function(){return I(k).default}});var E=n(489);Object.defineProperty(t,"FilterListItem",{enumerable:!0,get:function(){return I(E).default}});var _=n(103);Object.defineProperty(t,"FlexContainer",{enumerable:!0,get:function(){return I(_).default}});var S=n(488);Object.defineProperty(t,"FlexItem",{enumerable:!0,get:function(){return I(S).default}});var C=n(487);Object.defineProperty(t,"TextInput",{enumerable:!0,get:function(){return I(C).default}});var A=n(486);Object.defineProperty(t,"Heading",{enumerable:!0,get:function(){return I(A).default}});var D=n(485);Object.defineProperty(t,"Label",{enumerable:!0,get:function(){return I(D).default}});var T=n(484);Object.defineProperty(t,"BranchName",{enumerable:!0,get:function(){return I(T).default}});var O=n(483);Object.defineProperty(t,"Link",{enumerable:!0,get:function(){return I(O).default}});var P=n(482);Object.defineProperty(t,"MergeStatus",{enumerable:!0,get:function(){return I(P).default}});var M=n(481);Object.defineProperty(t,"Text",{enumerable:!0,get:function(){return I(M).default}});var L=n(480);Object.defineProperty(t,"Tooltip",{enumerable:!0,get:function(){return I(L).default}});var F=n(479);Object.defineProperty(t,"CounterLabel",{enumerable:!0,get:function(){return I(F).default}});var j=n(478);Object.defineProperty(t,"Flash",{enumerable:!0,get:function(){return I(j).default}});var N=n(167);Object.defineProperty(t,"StateLabel",{enumerable:!0,get:function(){return I(N).default}});var B=n(166);Object.defineProperty(t,"UnderlineNav",{enumerable:!0,get:function(){return I(B).default}});var R=n(477);function I(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"UnderlineNavLink",{enumerable:!0,get:function(){return I(R).default}})},function(e,t,n){e.exports=n(538)()},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(50));t.default=r.default||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:h;if(m(e))throw new Error(e.name+" is already a system component; can't call withSystemProps() on it");var n="object"===(void 0===e?"undefined":(0,u.default)(e))?e:{is:e};"function"==typeof n.is&&(n.is=function(e){return function t(n){var i=n.is,o=(0,r.default)(n,["is"]);return i===e||i===t?c.default.createElement(e,o):c.default.createElement(e,n)}}(n.is));var f=l.default.apply(void 0,[n].concat((0,s.default)(t)));f.displayName=e.displayName,(0,a.default)(f.propTypes,e.propTypes);var p=!0,d=!1,g=void 0;try{for(var v,b=(0,o.default)((0,i.default)(e));!(p=(v=b.next()).done);p=!0){var x=v.value;f.hasOwnProperty(x)||(f[x]=e[x])}}catch(e){d=!0,g=e}finally{try{!p&&b.return&&b.return()}finally{if(d)throw g}}return y(f)},t.withDefaultTheme=y,t.withoutPropTypes=function(e,t){var n=!0,r=!1,i=void 0;try{for(var a,s=(0,o.default)(t);!(n=(a=s.next()).done);n=!0){var u=a.value;delete e.propTypes[u]}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}return e};var c=p(n(0)),l=p(n(518)),f=p(n(75));function p(e){return e&&e.__esModule?e:{default:e}}t.default=l.default;var h=t.COMMON=["color","space"],d=(t.TYPOGRAPHY=h.concat("fontFamily","fontSize","fontWeight","lineHeight"),t.LAYOUT=h.concat("borders","borderColor","borderRadius","boxShadow","display","size","width","height","minWidth","minHeight","maxWidth","maxHeight","verticalAlign"));t.POSITION=["position","zIndex","top","right","bottom","left"],t.FLEX_CONTAINER=d.concat("alignContent","alignItems","flexWrap","flex","flexBasis","flexDirection","justifyContent","order"),t.FLEX_ITEM=d.concat("justifySelf","alignSelf");function m(e){return!0===e.systemComponent||e.defaultProps&&Array.isArray(e.defaultProps.blacklist)}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.default;return e.defaultProps?e.defaultProps.theme=t:e.defaultProps={theme:t},e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(472);Object.defineProperty(t,"Library",{enumerable:!0,get:function(){return r.Library}}),Object.defineProperty(t,"Example",{enumerable:!0,get:function(){return r.Example}}),Object.defineProperty(t,"Detail",{enumerable:!0,get:function(){return r.Detail}}),Object.defineProperty(t,"Head",{enumerable:!0,get:function(){return r.Head}});var i=n(460);Object.defineProperty(t,"LiveEditor",{enumerable:!0,get:function(){return E(i).default}});var o=n(102);Object.defineProperty(t,"Frame",{enumerable:!0,get:function(){return E(o).default}});var a=n(101);Object.defineProperty(t,"Catch",{enumerable:!0,get:function(){return E(a).default}});var s=n(391);Object.defineProperty(t,"XRay",{enumerable:!0,get:function(){return E(s).default}});var u=n(389);Object.defineProperty(t,"PropsForm",{enumerable:!0,get:function(){return E(u).default}});var c=n(388);Object.defineProperty(t,"Responsive",{enumerable:!0,get:function(){return E(c).default}});var l=n(387);Object.defineProperty(t,"Cartesian",{enumerable:!0,get:function(){return E(l).default}});var f=n(386);Object.defineProperty(t,"Matrix",{enumerable:!0,get:function(){return E(f).default}});var p=n(385);Object.defineProperty(t,"Markdown",{enumerable:!0,get:function(){return E(p).default}});var h=n(280);Object.defineProperty(t,"Diff",{enumerable:!0,get:function(){return E(h).default}});var d=n(279);Object.defineProperty(t,"Debug",{enumerable:!0,get:function(){return d.Debug}}),Object.defineProperty(t,"withDebug",{enumerable:!0,get:function(){return d.withDebug}});var m=n(277);Object.defineProperty(t,"TypeScale",{enumerable:!0,get:function(){return E(m).default}});var y=n(276);Object.defineProperty(t,"Color",{enumerable:!0,get:function(){return E(y).default}});var g=n(263);Object.defineProperty(t,"Style",{enumerable:!0,get:function(){return E(g).default}});var v=n(262);Object.defineProperty(t,"Font",{enumerable:!0,get:function(){return E(v).default}});var b=n(28);Object.defineProperty(t,"UI",{enumerable:!0,get:function(){return E(b).default}});var x=n(259);Object.defineProperty(t,"State",{enumerable:!0,get:function(){return E(x).default}});var w=n(258);Object.defineProperty(t,"Colorable",{enumerable:!0,get:function(){return E(w).default}});var k=n(250);function E(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Fetch",{enumerable:!0,get:function(){return E(k).default}})},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";var r=n(56),i=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],o=["scalar","sequence","mapping"];e.exports=function(e,t){if(t=t||{},Object.keys(t).forEach(function(t){if(-1===i.indexOf(t))throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach(function(n){e[n].forEach(function(e){t[String(e)]=n})}),t}(t.styleAliases||null),-1===o.indexOf(this.kind))throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},function(e,t,n){var r; /*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see @@ -9,39 +9,39 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;t1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],r=t&&t.split("/")||[],i=e&&h(e),o=t&&h(t),a=i||o;if(e&&h(e)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";var s=void 0;if(r.length){var u=r[r.length-1];s="."===u||".."===u||""===u}else s=!1;for(var c=0,l=r.length;l>=0;l--){var f=r[l];"."===f?d(r,l):".."===f?(d(r,l),c++):c&&(d(r,l),c--)}if(!a)for(;c--;c)r.unshift("..");!a||""===r[0]||r[0]&&h(r[0])||r.unshift("");var p=r.join("/");return s&&"/"!==p.substr(-1)&&(p+="/"),p},y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var g=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every(function(t,r){return e(t,n[r])});var r=void 0===t?"undefined":y(t);if(r!==(void 0===n?"undefined":y(n)))return!1;if("object"===r){var i=t.valueOf(),o=n.valueOf();if(i!==t||o!==n)return e(i,o);var a=Object.keys(t),s=Object.keys(n);return a.length===s.length&&a.every(function(r){return e(t[r],n[r])})}return!1},v=function(e){return"/"===e.charAt(0)?e:"/"+e},b=function(e){return"/"===e.charAt(0)?e.substr(1):e},x=function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)},w=function(e,t){return x(e,t)?e.substr(t.length):e},k=function(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e},E=function(e){var t=e.pathname,n=e.search,r=e.hash,i=t||"/";return n&&"?"!==n&&(i+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(i+="#"===r.charAt(0)?r:"#"+r),i},_=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};p()(D,"Browser history needs a DOM");var t=window.history,n=function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history}(),r=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e.forceRefresh,o=void 0!==i&&i,a=e.getUserConfirmation,s=void 0===a?P:a,u=e.keyLength,c=void 0===u?6:u,f=e.basename?k(v(e.basename)):"",h=function(e){var t=e||{},n=t.key,r=t.state,i=window.location,o=i.pathname+i.search+i.hash;return l()(!f||x(o,f),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+o+'" to begin with "'+f+'".'),f&&(o=w(o,f)),S(o,r,n)},d=function(){return Math.random().toString(36).substr(2,c)},m=A(),y=function(e){L(U,e),U.length=t.length,m.notifyListeners(U.location,U.action)},g=function(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||C(h(e.state))},b=function(){C(h(F()))},_=!1,C=function(e){_?(_=!1,y()):m.confirmTransitionTo(e,"POP",s,function(t){t?y({action:"POP",location:e}):j(e)})},j=function(e){var t=U.location,n=R.indexOf(t.key);-1===n&&(n=0);var r=R.indexOf(e.key);-1===r&&(r=0);var i=n-r;i&&(_=!0,I(i))},N=h(F()),R=[N.key],B=function(e){return f+E(e)},I=function(e){t.go(e)},z=0,H=function(e){1===(z+=e)?(T(window,"popstate",g),r&&T(window,"hashchange",b)):0===z&&(O(window,"popstate",g),r&&O(window,"hashchange",b))},V=!1,U={length:t.length,action:"POP",location:N,createHref:B,push:function(e,r){l()(!("object"===(void 0===e?"undefined":M(e))&&void 0!==e.state&&void 0!==r),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var i=S(e,r,d(),U.location);m.confirmTransitionTo(i,"PUSH",s,function(e){if(e){var r=B(i),a=i.key,s=i.state;if(n)if(t.pushState({key:a,state:s},null,r),o)window.location.href=r;else{var u=R.indexOf(U.location.key),c=R.slice(0,-1===u?0:u+1);c.push(i.key),R=c,y({action:"PUSH",location:i})}else l()(void 0===s,"Browser history cannot push state in browsers that do not support HTML5 history"),window.location.href=r}})},replace:function(e,r){l()(!("object"===(void 0===e?"undefined":M(e))&&void 0!==e.state&&void 0!==r),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var i=S(e,r,d(),U.location);m.confirmTransitionTo(i,"REPLACE",s,function(e){if(e){var r=B(i),a=i.key,s=i.state;if(n)if(t.replaceState({key:a,state:s},null,r),o)window.location.replace(r);else{var u=R.indexOf(U.location.key);-1!==u&&(R[u]=i.key),y({action:"REPLACE",location:i})}else l()(void 0===s,"Browser history cannot replace state in browsers that do not support HTML5 history"),window.location.replace(r)}})},go:I,goBack:function(){return I(-1)},goForward:function(){return I(1)},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=m.setPrompt(e);return V||(H(1),V=!0),function(){return V&&(V=!1,H(-1)),t()}},listen:function(e){var t=m.appendListener(e);return H(1),function(){H(-1),t()}}};return U},N=Object.assign||function(e){for(var t=1;t=0?t:0)+"#"+e)},z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};p()(D,"Hash history needs a DOM");var t=window.history,n=-1===window.navigator.userAgent.indexOf("Firefox"),r=e.getUserConfirmation,i=void 0===r?P:r,o=e.hashType,a=void 0===o?"slash":o,s=e.basename?k(v(e.basename)):"",u=R[a],c=u.encodePath,f=u.decodePath,h=function(){var e=f(B());return l()(!s||x(e,s),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+e+'" to begin with "'+s+'".'),s&&(e=w(e,s)),S(e)},d=A(),m=function(e){N(W,e),W.length=t.length,d.notifyListeners(W.location,W.action)},y=!1,g=null,b=function(){var e=B(),t=c(e);if(e!==t)I(t);else{var n=h(),r=W.location;if(!y&&C(r,n))return;if(g===E(n))return;g=null,_(n)}},_=function(e){y?(y=!1,m()):d.confirmTransitionTo(e,"POP",i,function(t){t?m({action:"POP",location:e}):M(e)})},M=function(e){var t=W.location,n=z.lastIndexOf(E(t));-1===n&&(n=0);var r=z.lastIndexOf(E(e));-1===r&&(r=0);var i=n-r;i&&(y=!0,H(i))},L=B(),F=c(L);L!==F&&I(F);var j=h(),z=[E(j)],H=function(e){l()(n,"Hash history go(n) causes a full page reload in this browser"),t.go(e)},V=0,U=function(e){1===(V+=e)?T(window,"hashchange",b):0===V&&O(window,"hashchange",b)},q=!1,W={length:t.length,action:"POP",location:j,createHref:function(e){return"#"+c(s+E(e))},push:function(e,t){l()(void 0===t,"Hash history cannot push state; it is ignored");var n=S(e,void 0,void 0,W.location);d.confirmTransitionTo(n,"PUSH",i,function(e){if(e){var t=E(n),r=c(s+t);if(B()!==r){g=t,function(e){window.location.hash=e}(r);var i=z.lastIndexOf(E(W.location)),o=z.slice(0,-1===i?0:i+1);o.push(t),z=o,m({action:"PUSH",location:n})}else l()(!1,"Hash history cannot PUSH the same path; a new entry will not be added to the history stack"),m()}})},replace:function(e,t){l()(void 0===t,"Hash history cannot replace state; it is ignored");var n=S(e,void 0,void 0,W.location);d.confirmTransitionTo(n,"REPLACE",i,function(e){if(e){var t=E(n),r=c(s+t);B()!==r&&(g=t,I(r));var i=z.indexOf(E(W.location));-1!==i&&(z[i]=t),m({action:"REPLACE",location:n})}})},go:H,goBack:function(){return H(-1)},goForward:function(){return H(1)},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=d.setPrompt(e);return q||(U(1),q=!0),function(){return q&&(q=!1,U(-1)),t()}},listen:function(e){var t=d.appendListener(e);return U(1),function(){U(-1),t()}}};return W},H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},V=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.getUserConfirmation,n=e.initialEntries,r=void 0===n?["/"]:n,i=e.initialIndex,o=void 0===i?0:i,a=e.keyLength,s=void 0===a?6:a,u=A(),c=function(e){V(y,e),y.length=y.entries.length,u.notifyListeners(y.location,y.action)},f=function(){return Math.random().toString(36).substr(2,s)},p=U(o,0,r.length-1),h=r.map(function(e){return S(e,void 0,"string"==typeof e?f():e.key||f())}),d=E,m=function(e){var n=U(y.index+e,0,y.entries.length-1),r=y.entries[n];u.confirmTransitionTo(r,"POP",t,function(e){e?c({action:"POP",location:r,index:n}):c()})},y={length:h.length,action:"POP",location:h[p],index:p,entries:h,createHref:d,push:function(e,n){l()(!("object"===(void 0===e?"undefined":H(e))&&void 0!==e.state&&void 0!==n),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var r=S(e,n,f(),y.location);u.confirmTransitionTo(r,"PUSH",t,function(e){if(e){var t=y.index+1,n=y.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),c({action:"PUSH",location:r,index:t,entries:n})}})},replace:function(e,n){l()(!("object"===(void 0===e?"undefined":H(e))&&void 0!==e.state&&void 0!==n),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var r=S(e,n,f(),y.location);u.confirmTransitionTo(r,"REPLACE",t,function(e){e&&(y.entries[y.index]=r,c({action:"REPLACE",location:r}))})},go:m,goBack:function(){return m(-1)},goForward:function(){return m(1)},canGo:function(e){var t=y.index+e;return t>=0&&t0&&void 0!==arguments[0]&&arguments[0];return u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return y},W=n(13),G=n.n(W),X=n(21),J=n.n(X),K=n(2),Y=n.n(K),$=Object.assign||function(e){for(var t=1;t may have only one child element"),this.unlisten=r.listen(function(){e.setState({match:e.computeMatch(r.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){G()(this.props.history===e.history,"You cannot change ")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?a.a.Children.only(e):null},t}(a.a.Component);Q.propTypes={history:Y.a.object.isRequired,children:Y.a.node},Q.contextTypes={router:Y.a.object},Q.childContextTypes={router:Y.a.object.isRequired};var ee=Q,te=ee;function ne(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var re=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(te,{history:this.history,children:this.props.children})},t}(a.a.Component);re.propTypes={basename:u.a.string,forceRefresh:u.a.bool,getUserConfirmation:u.a.func,keyLength:u.a.number,children:u.a.node};var ie=re;function oe(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ae=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { HashRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(te,{history:this.history,children:this.props.children})},t}(a.a.Component);ae.propTypes={basename:u.a.string,getUserConfirmation:u.a.func,hashType:u.a.oneOf(["hashbang","noslash","slash"]),children:u.a.node};var se=ae,ue=n(132),ce=n.n(ue),le=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["replace","to","innerRef"]);ce()(this.context.router,"You should not use outside a "),ce()(void 0!==t,'You must specify the "to" property');var i=this.context.router.history,o="string"==typeof t?S(t,null,null,i.location):t,s=i.createHref(o);return a.a.createElement("a",le({},r,{onClick:this.handleClick,href:s,ref:n}))},t}(a.a.Component);he.propTypes={onClick:u.a.func,target:u.a.string,replace:u.a.bool,to:u.a.oneOfType([u.a.string,u.a.object]).isRequired,innerRef:u.a.oneOfType([u.a.string,u.a.func])},he.defaultProps={replace:!1},he.contextTypes={router:u.a.shape({history:u.a.shape({push:u.a.func.isRequired,replace:u.a.func.isRequired,createHref:u.a.func.isRequired}).isRequired}).isRequired};var de=he;function me(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ye=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { MemoryRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(ee,{history:this.history,children:this.props.children})},t}(a.a.Component);ye.propTypes={initialEntries:Y.a.array,initialIndex:Y.a.number,getUserConfirmation:Y.a.func,keyLength:Y.a.number,children:Y.a.node};var ge=ye,ve=n(85),be=n.n(ve),xe={},we=0,ke=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var r=t,i=r.path,o=r.exact,a=void 0!==o&&o,s=r.strict,u=void 0!==s&&s,c=r.sensitive,l=void 0!==c&&c;if(null==i)return n;var f=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=xe[n]||(xe[n]={});if(r[e])return r[e];var i=[],o={re:be()(e,i,t),keys:i};return we<1e4&&(r[e]=o,we++),o}(i,{end:a,strict:u,sensitive:l}),p=f.re,h=f.keys,d=p.exec(e);if(!d)return null;var m=d[0],y=d.slice(1),g=e===m;return a&&!g?null:{path:i,url:"/"===i&&""===m?"/":m,isExact:g,params:h.reduce(function(e,t,n){return e[t.name]=y[n],e},{})}},Ee=Object.assign||function(e){for(var t=1;t or withRouter() outside a ");var u=t.route,c=(r||u.location).pathname;return ke(c,{path:i,strict:o,exact:a,sensitive:s},u.match)},t.prototype.componentWillMount=function(){G()(!(this.props.component&&this.props.render),"You should not use and in the same route; will be ignored"),G()(!(this.props.component&&this.props.children&&!Se(this.props.children)),"You should not use and in the same route; will be ignored"),G()(!(this.props.render&&this.props.children&&!Se(this.props.children)),"You should not use and in the same route; will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){G()(!(e.location&&!this.props.location),' elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),G()(!(!e.location&&this.props.location),' elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,r=t.component,i=t.render,o=this.context.router,s=o.history,u=o.route,c=o.staticContext,l={match:e,location:this.props.location||u.location,history:s,staticContext:c};return r?e?a.a.createElement(r,l):null:i?e?i(l):null:"function"==typeof n?n(l):n&&!Se(n)?a.a.Children.only(n):null},t}(a.a.Component);Ce.propTypes={computedMatch:Y.a.object,path:Y.a.string,exact:Y.a.bool,strict:Y.a.bool,sensitive:Y.a.bool,component:Y.a.func,render:Y.a.func,children:Y.a.oneOfType([Y.a.func,Y.a.node]),location:Y.a.object},Ce.contextTypes={router:Y.a.shape({history:Y.a.object.isRequired,route:Y.a.object.isRequired,staticContext:Y.a.object})},Ce.childContextTypes={router:Y.a.object.isRequired};var Ae=Ce,De=Ae,Te=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["to","exact","strict","location","activeClassName","className","activeStyle","style","isActive","aria-current"]),h="object"===(void 0===t?"undefined":Oe(t))?t.pathname:t,d=h&&h.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1");return a.a.createElement(De,{path:d,exact:n,strict:r,location:i,children:function(e){var n=e.location,r=e.match,i=!!(l?l(r,n):r);return a.a.createElement(de,Te({to:t,className:i?[s,o].filter(function(e){return e}).join(" "):s,style:i?Te({},c,u):c,"aria-current":i&&f||null},p))}})};Pe.propTypes={to:de.propTypes.to,exact:u.a.bool,strict:u.a.bool,location:u.a.object,activeClassName:u.a.string,className:u.a.string,activeStyle:u.a.object,style:u.a.object,isActive:u.a.func,"aria-current":u.a.oneOf(["page","step","location","date","time","true"])},Pe.defaultProps={activeClassName:"active","aria-current":"page"};var Me=Pe;var Le=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.enable=function(e){this.unblock&&this.unblock(),this.unblock=this.context.router.history.block(e)},t.prototype.disable=function(){this.unblock&&(this.unblock(),this.unblock=null)},t.prototype.componentWillMount=function(){J()(this.context.router,"You should not use outside a "),this.props.when&&this.enable(this.props.message)},t.prototype.componentWillReceiveProps=function(e){e.when?this.props.when&&this.props.message===e.message||this.enable(e.message):this.disable()},t.prototype.componentWillUnmount=function(){this.disable()},t.prototype.render=function(){return null},t}(a.a.Component);Le.propTypes={when:Y.a.bool,message:Y.a.oneOfType([Y.a.func,Y.a.string]).isRequired},Le.defaultProps={when:!0},Le.contextTypes={router:Y.a.shape({history:Y.a.shape({block:Y.a.func.isRequired}).isRequired}).isRequired};var Fe=Le,je={},Ne=0,Re=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"/"===e?e:function(e){var t=e,n=je[t]||(je[t]={});if(n[e])return n[e];var r=be.a.compile(e);return Ne<1e4&&(n[e]=r,Ne++),r}(e)(t,{pretty:!0})},Be=Object.assign||function(e){for(var t=1;t outside a "),this.isStatic()&&this.perform()},t.prototype.componentDidMount=function(){this.isStatic()||this.perform()},t.prototype.componentDidUpdate=function(e){var t=S(e.to),n=S(this.props.to);C(t,n)?G()(!1,"You tried to redirect to the same route you're currently on: \""+n.pathname+n.search+'"'):this.perform()},t.prototype.computeTo=function(e){var t=e.computedMatch,n=e.to;return t?"string"==typeof n?Re(n,t.params):Be({},n,{pathname:Re(n.pathname,t.params)}):n},t.prototype.perform=function(){var e=this.context.router.history,t=this.props.push,n=this.computeTo(this.props);t?e.push(n):e.replace(n)},t.prototype.render=function(){return null},t}(a.a.Component);Ie.propTypes={computedMatch:Y.a.object,push:Y.a.bool,from:Y.a.string,to:Y.a.oneOfType([Y.a.string,Y.a.object]).isRequired},Ie.defaultProps={push:!1},Ie.contextTypes={router:Y.a.shape({history:Y.a.shape({push:Y.a.func.isRequired,replace:Y.a.func.isRequired}).isRequired,staticContext:Y.a.object}).isRequired};var ze=Ie,He=Object.assign||function(e){for(var t=1;t",e)}},Xe=function(){},Je=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { StaticRouter as Router }`.")},t.prototype.render=function(){var e=this.props,t=e.basename,n=(e.context,e.location),r=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["basename","context","location"]),i={createHref:this.createHref,action:"POP",location:function(e,t){if(!e)return t;var n=Ue(e);return 0!==t.pathname.indexOf(n)?t:He({},t,{pathname:t.pathname.substr(n.length)})}(t,S(n)),push:this.handlePush,replace:this.handleReplace,go:Ge("go"),goBack:Ge("goBack"),goForward:Ge("goForward"),listen:this.handleListen,block:this.handleBlock};return a.a.createElement(ee,He({},r,{history:i}))},t}(a.a.Component);Je.propTypes={basename:Y.a.string,context:Y.a.object.isRequired,location:Y.a.oneOfType([Y.a.string,Y.a.object])},Je.defaultProps={basename:"",location:"/"},Je.childContextTypes={router:Y.a.object.isRequired};var Ke=Je;var Ye=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){J()(this.context.router,"You should not use outside a ")},t.prototype.componentWillReceiveProps=function(e){G()(!(e.location&&!this.props.location),' elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),G()(!(!e.location&&this.props.location),' elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,r=void 0,i=void 0;return a.a.Children.forEach(t,function(t){if(null==r&&a.a.isValidElement(t)){var o=t.props,s=o.path,u=o.exact,c=o.strict,l=o.sensitive,f=o.from,p=s||f;i=t,r=ke(n.pathname,{path:p,exact:u,strict:c,sensitive:l},e.match)}}),r?a.a.cloneElement(i,{location:n,computedMatch:r}):null},t}(a.a.Component);Ye.contextTypes={router:Y.a.shape({route:Y.a.object.isRequired}).isRequired},Ye.propTypes={children:Y.a.node,location:Y.a.object};var $e=Ye,Ze=Re,Qe=ke,et=n(42),tt=n.n(et),nt=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(t,["wrappedComponentRef"]);return a.a.createElement(Ae,{children:function(t){return a.a.createElement(e,nt({},r,t,{ref:n}))}})};return t.displayName="withRouter("+(e.displayName||e.name)+")",t.WrappedComponent=e,t.propTypes={wrappedComponentRef:Y.a.func},tt()(t,e)};n.d(t,"BrowserRouter",function(){return ie}),n.d(t,"HashRouter",function(){return se}),n.d(t,"Link",function(){return de}),n.d(t,"MemoryRouter",function(){return ge}),n.d(t,"NavLink",function(){return Me}),n.d(t,"Prompt",function(){return Fe}),n.d(t,"Redirect",function(){return ze}),n.d(t,"Route",function(){return De}),n.d(t,"Router",function(){return te}),n.d(t,"StaticRouter",function(){return Ke}),n.d(t,"Switch",function(){return $e}),n.d(t,"generatePath",function(){return Ze}),n.d(t,"matchPath",function(){return Qe}),n.d(t,"withRouter",function(){return rt})},function(e,t,n){"use strict";e.exports=function(e,t){var n=[],i=-1,o=e.length;t&&n.push(r("text","\n"));for(;++i1?t-1:0),r=1;r1)for(var n=1;n=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){"use strict";var r={};function i(e,t,n){var o,a,s,u,c,l="";for("string"!=typeof t&&(n=t,t=i.defaultChars),void 0===n&&(n=!0),c=function(e){var t,n,i=r[e];if(i)return i;for(i=r[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?i.push(n):i.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t=55296&&s<=57343){if(s>=55296&&s<=56319&&o+1=56320&&u<=57343){l+=encodeURIComponent(e[o]+e[o+1]),o++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[o]);return l}i.defaultChars=";/?:@&=+$,-_.!~*'()#",i.componentChars="-_.!~*'()",e.exports=i},function(e,t,n){"use strict"; +!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;t1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],r=t&&t.split("/")||[],i=e&&h(e),o=t&&h(t),a=i||o;if(e&&h(e)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";var s=void 0;if(r.length){var u=r[r.length-1];s="."===u||".."===u||""===u}else s=!1;for(var c=0,l=r.length;l>=0;l--){var f=r[l];"."===f?d(r,l):".."===f?(d(r,l),c++):c&&(d(r,l),c--)}if(!a)for(;c--;c)r.unshift("..");!a||""===r[0]||r[0]&&h(r[0])||r.unshift("");var p=r.join("/");return s&&"/"!==p.substr(-1)&&(p+="/"),p},y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var g=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every(function(t,r){return e(t,n[r])});var r=void 0===t?"undefined":y(t);if(r!==(void 0===n?"undefined":y(n)))return!1;if("object"===r){var i=t.valueOf(),o=n.valueOf();if(i!==t||o!==n)return e(i,o);var a=Object.keys(t),s=Object.keys(n);return a.length===s.length&&a.every(function(r){return e(t[r],n[r])})}return!1},v=function(e){return"/"===e.charAt(0)?e:"/"+e},b=function(e){return"/"===e.charAt(0)?e.substr(1):e},x=function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)},w=function(e,t){return x(e,t)?e.substr(t.length):e},k=function(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e},E=function(e){var t=e.pathname,n=e.search,r=e.hash,i=t||"/";return n&&"?"!==n&&(i+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(i+="#"===r.charAt(0)?r:"#"+r),i},_=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};p()(D,"Browser history needs a DOM");var t=window.history,n=function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history}(),r=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e.forceRefresh,o=void 0!==i&&i,a=e.getUserConfirmation,s=void 0===a?P:a,u=e.keyLength,c=void 0===u?6:u,f=e.basename?k(v(e.basename)):"",h=function(e){var t=e||{},n=t.key,r=t.state,i=window.location,o=i.pathname+i.search+i.hash;return l()(!f||x(o,f),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+o+'" to begin with "'+f+'".'),f&&(o=w(o,f)),S(o,r,n)},d=function(){return Math.random().toString(36).substr(2,c)},m=A(),y=function(e){L(U,e),U.length=t.length,m.notifyListeners(U.location,U.action)},g=function(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||C(h(e.state))},b=function(){C(h(F()))},_=!1,C=function(e){_?(_=!1,y()):m.confirmTransitionTo(e,"POP",s,function(t){t?y({action:"POP",location:e}):j(e)})},j=function(e){var t=U.location,n=B.indexOf(t.key);-1===n&&(n=0);var r=B.indexOf(e.key);-1===r&&(r=0);var i=n-r;i&&(_=!0,I(i))},N=h(F()),B=[N.key],R=function(e){return f+E(e)},I=function(e){t.go(e)},z=0,H=function(e){1===(z+=e)?(T(window,"popstate",g),r&&T(window,"hashchange",b)):0===z&&(O(window,"popstate",g),r&&O(window,"hashchange",b))},V=!1,U={length:t.length,action:"POP",location:N,createHref:R,push:function(e,r){l()(!("object"===(void 0===e?"undefined":M(e))&&void 0!==e.state&&void 0!==r),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var i=S(e,r,d(),U.location);m.confirmTransitionTo(i,"PUSH",s,function(e){if(e){var r=R(i),a=i.key,s=i.state;if(n)if(t.pushState({key:a,state:s},null,r),o)window.location.href=r;else{var u=B.indexOf(U.location.key),c=B.slice(0,-1===u?0:u+1);c.push(i.key),B=c,y({action:"PUSH",location:i})}else l()(void 0===s,"Browser history cannot push state in browsers that do not support HTML5 history"),window.location.href=r}})},replace:function(e,r){l()(!("object"===(void 0===e?"undefined":M(e))&&void 0!==e.state&&void 0!==r),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var i=S(e,r,d(),U.location);m.confirmTransitionTo(i,"REPLACE",s,function(e){if(e){var r=R(i),a=i.key,s=i.state;if(n)if(t.replaceState({key:a,state:s},null,r),o)window.location.replace(r);else{var u=B.indexOf(U.location.key);-1!==u&&(B[u]=i.key),y({action:"REPLACE",location:i})}else l()(void 0===s,"Browser history cannot replace state in browsers that do not support HTML5 history"),window.location.replace(r)}})},go:I,goBack:function(){return I(-1)},goForward:function(){return I(1)},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=m.setPrompt(e);return V||(H(1),V=!0),function(){return V&&(V=!1,H(-1)),t()}},listen:function(e){var t=m.appendListener(e);return H(1),function(){H(-1),t()}}};return U},N=Object.assign||function(e){for(var t=1;t=0?t:0)+"#"+e)},z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};p()(D,"Hash history needs a DOM");var t=window.history,n=-1===window.navigator.userAgent.indexOf("Firefox"),r=e.getUserConfirmation,i=void 0===r?P:r,o=e.hashType,a=void 0===o?"slash":o,s=e.basename?k(v(e.basename)):"",u=B[a],c=u.encodePath,f=u.decodePath,h=function(){var e=f(R());return l()(!s||x(e,s),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+e+'" to begin with "'+s+'".'),s&&(e=w(e,s)),S(e)},d=A(),m=function(e){N(W,e),W.length=t.length,d.notifyListeners(W.location,W.action)},y=!1,g=null,b=function(){var e=R(),t=c(e);if(e!==t)I(t);else{var n=h(),r=W.location;if(!y&&C(r,n))return;if(g===E(n))return;g=null,_(n)}},_=function(e){y?(y=!1,m()):d.confirmTransitionTo(e,"POP",i,function(t){t?m({action:"POP",location:e}):M(e)})},M=function(e){var t=W.location,n=z.lastIndexOf(E(t));-1===n&&(n=0);var r=z.lastIndexOf(E(e));-1===r&&(r=0);var i=n-r;i&&(y=!0,H(i))},L=R(),F=c(L);L!==F&&I(F);var j=h(),z=[E(j)],H=function(e){l()(n,"Hash history go(n) causes a full page reload in this browser"),t.go(e)},V=0,U=function(e){1===(V+=e)?T(window,"hashchange",b):0===V&&O(window,"hashchange",b)},q=!1,W={length:t.length,action:"POP",location:j,createHref:function(e){return"#"+c(s+E(e))},push:function(e,t){l()(void 0===t,"Hash history cannot push state; it is ignored");var n=S(e,void 0,void 0,W.location);d.confirmTransitionTo(n,"PUSH",i,function(e){if(e){var t=E(n),r=c(s+t);if(R()!==r){g=t,function(e){window.location.hash=e}(r);var i=z.lastIndexOf(E(W.location)),o=z.slice(0,-1===i?0:i+1);o.push(t),z=o,m({action:"PUSH",location:n})}else l()(!1,"Hash history cannot PUSH the same path; a new entry will not be added to the history stack"),m()}})},replace:function(e,t){l()(void 0===t,"Hash history cannot replace state; it is ignored");var n=S(e,void 0,void 0,W.location);d.confirmTransitionTo(n,"REPLACE",i,function(e){if(e){var t=E(n),r=c(s+t);R()!==r&&(g=t,I(r));var i=z.indexOf(E(W.location));-1!==i&&(z[i]=t),m({action:"REPLACE",location:n})}})},go:H,goBack:function(){return H(-1)},goForward:function(){return H(1)},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=d.setPrompt(e);return q||(U(1),q=!0),function(){return q&&(q=!1,U(-1)),t()}},listen:function(e){var t=d.appendListener(e);return U(1),function(){U(-1),t()}}};return W},H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},V=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.getUserConfirmation,n=e.initialEntries,r=void 0===n?["/"]:n,i=e.initialIndex,o=void 0===i?0:i,a=e.keyLength,s=void 0===a?6:a,u=A(),c=function(e){V(y,e),y.length=y.entries.length,u.notifyListeners(y.location,y.action)},f=function(){return Math.random().toString(36).substr(2,s)},p=U(o,0,r.length-1),h=r.map(function(e){return S(e,void 0,"string"==typeof e?f():e.key||f())}),d=E,m=function(e){var n=U(y.index+e,0,y.entries.length-1),r=y.entries[n];u.confirmTransitionTo(r,"POP",t,function(e){e?c({action:"POP",location:r,index:n}):c()})},y={length:h.length,action:"POP",location:h[p],index:p,entries:h,createHref:d,push:function(e,n){l()(!("object"===(void 0===e?"undefined":H(e))&&void 0!==e.state&&void 0!==n),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var r=S(e,n,f(),y.location);u.confirmTransitionTo(r,"PUSH",t,function(e){if(e){var t=y.index+1,n=y.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),c({action:"PUSH",location:r,index:t,entries:n})}})},replace:function(e,n){l()(!("object"===(void 0===e?"undefined":H(e))&&void 0!==e.state&&void 0!==n),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var r=S(e,n,f(),y.location);u.confirmTransitionTo(r,"REPLACE",t,function(e){e&&(y.entries[y.index]=r,c({action:"REPLACE",location:r}))})},go:m,goBack:function(){return m(-1)},goForward:function(){return m(1)},canGo:function(e){var t=y.index+e;return t>=0&&t0&&void 0!==arguments[0]&&arguments[0];return u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return y},W=n(13),G=n.n(W),X=n(22),J=n.n(X),K=n(2),Y=n.n(K),$=Object.assign||function(e){for(var t=1;t may have only one child element"),this.unlisten=r.listen(function(){e.setState({match:e.computeMatch(r.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){G()(this.props.history===e.history,"You cannot change ")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?a.a.Children.only(e):null},t}(a.a.Component);Q.propTypes={history:Y.a.object.isRequired,children:Y.a.node},Q.contextTypes={router:Y.a.object},Q.childContextTypes={router:Y.a.object.isRequired};var ee=Q,te=ee;function ne(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var re=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(te,{history:this.history,children:this.props.children})},t}(a.a.Component);re.propTypes={basename:u.a.string,forceRefresh:u.a.bool,getUserConfirmation:u.a.func,keyLength:u.a.number,children:u.a.node};var ie=re;function oe(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ae=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { HashRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(te,{history:this.history,children:this.props.children})},t}(a.a.Component);ae.propTypes={basename:u.a.string,getUserConfirmation:u.a.func,hashType:u.a.oneOf(["hashbang","noslash","slash"]),children:u.a.node};var se=ae,ue=n(132),ce=n.n(ue),le=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["replace","to","innerRef"]);ce()(this.context.router,"You should not use outside a "),ce()(void 0!==t,'You must specify the "to" property');var i=this.context.router.history,o="string"==typeof t?S(t,null,null,i.location):t,s=i.createHref(o);return a.a.createElement("a",le({},r,{onClick:this.handleClick,href:s,ref:n}))},t}(a.a.Component);he.propTypes={onClick:u.a.func,target:u.a.string,replace:u.a.bool,to:u.a.oneOfType([u.a.string,u.a.object]).isRequired,innerRef:u.a.oneOfType([u.a.string,u.a.func])},he.defaultProps={replace:!1},he.contextTypes={router:u.a.shape({history:u.a.shape({push:u.a.func.isRequired,replace:u.a.func.isRequired,createHref:u.a.func.isRequired}).isRequired}).isRequired};var de=he;function me(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var ye=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { MemoryRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(ee,{history:this.history,children:this.props.children})},t}(a.a.Component);ye.propTypes={initialEntries:Y.a.array,initialIndex:Y.a.number,getUserConfirmation:Y.a.func,keyLength:Y.a.number,children:Y.a.node};var ge=ye,ve=n(85),be=n.n(ve),xe={},we=0,ke=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var r=t,i=r.path,o=r.exact,a=void 0!==o&&o,s=r.strict,u=void 0!==s&&s,c=r.sensitive,l=void 0!==c&&c;if(null==i)return n;var f=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=xe[n]||(xe[n]={});if(r[e])return r[e];var i=[],o={re:be()(e,i,t),keys:i};return we<1e4&&(r[e]=o,we++),o}(i,{end:a,strict:u,sensitive:l}),p=f.re,h=f.keys,d=p.exec(e);if(!d)return null;var m=d[0],y=d.slice(1),g=e===m;return a&&!g?null:{path:i,url:"/"===i&&""===m?"/":m,isExact:g,params:h.reduce(function(e,t,n){return e[t.name]=y[n],e},{})}},Ee=Object.assign||function(e){for(var t=1;t or withRouter() outside a ");var u=t.route,c=(r||u.location).pathname;return ke(c,{path:i,strict:o,exact:a,sensitive:s},u.match)},t.prototype.componentWillMount=function(){G()(!(this.props.component&&this.props.render),"You should not use and in the same route; will be ignored"),G()(!(this.props.component&&this.props.children&&!Se(this.props.children)),"You should not use and in the same route; will be ignored"),G()(!(this.props.render&&this.props.children&&!Se(this.props.children)),"You should not use and in the same route; will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){G()(!(e.location&&!this.props.location),' elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),G()(!(!e.location&&this.props.location),' elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,r=t.component,i=t.render,o=this.context.router,s=o.history,u=o.route,c=o.staticContext,l={match:e,location:this.props.location||u.location,history:s,staticContext:c};return r?e?a.a.createElement(r,l):null:i?e?i(l):null:"function"==typeof n?n(l):n&&!Se(n)?a.a.Children.only(n):null},t}(a.a.Component);Ce.propTypes={computedMatch:Y.a.object,path:Y.a.string,exact:Y.a.bool,strict:Y.a.bool,sensitive:Y.a.bool,component:Y.a.func,render:Y.a.func,children:Y.a.oneOfType([Y.a.func,Y.a.node]),location:Y.a.object},Ce.contextTypes={router:Y.a.shape({history:Y.a.object.isRequired,route:Y.a.object.isRequired,staticContext:Y.a.object})},Ce.childContextTypes={router:Y.a.object.isRequired};var Ae=Ce,De=Ae,Te=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["to","exact","strict","location","activeClassName","className","activeStyle","style","isActive","aria-current"]),h="object"===(void 0===t?"undefined":Oe(t))?t.pathname:t,d=h&&h.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1");return a.a.createElement(De,{path:d,exact:n,strict:r,location:i,children:function(e){var n=e.location,r=e.match,i=!!(l?l(r,n):r);return a.a.createElement(de,Te({to:t,className:i?[s,o].filter(function(e){return e}).join(" "):s,style:i?Te({},c,u):c,"aria-current":i&&f||null},p))}})};Pe.propTypes={to:de.propTypes.to,exact:u.a.bool,strict:u.a.bool,location:u.a.object,activeClassName:u.a.string,className:u.a.string,activeStyle:u.a.object,style:u.a.object,isActive:u.a.func,"aria-current":u.a.oneOf(["page","step","location","date","time","true"])},Pe.defaultProps={activeClassName:"active","aria-current":"page"};var Me=Pe;var Le=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.enable=function(e){this.unblock&&this.unblock(),this.unblock=this.context.router.history.block(e)},t.prototype.disable=function(){this.unblock&&(this.unblock(),this.unblock=null)},t.prototype.componentWillMount=function(){J()(this.context.router,"You should not use outside a "),this.props.when&&this.enable(this.props.message)},t.prototype.componentWillReceiveProps=function(e){e.when?this.props.when&&this.props.message===e.message||this.enable(e.message):this.disable()},t.prototype.componentWillUnmount=function(){this.disable()},t.prototype.render=function(){return null},t}(a.a.Component);Le.propTypes={when:Y.a.bool,message:Y.a.oneOfType([Y.a.func,Y.a.string]).isRequired},Le.defaultProps={when:!0},Le.contextTypes={router:Y.a.shape({history:Y.a.shape({block:Y.a.func.isRequired}).isRequired}).isRequired};var Fe=Le,je={},Ne=0,Be=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"/"===e?e:function(e){var t=e,n=je[t]||(je[t]={});if(n[e])return n[e];var r=be.a.compile(e);return Ne<1e4&&(n[e]=r,Ne++),r}(e)(t,{pretty:!0})},Re=Object.assign||function(e){for(var t=1;t outside a "),this.isStatic()&&this.perform()},t.prototype.componentDidMount=function(){this.isStatic()||this.perform()},t.prototype.componentDidUpdate=function(e){var t=S(e.to),n=S(this.props.to);C(t,n)?G()(!1,"You tried to redirect to the same route you're currently on: \""+n.pathname+n.search+'"'):this.perform()},t.prototype.computeTo=function(e){var t=e.computedMatch,n=e.to;return t?"string"==typeof n?Be(n,t.params):Re({},n,{pathname:Be(n.pathname,t.params)}):n},t.prototype.perform=function(){var e=this.context.router.history,t=this.props.push,n=this.computeTo(this.props);t?e.push(n):e.replace(n)},t.prototype.render=function(){return null},t}(a.a.Component);Ie.propTypes={computedMatch:Y.a.object,push:Y.a.bool,from:Y.a.string,to:Y.a.oneOfType([Y.a.string,Y.a.object]).isRequired},Ie.defaultProps={push:!1},Ie.contextTypes={router:Y.a.shape({history:Y.a.shape({push:Y.a.func.isRequired,replace:Y.a.func.isRequired}).isRequired,staticContext:Y.a.object}).isRequired};var ze=Ie,He=Object.assign||function(e){for(var t=1;t",e)}},Xe=function(){},Je=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,o=Array(i),a=0;a ignores the history prop. To use a custom history, use `import { Router }` instead of `import { StaticRouter as Router }`.")},t.prototype.render=function(){var e=this.props,t=e.basename,n=(e.context,e.location),r=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["basename","context","location"]),i={createHref:this.createHref,action:"POP",location:function(e,t){if(!e)return t;var n=Ue(e);return 0!==t.pathname.indexOf(n)?t:He({},t,{pathname:t.pathname.substr(n.length)})}(t,S(n)),push:this.handlePush,replace:this.handleReplace,go:Ge("go"),goBack:Ge("goBack"),goForward:Ge("goForward"),listen:this.handleListen,block:this.handleBlock};return a.a.createElement(ee,He({},r,{history:i}))},t}(a.a.Component);Je.propTypes={basename:Y.a.string,context:Y.a.object.isRequired,location:Y.a.oneOfType([Y.a.string,Y.a.object])},Je.defaultProps={basename:"",location:"/"},Je.childContextTypes={router:Y.a.object.isRequired};var Ke=Je;var Ye=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){J()(this.context.router,"You should not use outside a ")},t.prototype.componentWillReceiveProps=function(e){G()(!(e.location&&!this.props.location),' elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),G()(!(!e.location&&this.props.location),' elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,r=void 0,i=void 0;return a.a.Children.forEach(t,function(t){if(null==r&&a.a.isValidElement(t)){var o=t.props,s=o.path,u=o.exact,c=o.strict,l=o.sensitive,f=o.from,p=s||f;i=t,r=ke(n.pathname,{path:p,exact:u,strict:c,sensitive:l},e.match)}}),r?a.a.cloneElement(i,{location:n,computedMatch:r}):null},t}(a.a.Component);Ye.contextTypes={router:Y.a.shape({route:Y.a.object.isRequired}).isRequired},Ye.propTypes={children:Y.a.node,location:Y.a.object};var $e=Ye,Ze=Be,Qe=ke,et=n(42),tt=n.n(et),nt=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(t,["wrappedComponentRef"]);return a.a.createElement(Ae,{children:function(t){return a.a.createElement(e,nt({},r,t,{ref:n}))}})};return t.displayName="withRouter("+(e.displayName||e.name)+")",t.WrappedComponent=e,t.propTypes={wrappedComponentRef:Y.a.func},tt()(t,e)};n.d(t,"BrowserRouter",function(){return ie}),n.d(t,"HashRouter",function(){return se}),n.d(t,"Link",function(){return de}),n.d(t,"MemoryRouter",function(){return ge}),n.d(t,"NavLink",function(){return Me}),n.d(t,"Prompt",function(){return Fe}),n.d(t,"Redirect",function(){return ze}),n.d(t,"Route",function(){return De}),n.d(t,"Router",function(){return te}),n.d(t,"StaticRouter",function(){return Ke}),n.d(t,"Switch",function(){return $e}),n.d(t,"generatePath",function(){return Ze}),n.d(t,"matchPath",function(){return Qe}),n.d(t,"withRouter",function(){return rt})},function(e,t,n){"use strict";e.exports=function(e,t){var n=[],i=-1,o=e.length;t&&n.push(r("text","\n"));for(;++i1?t-1:0),r=1;r1)for(var n=1;n=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){"use strict";var r={};function i(e,t,n){var o,a,s,u,c,l="";for("string"!=typeof t&&(n=t,t=i.defaultChars),void 0===n&&(n=!0),c=function(e){var t,n,i=r[e];if(i)return i;for(i=r[e]=[],t=0;t<128;t++)n=String.fromCharCode(t),/^[0-9a-z]$/i.test(n)?i.push(n):i.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t=55296&&s<=57343){if(s>=55296&&s<=56319&&o+1=56320&&u<=57343){l+=encodeURIComponent(e[o]+e[o+1]),o++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[o]);return l}i.defaultChars=";/?:@&=+$,-_.!~*'()#",i.componentChars="-_.!~*'()",e.exports=i},function(e,t,n){"use strict"; /*! * repeat-string * * Copyright (c) 2014-2015, Jon Schlinkert. * Licensed under the MIT License. - */var r,i="";e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var n=e.length*t;if(r!==e||void 0===r)r=e,i="";else if(i.length>=n)return i.substr(0,n);for(;n>i.length&&t>1;)1&t&&(i+=e),t>>=1,e+=e;return i=(i+=e).substr(0,n)}},function(e,t,n){"use strict";e.exports=s;var r=n(147),i=!0,o="skip",a=!1;function s(e,t,n,s){function u(e,c,l){var f;return c=c||(l?0:null),t&&e.type!==t&&!r(t,e,c,l||null)||(f=n(e,c,l||null)),f===a?f:e.children&&f!==o&&function(e,t){var n,r,o=s?-1:1,c=(s?e.length:-1)+o;for(;c>-1&&c=48&&t<=57}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){"use strict";var r=n(45);e.exports=r.DEFAULT=new r({include:[n(55)],explicit:[n(432),n(431),n(430)]})},function(e,t,n){"use strict";const r=n(163),i=n(98);e.exports=function(e){const t=Object.assign({},e);return t.delimiters=i.arrayify(t.delims||t.delimiters||"---"),1===t.delimiters.length&&t.delimiters.push(t.delimiters[0]),t.language=(t.language||t.lang||"yaml").toLowerCase(),t.engines=Object.assign({},r,t.parsers,t.engines),t}},function(e,t,n){"use strict";t.__esModule=!0;var r=o(n(499)),i=o(n(174));function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,r.default)(Object(e)))return function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var s,u=(0,i.default)(e);!(r=(s=u.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(520));t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=n)return i.substr(0,n);for(;n>i.length&&t>1;)1&t&&(i+=e),t>>=1,e+=e;return i=(i+=e).substr(0,n)}},function(e,t,n){"use strict";e.exports=s;var r=n(147),i=!0,o="skip",a=!1;function s(e,t,n,s){function u(e,c,l){var f;return c=c||(l?0:null),t&&e.type!==t&&!r(t,e,c,l||null)||(f=n(e,c,l||null)),f===a?f:e.children&&f!==o&&function(e,t){var n,r,o=s?-1:1,c=(s?e.length:-1)+o;for(;c>-1&&c=48&&t<=57}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){"use strict";var r=n(45);e.exports=r.DEFAULT=new r({include:[n(55)],explicit:[n(433),n(432),n(431)]})},function(e,t,n){"use strict";const r=n(163),i=n(98);e.exports=function(e){const t=Object.assign({},e);return t.delimiters=i.arrayify(t.delims||t.delimiters||"---"),1===t.delimiters.length&&t.delimiters.push(t.delimiters[0]),t.language=(t.language||t.lang||"yaml").toLowerCase(),t.engines=Object.assign({},r,t.parsers,t.engines),t}},function(e,t,n){"use strict";t.__esModule=!0;var r=o(n(500)),i=o(n(175));function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,r.default)(Object(e)))return function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var s,u=(0,i.default)(e);!(r=(s=u.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.colors=void 0;var r=n(528),i=n(527),o={bodytext:r.gray[9],black:r.black,white:r.white,gray:r.gray,blue:r.blue,green:r.green,orange:r.orange,purple:r.purple,red:r.red,yellow:r.yellow,blackfade15:"rgba(27, 31, 35, 0.15)",blackfade20:"rgba(27, 31, 35, 0.20)",whitefade15:"rgba(255, 255, 255, 0.15)",state:{error:r.red[5],failure:r.red[5],pending:r.yellow[7],queued:r.yellow[7],success:r.green[5],unknown:r.gray[4]}},a={breakpoints:["544px","768px","1012px","1280px"],maxWidths:{small:"544px",medium:"768px",large:"1012px",xlarge:"1280px"},fonts:{normal:s(["-apple-system","BlinkMacSystemFont","Segoe UI","Helvetica","Arial","sans-serif","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"]),mono:s(["SFMono-Regular","Consolas","Liberation Mono","Menlo","Courier","monospace"])},colors:o,borders:[0,"1px solid"],fontSizes:i.fontSizes,lineHeights:i.lineHeights,radii:[0,3,6],shadows:{small:"0 1px 1px rgba(27, 31, 35, 0.1)",medium:"0 1px 5px rgba(27, 31, 35, 0.15)",large:"0 1px 15px rgba(27, 31, 35, 0.15)","extra-large":"0 10px 50px rgba(27, 31, 35, 0.07)"},space:[0,4,8,16,24,32,40,48]};function s(e){return e.map(function(e){return e.includes(" ")?'"'+e+'"':e}).join(", ")}t.default=a,t.colors=o},function(e,t,n){"use strict"; /* object-assign (c) Sindre Sorhus @license MIT -*/var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;u65535&&(M+=l((D-=65536)>>>10|55296),D=56320|1023&D),D=M+l(D))):N!==h&&O(w,z)),D?(se(),B=oe(),Q=H-1,te+=H-j+1,ie.push(D),(I=oe()).offset++,W&&W.call(J,D,{start:B,end:I},e.slice(j-1,H)),B=I):(s=e.slice(j-1,H),re+=s,te+=s.length,Q=H-1)}return ie.join("");function oe(){return{line:ne,column:te,offset:Q+(Y.offset||0)}}function ae(t){return e.charAt(t)}function se(){re&&(ie.push(re),q&&q.call(X,re,{start:B,end:oe()}),re="")}}(e,s)};var c={}.hasOwnProperty,l=String.fromCharCode,f=Function.prototype,p={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},h="named",d="hexadecimal",m="decimal",y={};y[d]=16,y[m]=10;var g={};g[h]=u,g[m]=a,g[d]=s;var v=1,b=2,x=3,w=4,k=5,E=6,_=7,S={};function C(e){return e>=55296&&e<=57343||e>1114111}function A(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}S[v]="Named character references must be terminated by a semicolon",S[b]="Numeric character references must be terminated by a semicolon",S[x]="Named character references cannot be empty",S[w]="Numeric character references cannot be empty",S[k]="Named character references must be known",S[E]="Numeric character references cannot be disallowed",S[_]="Numeric character references cannot be outside the permissible Unicode range"},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.flatten=t.cartesianProduct=t.extendDefaultProps=t.displayObj=t.toSrcPath=t.titleize=t.isIndex=t.introPage=t.log=void 0;var r=c(n(61)),i=c(n(106)),o=c(n(9)),a=c(n(50)),s=c(n(29)),u=n(209);function c(e){return e&&e.__esModule?e:{default:e}}var l=function(e){return e.join(".")},f=function(e){return"object"===(void 0===e?"undefined":(0,r.default)(e))&&!function(e){return Array.isArray(e)}(e)};t.log=function(t){return e.env.VERBOSE&&console.log(t)},t.introPage=function(e){return e[ROOT_LEVEL_FILE]&&e[ROOT_LEVEL_FILE].find(function(e){return"introduction"===e.name})},t.isIndex=function(e){return/index\.md/.test(e)},t.titleize=function(e){return e.replace(/(?:^|\s|-)\S/g,function(e){return e.toUpperCase()}).replace(/(-|_)/g," ")},t.toSrcPath=function(e,t){return t.replace(/\md$/,"js").replace(e,"src").replace("components/","")},t.displayObj=function(e){return(0,s.default)(e).map(function(t){return t+"="+e[t]}).join(",")},t.extendDefaultProps=function(e,t){e.defaultProps=(0,a.default)({},e.defaultProps||{},t)},t.cartesianProduct=function(e){e.theme;var t=(0,o.default)(e,["theme"]),n=(0,u.reduce)((0,u.pipe)(u.xprod,(0,u.map)(u.unnest)),[[]]),r=(0,s.default)(t).reduce(function(e,n){return e.concat([function(e){return Array.isArray(e)?e:[e]}(t[n]).map(function(e){return(0,i.default)({},n,e)})])},[]);return(0,u.map)(u.mergeAll,n(r))},t.flatten=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return(0,s.default)(t).reduce(function(r,i){var o=t[i],s=n.concat([i]);return function(e){return"string"==typeof e}(o)?(r[l(s)]=o,r):f(o)?(0,a.default)(r,e(o,s)):(o.forEach(function(e,t){var n=l(s.concat([t]));r[n]=e}),r)},{})}}).call(this,n(59))},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){e.exports=!n(93)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t){var n=Object.prototype.toString;function r(e){return e.constructor?e.constructor.name:null}e.exports=function(e){if(void 0===e)return"undefined";if(null===e)return"null";var t=typeof e;if("boolean"===t)return"boolean";if("string"===t)return"string";if("number"===t)return"number";if("symbol"===t)return"symbol";if("function"===t)return function(e,t){return"GeneratorFunction"===r(e)}(e)?"generatorfunction":"function";if(function(e){return Array.isArray?Array.isArray(e):e instanceof Array}(e))return"array";if(function(e){if(e.constructor&&"function"==typeof e.constructor.isBuffer)return e.constructor.isBuffer(e);return!1}(e))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(e))return"arguments";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";if(function(e){return e instanceof RegExp||"string"==typeof e.flags&&"boolean"==typeof e.ignoreCase&&"boolean"==typeof e.multiline&&"boolean"==typeof e.global}(e))return"regexp";switch(r(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(e){return"function"==typeof e.throw&&"function"==typeof e.return&&"function"==typeof e.next}(e))return"generator";switch(t=n.call(e)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return t.slice(8,-1).toLowerCase().replace(/\s/g,"")}},function(e,t,n){"use strict";(function(e){const r=n(427),i=n(97);t.define=function(e,t,n){Reflect.defineProperty(e,t,{enumerable:!1,configurable:!0,writable:!0,value:n})},t.isBuffer=(e=>"buffer"===i(e)),t.isObject=(e=>"object"===i(e)),t.toBuffer=function(t){return"string"==typeof t?e.from(t):t},t.toString=function(e){if(t.isBuffer(e))return r(String(e));if("string"!=typeof e)throw new TypeError("expected input to be a string or buffer");return r(e)},t.arrayify=function(e){return e?Array.isArray(e)?e:[e]:[]},t.startsWith=function(e,t,n){return"number"!=typeof n&&(n=t.length),e.slice(0,n)===t}}).call(this,n(99).Buffer)},function(e,t,n){"use strict";(function(e){ +*/var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;u65535&&(M+=l((D-=65536)>>>10|55296),D=56320|1023&D),D=M+l(D))):N!==h&&O(w,z)),D?(se(),R=oe(),Q=H-1,te+=H-j+1,ie.push(D),(I=oe()).offset++,W&&W.call(J,D,{start:R,end:I},e.slice(j-1,H)),R=I):(s=e.slice(j-1,H),re+=s,te+=s.length,Q=H-1)}return ie.join("");function oe(){return{line:ne,column:te,offset:Q+(Y.offset||0)}}function ae(t){return e.charAt(t)}function se(){re&&(ie.push(re),q&&q.call(X,re,{start:R,end:oe()}),re="")}}(e,s)};var c={}.hasOwnProperty,l=String.fromCharCode,f=Function.prototype,p={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},h="named",d="hexadecimal",m="decimal",y={};y[d]=16,y[m]=10;var g={};g[h]=u,g[m]=a,g[d]=s;var v=1,b=2,x=3,w=4,k=5,E=6,_=7,S={};function C(e){return e>=55296&&e<=57343||e>1114111}function A(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}S[v]="Named character references must be terminated by a semicolon",S[b]="Numeric character references must be terminated by a semicolon",S[x]="Named character references cannot be empty",S[w]="Numeric character references cannot be empty",S[k]="Named character references must be known",S[E]="Numeric character references cannot be disallowed",S[_]="Numeric character references cannot be outside the permissible Unicode range"},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.flatten=t.cartesianProduct=t.extendDefaultProps=t.displayObj=t.toSrcPath=t.titleize=t.isIndex=t.introPage=t.log=void 0;var r=c(n(62)),i=c(n(106)),o=c(n(9)),a=c(n(50)),s=c(n(29)),u=n(209);function c(e){return e&&e.__esModule?e:{default:e}}var l=function(e){return e.join(".")},f=function(e){return"object"===(void 0===e?"undefined":(0,r.default)(e))&&!function(e){return Array.isArray(e)}(e)};t.log=function(t){return e.env.VERBOSE&&console.log(t)},t.introPage=function(e){return e[ROOT_LEVEL_FILE]&&e[ROOT_LEVEL_FILE].find(function(e){return"introduction"===e.name})},t.isIndex=function(e){return/index\.md/.test(e)},t.titleize=function(e){return e.replace(/(?:^|\s|-)\S/g,function(e){return e.toUpperCase()}).replace(/(-|_)/g," ")},t.toSrcPath=function(e,t){return t.replace(/\md$/,"js").replace(e,"src").replace("components/","")},t.displayObj=function(e){return(0,s.default)(e).map(function(t){return t+"="+e[t]}).join(",")},t.extendDefaultProps=function(e,t){e.defaultProps=(0,a.default)({},e.defaultProps||{},t)},t.cartesianProduct=function(e){e.theme;var t=(0,o.default)(e,["theme"]),n=(0,u.reduce)((0,u.pipe)(u.xprod,(0,u.map)(u.unnest)),[[]]),r=(0,s.default)(t).reduce(function(e,n){return e.concat([function(e){return Array.isArray(e)?e:[e]}(t[n]).map(function(e){return(0,i.default)({},n,e)})])},[]);return(0,u.map)(u.mergeAll,n(r))},t.flatten=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return(0,s.default)(t).reduce(function(r,i){var o=t[i],s=n.concat([i]);return function(e){return"string"==typeof e}(o)?(r[l(s)]=o,r):f(o)?(0,a.default)(r,e(o,s)):(o.forEach(function(e,t){var n=l(s.concat([t]));r[n]=e}),r)},{})}}).call(this,n(60))},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){e.exports=!n(93)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t){var n=Object.prototype.toString;function r(e){return e.constructor?e.constructor.name:null}e.exports=function(e){if(void 0===e)return"undefined";if(null===e)return"null";var t=typeof e;if("boolean"===t)return"boolean";if("string"===t)return"string";if("number"===t)return"number";if("symbol"===t)return"symbol";if("function"===t)return function(e,t){return"GeneratorFunction"===r(e)}(e)?"generatorfunction":"function";if(function(e){return Array.isArray?Array.isArray(e):e instanceof Array}(e))return"array";if(function(e){if(e.constructor&&"function"==typeof e.constructor.isBuffer)return e.constructor.isBuffer(e);return!1}(e))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(e))return"arguments";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";if(function(e){return e instanceof RegExp||"string"==typeof e.flags&&"boolean"==typeof e.ignoreCase&&"boolean"==typeof e.multiline&&"boolean"==typeof e.global}(e))return"regexp";switch(r(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(e){return"function"==typeof e.throw&&"function"==typeof e.return&&"function"==typeof e.next}(e))return"generator";switch(t=n.call(e)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return t.slice(8,-1).toLowerCase().replace(/\s/g,"")}},function(e,t,n){"use strict";(function(e){const r=n(428),i=n(97);t.define=function(e,t,n){Reflect.defineProperty(e,t,{enumerable:!1,configurable:!0,writable:!0,value:n})},t.isBuffer=(e=>"buffer"===i(e)),t.isObject=(e=>"object"===i(e)),t.toBuffer=function(t){return"string"==typeof t?e.from(t):t},t.toString=function(e){if(t.isBuffer(e))return r(String(e));if("string"!=typeof e)throw new TypeError("expected input to be a string or buffer");return r(e)},t.arrayify=function(e){return e?Array.isArray(e)?e:[e]:[]},t.startsWith=function(e,t,n){return"number"!=typeof n&&(n=t.length),e.slice(0,n)===t}}).call(this,n(99).Buffer)},function(e,t,n){"use strict";(function(e){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -var r=n(438),i=n(437),o=n(436);function a(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return H(e).length;default:if(r)return z(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function y(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:g(e,t,n,r,i);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):g(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,n,r,i){var o,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var l=-1;for(o=n;os&&(n=s-u),o=n;o>=0;o--){for(var f=!0,p=0;pi&&(r=i):r=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function _(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:c>223?3:c>191?2:1;if(i+f<=n)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(u=(15&c)<<12|(63&o)<<6|63&a)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(u=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),i+=f}return function(e){var t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rthis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return _(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},u.prototype.equals=function(e){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===u.compare(this,e)},u.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},u.prototype.compare=function(e,t,n,r,i){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var o=i-r,a=n-t,s=Math.min(o,a),c=this.slice(r,i),l=e.slice(t,n),f=0;fi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return b(this,e,t,n);case"ascii":return x(this,e,t,n);case"latin1":case"binary":return w(this,e,t,n);case"base64":return k(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function A(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",o=t;on)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,n,r,i,o){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function F(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function j(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,r,o){return o||j(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function R(e,t,n,r,o){return o||j(e,0,n,8),i.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)r+=this[e+--t]*i;return r},u.prototype.readUInt8=function(e,t){return t||P(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||P(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||P(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||P(e,t,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||P(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},u.prototype.readInt8=function(e,t){return t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||P(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){t||P(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||P(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||P(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||P(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||P(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return R(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return R(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function H(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,n(58))},function(e,t,n){"use strict";var r=n(45);e.exports=new r({explicit:[n(448),n(447),n(446)]})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(27)),i=c(n(26)),o=c(n(25)),a=c(n(24)),s=c(n(23)),u=c(n(0));function c(e){return e&&e.__esModule?e:{default:e}}var l=function(e){function t(){(0,i.default)(this,t);var e=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return e.state={},e}return(0,s.default)(t,e),(0,o.default)(t,[{key:"componentDidCatch",value:function(e){this.setState({err:e})}},{key:"componentWillReceiveProps",value:function(e){e.children!==this.props.children&&this.setState({err:null})}},{key:"render",value:function(){var e=this.state.err;return e?u.default.createElement("pre",null,e.toString()):this.props.children}}]),t}(u.default.Component);t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(27)),i=p(n(26)),o=p(n(25)),a=p(n(24)),s=p(n(23)),u=p(n(0)),c=p(n(38)),l=p(n(176)),f=n(464);p(n(32));function p(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(){(0,i.default)(this,t);var e=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return e.doc=null,e.win=null,e.div=null,e.getSrc=function(){var t=e.props,n=t.zoom,r=void 0===n?1:n,i=t.css,o=void 0===i?"":i,a=t.head,s="";return a&&(s=(0,f.renderToStaticMarkup)(a)),""+s+"\n
"},e.onLoad=function(t){e.doc=e.root.contentDocument,e.win=e.root.contentWindow,e.update(e.props)},e.update=function(t){var n=t.render,r=t.children;if(e.doc){var i=e.doc.getElementById("app");"function"==typeof n?l.default.render(n({document:e.doc,window:e.win}),i):l.default.render(r,i)}},e}return(0,s.default)(t,e),(0,o.default)(t,[{key:"componentWillReceiveProps",value:function(e){e.children!==this.props.children&&this.update(e)}},{key:"render",value:function(){var e=this,t=this.props,n=t.width,r=t.height,i=t.zoom,o=t.children;return u.default.createElement("iframe",{ref:function(t){return e.root=t},style:{width:n,height:r,zoom:i,pointerEvents:"none",display:"block",margin:0,overflow:"scroll",backgroundColor:"#fff",opacity:o?1:.25,border:0},srcDoc:this.getSrc(),scrolling:"yes",onLoad:this.onLoad})}}]),t}(u.default.Component);h.propTypes={head:c.default.node,zoom:c.default.number,width:c.default.string,height:c.default.string,css:c.default.string},h.defaultProps={zoom:1,width:"100%",height:"100%",css:"body{font-family:system-ui,sans-serif;line-height:1.5}"},t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6),i=(0,r.withSystemProps)({is:"div",display:"flex"},r.FLEX_CONTAINER);t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.complexStyle=t.themeGet=t.pseudoStyle=t.responsiveStyle=t.style=t.cloneFunc=t.getValue=t.merge=t.media=t.dec=t.breaks=t.fallbackTheme=t.mq=t.get=t.getWidth=t.arr=t.neg=t.px=t.num=t.is=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=Object.assign||function(e){for(var t=1;t1?h(e):100*e+"%"},t.get=function(e,t,n){return t.split(".").reduce(function(e,t){return e&&e[t]?e[t]:null},e)||n}),y=t.mq=function(e){return"@media screen and (min-width: "+h(e)+")"},g=t.fallbackTheme=function(e){return i({},s.default,m(e,"theme"))},v=t.breaks=function(e){return[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(e){return r.exec(e).slice(1)};function o(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!r;i--){var a=i>=0?arguments[i]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,r="/"===a.charAt(0))}return t=n(o(t.split("/"),function(e){return!!e}),!r).join("/"),(r?"/":"")+t||"."},t.normalize=function(e){var r=t.isAbsolute(e),i="/"===a(e,-1);return(e=n(o(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&i&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(o(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var i=r(e.split("/")),o=r(n.split("/")),a=Math.min(i.length,o.length),s=a,u=0;u0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(30),i=n(586),o=n(118),a=n(120)("IE_PROTO"),s=function(){},u=function(){var e,t=n(124)("iframe"),r=o.length;for(t.style.display="none",n(191).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("
bodytextblackwhite
gray.0gray.1gray.2gray.3gray.4gray.5gray.6gray.7gray.8gray.9
blue.0blue.1blue.2blue.3blue.4blue.5blue.6blue.7blue.8blue.9
green.0green.1green.2green.3green.4green.5green.6green.7green.8green.9
yellow.0yellow.1yellow.2yellow.3yellow.4yellow.5yellow.6yellow.7yellow.8yellow.9
orange.0orange.1orange.2orange.3orange.4orange.5orange.6orange.7orange.8orange.9
red.0red.1red.2red.3red.4red.5red.6red.7red.8red.9
purple.0purple.1purple.2purple.3purple.4purple.5purple.6purple.7purple.8purple.9
blackfade15blackfade20whitefade15
<Text mono m={1} color='bodytext'>bodytext</Text>
-<Text mono m={1} color='black'>black</Text>
-<Text mono m={1} color='white' bg='gray-dark'>white</Text>
-<Block mb={2}>
-  <Text mono m={1} color='gray.0'>gray.0</Text>
-  <Text mono m={1} color='gray.1'>gray.1</Text>
-  <Text mono m={1} color='gray.2'>gray.2</Text>
-  <Text mono m={1} color='gray.3'>gray.3</Text>
-  <Text mono m={1} color='gray.4'>gray.4</Text>
-  <Text mono m={1} color='gray.5'>gray.5</Text>
-  <Text mono m={1} color='gray.6'>gray.6</Text>
-  <Text mono m={1} color='gray.7'>gray.7</Text>
-  <Text mono m={1} color='gray.8'>gray.8</Text>
-  <Text mono m={1} color='gray.9'>gray.9</Text>
-</Block>
-<Block mb={2}>
-  <Text mono m={1} color='blue.0'>blue.0</Text>
-  <Text mono m={1} color='blue.1'>blue.1</Text>
-  <Text mono m={1} color='blue.2'>blue.2</Text>
-  <Text mono m={1} color='blue.3'>blue.3</Text>
-  <Text mono m={1} color='blue.4'>blue.4</Text>
-  <Text mono m={1} color='blue.5'>blue.5</Text>
-  <Text mono m={1} color='blue.6'>blue.6</Text>
-  <Text mono m={1} color='blue.7'>blue.7</Text>
-  <Text mono m={1} color='blue.8'>blue.8</Text>
-  <Text mono m={1} color='blue.9'>blue.9</Text>
-</Block>
-<Block mb={2}>
-  <Text mono m={1} color='green.0'>green.0</Text>
-  <Text mono m={1} color='green.1'>green.1</Text>
-  <Text mono m={1} color='green.2'>green.2</Text>
-  <Text mono m={1} color='green.3'>green.3</Text>
-  <Text mono m={1} color='green.4'>green.4</Text>
-  <Text mono m={1} color='green.5'>green.5</Text>
-  <Text mono m={1} color='green.6'>green.6</Text>
-  <Text mono m={1} color='green.7'>green.7</Text>
-  <Text mono m={1} color='green.8'>green.8</Text>
-  <Text mono m={1} color='green.9'>green.9</Text>
-</Block>
-<Block mb={2}>
-  <Text mono m={1} color='yellow.0'>yellow.0</Text>
-  <Text mono m={1} color='yellow.1'>yellow.1</Text>
-  <Text mono m={1} color='yellow.2'>yellow.2</Text>
-  <Text mono m={1} color='yellow.3'>yellow.3</Text>
-  <Text mono m={1} color='yellow.4'>yellow.4</Text>
-  <Text mono m={1} color='yellow.5'>yellow.5</Text>
-  <Text mono m={1} color='yellow.6'>yellow.6</Text>
-  <Text mono m={1} color='yellow.7'>yellow.7</Text>
-  <Text mono m={1} color='yellow.8'>yellow.8</Text>
-  <Text mono m={1} color='yellow.9'>yellow.9</Text>
-</Block>
-<Block mb={2}>
-  <Text mono m={1} color='orange.0'>orange.0</Text>
-  <Text mono m={1} color='orange.1'>orange.1</Text>
-  <Text mono m={1} color='orange.2'>orange.2</Text>
-  <Text mono m={1} color='orange.3'>orange.3</Text>
-  <Text mono m={1} color='orange.4'>orange.4</Text>
-  <Text mono m={1} color='orange.5'>orange.5</Text>
-  <Text mono m={1} color='orange.6'>orange.6</Text>
-  <Text mono m={1} color='orange.7'>orange.7</Text>
-  <Text mono m={1} color='orange.8'>orange.8</Text>
-  <Text mono m={1} color='orange.9'>orange.9</Text>
-</Block>
-<Block mb={2}>
-  <Text mono m={1} color='red.0'>red.0</Text>
-  <Text mono m={1} color='red.1'>red.1</Text>
-  <Text mono m={1} color='red.2'>red.2</Text>
-  <Text mono m={1} color='red.3'>red.3</Text>
-  <Text mono m={1} color='red.4'>red.4</Text>
-  <Text mono m={1} color='red.5'>red.5</Text>
-  <Text mono m={1} color='red.6'>red.6</Text>
-  <Text mono m={1} color='red.7'>red.7</Text>
-  <Text mono m={1} color='red.8'>red.8</Text>
-  <Text mono m={1} color='red.9'>red.9</Text>
-</Block>
-<Block mb={2}>
-  <Text mono m={1} color='purple.0'>purple.0</Text>
-  <Text mono m={1} color='purple.1'>purple.1</Text>
-  <Text mono m={1} color='purple.2'>purple.2</Text>
-  <Text mono m={1} color='purple.3'>purple.3</Text>
-  <Text mono m={1} color='purple.4'>purple.4</Text>
-  <Text mono m={1} color='purple.5'>purple.5</Text>
-  <Text mono m={1} color='purple.6'>purple.6</Text>
-  <Text mono m={1} color='purple.7'>purple.7</Text>
-  <Text mono m={1} color='purple.8'>purple.8</Text>
-  <Text mono m={1} color='purple.9'>purple.9</Text>
-</Block>
-<Text mono m={1} color='blackfade15'>blackfade15</Text>
-<Text mono m={1} color='blackfade20'>blackfade20</Text>
-<Text mono m={1} color='whitefade15'>whitefade15</Text>
fontSize=0 (12px)
fontSize=1 (14px)
fontSize=2 (16px)
fontSize=3 (20px)
fontSize=4 (24px)
fontSize=5 (32px)
fontSize=6 (40px)
fontSize=7 (48px)
<Block><Text fontSize={0}>fontSize={0} (12px)</Text></Block>
-<Block><Text fontSize={1}>fontSize={1} (14px)</Text></Block>
-<Block><Text fontSize={2}>fontSize={2} (16px)</Text></Block>
-<Block><Text fontSize={3}>fontSize={3} (20px)</Text></Block>
-<Block><Text fontSize={4}>fontSize={4} (24px)</Text></Block>
-<Block><Text fontSize={5}>fontSize={5} (32px)</Text></Block>
-<Block><Text fontSize={6}>fontSize={6} (40px)</Text></Block>
-<Block><Text fontSize={7}>fontSize={7} (48px)</Text></Block>

Margin props

The m prop sets uniform margins in the Primer spacing scale.

Directional variants mt, mr,mb, and ml set margins on each side individually, and the mx and my props set horizontal and vertical margins, respectively.

No margin
Uniform margin x1
Uniform margin x2
Uniform margin x3
Uniform margin x4
<Box m={0}>No margin</Box>
-<Box m={1}>Uniform margin x1</Box>
-<Box m={2}>Uniform margin x2</Box>
-<Box m={3}>Uniform margin x3</Box>
-<Box m={4}>Uniform margin x4</Box>
No padding
Uniform padding x1
Uniform padding x2
Uniform padding x3
Uniform padding x4
<Box p={0}>No padding</Box>
-<Box p={1}>Uniform padding x1</Box>
-<Box p={2}>Uniform padding x2</Box>
-<Box p={3}>Uniform padding x3</Box>
-<Box p={4}>Uniform padding x4</Box>
\ No newline at end of file diff --git a/docs/sandbox/index.html b/docs/sandbox/index.html index 088292c31b8..d0427be1ed3 100644 --- a/docs/sandbox/index.html +++ b/docs/sandbox/index.html @@ -9,14 +9,14 @@ margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; line-height: undefined; - }

Hello World!

All of the primer-react components are available in this sandbox!

This is a box with some mono text.
+    }

Hello World!

All of the primer-react components are available in this sandbox!

This is a box with some mono text.
 
-<Block p={4}>
+<Box p={4}>
   <Heading>Hello World!</Heading>
   <Text is='p'>
     All of the primer-react <NavLink to='/components'>components</NavLink> are available in this sandbox!
   </Text>
-  <Box my={4} p={2}>
+  <BorderBox my={4} p={2}>
     This is a box with <Text fontFamily="mono">some mono text</Text>.
-  </Box>
-</Block>
\ No newline at end of file + </BorderBox> +</Box>
\ No newline at end of file diff --git a/examples/_app.js b/examples/_app.js index 332fe1e6ca7..32b7a089df6 100644 --- a/examples/_app.js +++ b/examples/_app.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types' import {NavLink} from 'react-router-dom' import Styles from './doc-components/Styles' import Octicon, {Package} from '@githubprimer/octicons-react' -import {Block, Link, Text, UnderlineNav, UnderlineNavLink, theme} from '../src' +import {Box, Link, Text, UnderlineNav, UnderlineNavLink, theme} from '../src' import {name, repository, version} from '../package.json' const pkg = `${name}@${version}` @@ -15,7 +15,7 @@ export default function Page({render}) { - + @@ -34,8 +34,8 @@ export default function Page({render}) { Sandbox - {render()} - + {render()} + ) diff --git a/examples/component-examples/Avatar.js b/examples/component-examples/Avatar.js index 723ea4f3b7e..fe9cbd64405 100644 --- a/examples/component-examples/Avatar.js +++ b/examples/component-examples/Avatar.js @@ -1,35 +1,35 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, Avatar} from '../../src' +import {Box, Avatar} from '../../src' const AvatarExample = { name: 'Avatar', element: (
- + `} scope={{Avatar}} /> - - + + `} scope={{Avatar}} /> - - + + `} scope={{Avatar}} /> - - + + `} scope={{Avatar}} /> - +
) } diff --git a/examples/component-examples/Block.js b/examples/component-examples/Block.js deleted file mode 100644 index 2f6a4c84a9e..00000000000 --- a/examples/component-examples/Block.js +++ /dev/null @@ -1,68 +0,0 @@ -/* eslint-disable import/no-named-as-default-member */ -import React from 'react' -import {LiveEditor} from '@compositor/kit' -import theme from '../../src/theme' -import {Block, Text, Heading} from '../../src' - -const Mono = props => - -const colors = [...Object.entries(theme.colors)].reduce((keys, [key, value]) => { - if (key !== 'bg' && key !== 'border') { - if (Array.isArray(value)) { - return keys.concat(Object.keys(value).map(i => `${key}.${i}`)) - } else { - keys.push(key) - } - } - return keys -}, []) - -const textColors = ['white', 'gray.5', 'black'] - -const BlockExample = { - name: 'Block', - element: ( -
- - - - - - - - - - {colors.map(color => ( - - - {textColors.map(fg => ( - - ))} - - - ))} - -
- color - - bg={`{color}`} - - borderColor -
- {color} - - - {fg} - - - - {color} - -
- Code Example - Danger, Will Robinson`} scope={{Block}} /> -
- ) -} - -export default BlockExample diff --git a/examples/component-examples/BorderBox.js b/examples/component-examples/BorderBox.js new file mode 100644 index 00000000000..641b7bb8200 --- /dev/null +++ b/examples/component-examples/BorderBox.js @@ -0,0 +1,49 @@ +import React from 'react' +import {LiveEditor} from '@compositor/kit' +import {BorderBox, Box} from '../../src' + +const BorderBoxExample = { + name: 'BorderBox', + element: ( +
+ + This is a BorderBox`} scope={{BorderBox}} /> + + + This is a BorderBox with padding.`} scope={{BorderBox}} /> + + + This is a BorderBox with shadow.`} + scope={{BorderBox}} + /> + + + This is a BorderBox with a medium shadow.`} + scope={{BorderBox}} + /> + + + This is a BorderBox with a large shadow.`} + scope={{BorderBox}} + /> + + + This is a BorderBox with an extra-large shadow.`} + scope={{BorderBox}} + /> + + + This is a BorderBox with a green border.`} + scope={{BorderBox}} + /> + +
+ ) +} + +export default BorderBoxExample diff --git a/examples/component-examples/Box.js b/examples/component-examples/Box.js index 30ec974cdf0..846fabc8a38 100644 --- a/examples/component-examples/Box.js +++ b/examples/component-examples/Box.js @@ -1,41 +1,66 @@ +/* eslint-disable import/no-named-as-default-member */ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Box, Block} from '../../src' +import theme from '../../src/theme' +import {Box, Text, Heading} from '../../src' + +const Mono = props => + +const colors = [...Object.entries(theme.colors)].reduce((keys, [key, value]) => { + if (key !== 'bg' && key !== 'border') { + if (Array.isArray(value)) { + return keys.concat(Object.keys(value).map(i => `${key}.${i}`)) + } else { + keys.push(key) + } + } + return keys +}, []) + +const textColors = ['white', 'gray.5', 'black'] const BoxExample = { name: 'Box', element: (
- - This is a box`} scope={{Box}} /> - - - This is a box with padding.`} scope={{Box}} /> - - - This is a box with shadow.`} scope={{Box}} /> - - - This is a box with a medium shadow.`} - scope={{Box}} - /> - - - This is a box with a large shadow.`} - scope={{Box}} - /> - - - This is a box with an extra-large shadow.`} - scope={{Box}} - /> - - - This is a box with a green border.`} scope={{Box}} /> - + + + + + + + + + + {colors.map(color => ( + + + {textColors.map(fg => ( + + ))} + + + ))} + +
+ color + + bg={`{color}`} + + borderColor +
+ {color} + + + {fg} + + + + {color} + +
+ Code Example + Danger, Will Robinson`} scope={{Box}} />
) } diff --git a/examples/component-examples/Buttons.js b/examples/component-examples/Buttons.js index 75f2fed5cef..5c7e8fcbe62 100644 --- a/examples/component-examples/Buttons.js +++ b/examples/component-examples/Buttons.js @@ -2,43 +2,43 @@ import React from 'react' import {Hubot, Pencil, X} from '@githubprimer/octicons-react' import {LiveEditor} from '@compositor/kit' import ExampleHeading from '../doc-components/ExampleHeading' -import {Block, Button, ButtonLink, ButtonDanger, ButtonPrimary, ButtonOutline, OcticonButton, Text} from '../../src' +import {Box, Button, ButtonLink, ButtonDanger, ButtonPrimary, ButtonOutline, OcticonButton, Text} from '../../src' const ButtonExample = { name: 'Buttons', element: (
- + Button `} scope={{Button}} /> - - + + Button small `} scope={{Button}} /> - - + + Button large `} scope={{Button}} /> - - + + ButtonDanger `} scope={{ButtonDanger}} /> - - + + ButtonPrimary `} scope={{ButtonPrimary}} /> - - + + ButtonOutline `} scope={{ButtonOutline}} /> - - + + Button block `} scope={{Button}} /> - - + + Button linkStyle `} scope={{Button}} /> - - + + This is an {''} styled as a button`} scope={{ButtonLink}} /> - - + + Octicon Buttons alert('edit')} mr={3} />`} @@ -48,13 +48,13 @@ const ButtonExample = { code={` alert('close')} mr={3} />`} scope={{OcticonButton, Text, X}} /> - + alert('beep boop')} />`} scope={{OcticonButton, Hubot}} /> - - + +
) } diff --git a/examples/component-examples/CaretBox.js b/examples/component-examples/CaretBox.js deleted file mode 100644 index a380d3ff9ea..00000000000 --- a/examples/component-examples/CaretBox.js +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' -import {LiveEditor} from '@compositor/kit' -import {CaretBox} from '../../src' -import ExampleHeading from '../doc-components/ExampleHeading' - -const example = ` - CaretBox -` - -const CaretBoxExample = { - name: 'CaretBox', - element: ( -
- CaretBox - -
- ) -} - -export default CaretBoxExample diff --git a/examples/component-examples/CircleBadge.js b/examples/component-examples/CircleBadge.js index b9b87fe67e1..499dbfe0eb0 100644 --- a/examples/component-examples/CircleBadge.js +++ b/examples/component-examples/CircleBadge.js @@ -1,14 +1,14 @@ import React from 'react' import Octicon, {Zap} from '@githubprimer/octicons-react' import {LiveEditor} from '@compositor/kit' -import {Block, CircleBadge, Heading} from '../../src' +import {Box, CircleBadge, Heading} from '../../src' const octicon = ` ` const image = `` - +const customSize = `` const sizes = ` ` @@ -17,18 +17,22 @@ const CircleBadgeExample = { name: 'CircleBadge', element: (
- + Small, medium & large - - + + + With custom width & height + + + With Octicon as child - - + + {`With as a child & bg prop`} - +
) } diff --git a/examples/component-examples/Colors.js b/examples/component-examples/Colors.js index 36e3c2354b1..d6a93e2716a 100644 --- a/examples/component-examples/Colors.js +++ b/examples/component-examples/Colors.js @@ -1,5 +1,5 @@ import React from 'react' -import {Block, theme} from '../../src' +import {Box, theme} from '../../src' import Swatch from '../doc-components/Swatch' const ColorsExample = { @@ -12,17 +12,17 @@ const ColorsExample = { ))}
- - - - - - - - - - - + + + + + + + + + + +
) diff --git a/examples/component-examples/Details.js b/examples/component-examples/Details.js index 38f18dd8e95..2e566cb3840 100644 --- a/examples/component-examples/Details.js +++ b/examples/component-examples/Details.js @@ -1,7 +1,7 @@ /* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, Details} from '../../src' +import {Box, Details} from '../../src' import ExampleHeading from '../doc-components/ExampleHeading' const example1 = `
@@ -26,18 +26,18 @@ const DetailsExample = { name: 'Details', element: (
- + With static children - - + + With children as a function - - + + With render prop 'hi'} />`} scope={{Details}} /> - +
) } diff --git a/examples/component-examples/DonutChart.js b/examples/component-examples/DonutChart.js index b52e1522810..48717582e49 100644 --- a/examples/component-examples/DonutChart.js +++ b/examples/component-examples/DonutChart.js @@ -1,6 +1,6 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, DonutChart, Text, DonutSlice, theme} from '../../src' +import {Box, DonutChart, Text, DonutSlice, theme} from '../../src' import ExampleHeading from '../doc-components/ExampleHeading' const dataPropExample = ` @@ -53,24 +53,24 @@ const DonutChartExample = { name: 'DonutChart', element: (
- + With data prop - - + + With DonutSlice children - - + + With custom fill colors - +
) } diff --git a/examples/component-examples/Dropdown.js b/examples/component-examples/Dropdown.js index 76c0a2066aa..0756a9b1fbd 100644 --- a/examples/component-examples/Dropdown.js +++ b/examples/component-examples/Dropdown.js @@ -1,6 +1,6 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, Dropdown, Link} from '../../src' +import {Box, Dropdown, Link} from '../../src' import ExampleHeading from '../doc-components/ExampleHeading' const dropdownPrimary = ` @@ -27,24 +27,24 @@ const dropdownTitle = ` ` -const scope = {Block, Dropdown, Link} +const scope = {Box, Dropdown, Link} const DropdownExample = { name: 'Dropdown', element: (
- + Dropdown Primary - - + + Dropdown - - + + Dropdown with title - +
) } diff --git a/examples/component-examples/FilterList.js b/examples/component-examples/FilterList.js index d5304fcc2e8..a933c0277c1 100644 --- a/examples/component-examples/FilterList.js +++ b/examples/component-examples/FilterList.js @@ -1,6 +1,6 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, FilterList, FilterListItem} from '../../src' +import {Box, FilterList, FilterListItem} from '../../src' const filterListCode = ` First Filter @@ -20,12 +20,12 @@ const FilterListExample = { name: 'Filter List', element: (
- + - - + + - +
) } diff --git a/examples/component-examples/Flash.js b/examples/component-examples/Flash.js index 3fa1c8ffdb7..932d17c47d3 100644 --- a/examples/component-examples/Flash.js +++ b/examples/component-examples/Flash.js @@ -1,26 +1,26 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, Flash} from '../../src' +import {Box, Flash} from '../../src' const FlashExample = { name: 'Flash', element: (
- + Flash `} scope={{Flash}} /> - - + + Flash yellow `} scope={{Flash}} /> - - + + Flash red `} scope={{Flash}} /> - - + + Flash green `} scope={{Flash}} /> - - + + Flash full `} scope={{Flash}} /> - +
) } diff --git a/examples/component-examples/Flex.js b/examples/component-examples/Flex.js index 1fc6425f34a..338b985d782 100644 --- a/examples/component-examples/Flex.js +++ b/examples/component-examples/Flex.js @@ -1,6 +1,6 @@ import React from 'react' import {PropsForm, LiveEditor} from '@compositor/kit' -import {Block, FlexContainer, FlexItem} from '../../src' +import {Box, FlexContainer, FlexItem} from '../../src' import ExampleHeading from '../doc-components/ExampleHeading' const propObj = { @@ -13,55 +13,55 @@ const propObj = { const example1 = ` - + Item 1 - + - + Item 2 - + - + Item 3 - + ` const example2 = ` - + Item 1 - + - + Item 2 - + - + Item 3 - + ` const example3 = ` - + Item 1 - + - + Item 2 - + - + Item 3 - + ` @@ -84,21 +84,21 @@ const FlexExample = { height={300} border > - + Item 1 - - + + Item 2 - - + + Item 3 - - + + Item 4 - - + + Item 5 - + {Object.keys(propObj).map(key => ( @@ -107,11 +107,11 @@ const FlexExample = { ))} FlexContainer + FlexItems set to flexAuto - + FlexContainer + FlexItems with first item set to alignSelf='center' - + FlexContainer + FlexItems using tag prop set to "p" - + ) } diff --git a/examples/component-examples/Label.js b/examples/component-examples/Label.js index d88092e081c..84c55a183b4 100644 --- a/examples/component-examples/Label.js +++ b/examples/component-examples/Label.js @@ -1,22 +1,22 @@ /* eslint-disable jsx-a11y/label-has-for */ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, Label} from '../../src' +import {Box, Label} from '../../src' const LabelExample = { name: 'Label', element: (
- + Default label`} scope={{Label}} /> Darker gray label`} scope={{Label}} /> Orange label`} scope={{Label}} /> Green label`} scope={{Label}} /> - - + + Default outline label`} scope={{Label}} /> Green outline label`} scope={{Label}} /> - +
) } diff --git a/examples/component-examples/Link.js b/examples/component-examples/Link.js index d5e2b7ed9d4..29515efb7a8 100644 --- a/examples/component-examples/Link.js +++ b/examples/component-examples/Link.js @@ -1,23 +1,23 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Block, Link} from '../../src' +import {Box, Link} from '../../src' const LinkExample = { name: 'Link', element: (
- + Link`} scope={{Link}} /> - - + + Link muted`} scope={{Link}} /> - - + + Link gray`} scope={{Link}} /> - - + + Link gray-dark`} scope={{Link}} /> - +
) } diff --git a/examples/component-examples/MergeStatus.js b/examples/component-examples/MergeStatus.js index c2a7255a7f7..e59c25170b7 100644 --- a/examples/component-examples/MergeStatus.js +++ b/examples/component-examples/MergeStatus.js @@ -1,23 +1,23 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {MergeStatus, Block} from '../../src' +import {MergeStatus, Box} from '../../src' const MergeStatusExample = { name: 'MergeStatus', element: (
- + `} scope={{MergeStatus}} /> - - + + `} scope={{MergeStatus}} /> - - + + `} scope={{MergeStatus}} /> - - + + `} scope={{MergeStatus}} /> - +
) } diff --git a/examples/component-examples/PointerBox.js b/examples/component-examples/PointerBox.js new file mode 100644 index 00000000000..03b2ea63ee9 --- /dev/null +++ b/examples/component-examples/PointerBox.js @@ -0,0 +1,20 @@ +import React from 'react' +import {LiveEditor} from '@compositor/kit' +import {PointerBox} from '../../src' +import ExampleHeading from '../doc-components/ExampleHeading' + +const example = ` + PointerBox +` + +const PointerBoxExample = { + name: 'PointerBox', + element: ( +
+ PointerBox + +
+ ) +} + +export default PointerBoxExample diff --git a/examples/component-examples/Position.js b/examples/component-examples/Position.js new file mode 100644 index 00000000000..c6a6fcb698f --- /dev/null +++ b/examples/component-examples/Position.js @@ -0,0 +1,55 @@ +import React from 'react' +import {LiveEditor} from '@compositor/kit' +import {Box, Absolute, Relative, Fixed, Sticky} from '../../src' +import ExampleHeading from '../doc-components/ExampleHeading' + +const scope = {Relative, Box, Absolute, Fixed, Sticky} + +export default { + name: 'Position', + element: ( + + Relative + Absolute + + + rt + lt + rb + lb + bl + br + tl + tr + + + `.trim()} + scope={scope} + /> + + Sticky + + + I'm sticky! + + + `.trim()} + scope={scope} + /> + + Fixed +

(see the bottom right of the screen)

+ + I'm fixed to the bottom right. + + `.trim()} + scope={scope} + /> + + ) +} diff --git a/examples/component-examples/StateLabel.js b/examples/component-examples/StateLabel.js index 6c1ebb10a74..4d01b3b4015 100644 --- a/examples/component-examples/StateLabel.js +++ b/examples/component-examples/StateLabel.js @@ -1,50 +1,50 @@ import React from 'react' import Octicon, {GitBranch} from '@githubprimer/octicons-react' import {LiveEditor} from '@compositor/kit' -import {Block, StateLabel} from '../../src' +import {Box, StateLabel} from '../../src' import ExampleHeading from '../doc-components/ExampleHeading' -const example1 = ` +const example1 = ` Open - - + + Closed - - + + Merged -` +` -const example2 = ` +const example2 = ` Unknown - - + + Open - - + + Closed - - + + Merged - - + + Reopened - + ` -const example3 = ` +const example3 = ` Invalid - - + + Green - - + + Red - - + + Purple -` +` -const example4 = ` +const example4 = ` Unknown Open @@ -58,9 +58,9 @@ const example4 = ` Reopened -` +` -const example5 = ` +const example5 = ` Invalid @@ -76,29 +76,29 @@ const example5 = ` }> Custom Octicon -` +` const StateLabelExample = { name: 'StateLabel', element: (
- - + + By state (Octicons built in) - - - + + + By color - - - + + + Small, by state - - - + + + Small, by color - - + +
) } diff --git a/examples/component-examples/Tooltip.js b/examples/component-examples/Tooltip.js index 761b9a2cbd3..f58594d553b 100644 --- a/examples/component-examples/Tooltip.js +++ b/examples/component-examples/Tooltip.js @@ -1,21 +1,21 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' -import {Box, Block, Tooltip} from '../../src' +import {BorderBox, Box, Tooltip} from '../../src' import ExampleHeading from '../doc-components/ExampleHeading' -const basicExample = ` +const basicExample = ` Text with a tooltip -` +` const directionExample = dir => - ` + ` Tooltip direction="${dir}" - + ` -const wrapExample = ` +const wrapExample = ` > Word wrapping tooltip -` +` const alignmentExample = align => - ` + ` Tooltip align="${align}" -` +` -const noDelayExample = ` +const noDelayExample = ` Text with a tooltip -` +` const TooltipExample = { name: 'Tooltip', element: (
Basic Tooltip - - + + Directions {Tooltip.directions.map(dir => ( - + ))} Alignment {Tooltip.alignments.map(align => ( - + ))} Word wrap - + No Delay - - + +
) } diff --git a/examples/component-examples/UnderlineNav.js b/examples/component-examples/UnderlineNav.js index c2d983b1152..8a49beed964 100644 --- a/examples/component-examples/UnderlineNav.js +++ b/examples/component-examples/UnderlineNav.js @@ -3,7 +3,7 @@ import React from 'react' import {LiveEditor} from '@compositor/kit' import {NavLink} from 'react-router-dom' import ExampleHeading from '../doc-components/ExampleHeading' -import {Block, Link, Text, UnderlineNav, UnderlineNavLink} from '../../src' +import {Box, Link, Text, UnderlineNav, UnderlineNavLink} from '../../src' const underlineNavLinkExample = ` @@ -23,14 +23,14 @@ export default { name: 'UnderlineNav', element: (
- + Using {''} - + - + Using {''} from react-router @@ -41,7 +41,7 @@ export default { This ensures that the NavLink gets activeClassName='selected'.

-
+
) } diff --git a/examples/component-examples/index.js b/examples/component-examples/index.js index 492b05eaa31..7363cc3c28c 100644 --- a/examples/component-examples/index.js +++ b/examples/component-examples/index.js @@ -1,9 +1,9 @@ export {default as Avatar} from './Avatar' -export {default as Block} from './Block' +export {default as BorderBox} from './BorderBox' export {default as Box} from './Box' export {default as BranchName} from './BranchName' export {default as Buttons} from './Buttons' -export {default as CaretBox} from './CaretBox' +export {default as PointerBox} from './PointerBox' export {default as CircleBadge} from './CircleBadge' export {default as CircleOcticon} from './CircleOcticon' export {default as Colors} from './Colors' @@ -19,6 +19,7 @@ export {default as Heading} from './Heading' export {default as Label} from './Label' export {default as Link} from './Link' export {default as MergeStatus} from './MergeStatus' +export {default as Position} from './Position' export {default as StateLabel} from './StateLabel' export {default as Text} from './Text' export {default as TextInput} from './TextInput' diff --git a/examples/demos.js b/examples/demos.js index dac85ce2903..b8c411ef2c1 100644 --- a/examples/demos.js +++ b/examples/demos.js @@ -3,13 +3,13 @@ import {Library, LiveEditor} from '@compositor/kit' import SideNav from './doc-components/SideNav' import MergeBox from './demos/MergeBox' import MergeButton from './demos/MergeButton' -import {Block} from '../src' +import {Box} from '../src' const examples = [ { name: 'MergeBox', element: ( - + `} scope={{MergeBox}} /> - + ) }, { name: 'MergeButton', element: ( - + `} scope={{MergeButton}} /> - + ) } ] diff --git a/examples/demos/MergeActions.js b/examples/demos/MergeActions.js index 4bec98dfa6d..4e26d46fd0c 100644 --- a/examples/demos/MergeActions.js +++ b/examples/demos/MergeActions.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import {Block, ButtonLink, Link, Text} from '../../src' +import {Box, ButtonLink, Link, Text} from '../../src' import MergeButton from './MergeButton' const MergeActions = ({numCommits, onClick, desktopUrl, state}) => { return ( - + You can also @@ -13,7 +13,7 @@ const MergeActions = ({numCommits, onClick, desktopUrl, state}) => { or view command line instructions. - + ) } diff --git a/examples/demos/MergeBox.js b/examples/demos/MergeBox.js index 24f442ae224..9b6198264b6 100644 --- a/examples/demos/MergeBox.js +++ b/examples/demos/MergeBox.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import {MergeStatus, CaretBox} from '../../src' +import {MergeStatus, PointerBox} from '../../src' import MergeDetail from './MergeDetail' import MergeActions from './MergeActions' @@ -19,7 +19,7 @@ const MergeBox = ({state, repoUrl, branchName, numCommits, onMerge}) => { return (
- + { desktopUrl={getDesktopURL(repoUrl, branchName)} onClick={onMerge} /> - +
) } diff --git a/examples/demos/MergeButton.js b/examples/demos/MergeButton.js index ac9ef426e88..41b76fad7b8 100644 --- a/examples/demos/MergeButton.js +++ b/examples/demos/MergeButton.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import {Block, Button, CaretBox, Details, Text} from '../../src' +import {Box, Button, PointerBox, Details, Text} from '../../src' const MergeButton = ({numCommits, onClick, primary}) => { const arrowStyles = { @@ -36,8 +36,8 @@ const MergeButton = ({numCommits, onClick, primary}) => { - - + +
  • @@ -64,8 +64,8 @@ const MergeButton = ({numCommits, onClick, primary}) => {
-
-
+ + )}
diff --git a/examples/demos/MergeDetail.js b/examples/demos/MergeDetail.js index 7fd5a52980f..f4728f34da7 100644 --- a/examples/demos/MergeDetail.js +++ b/examples/demos/MergeDetail.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import {Check} from '@githubprimer/octicons-react' -import {Block, CircleOcticon, Text} from '../../src' +import {Box, CircleOcticon, Text} from '../../src' const stateColorMap = { ready: 'green.5', @@ -13,17 +13,17 @@ const stateColorMap = { const MergeDetail = ({state}) => { return (
- + - - + + This branch has no conflicts with the base branch Merging can be performed automatically - +
) } diff --git a/examples/doc-components/SideNav.js b/examples/doc-components/SideNav.js index fb6c66180cc..cb7b7fa894e 100644 --- a/examples/doc-components/SideNav.js +++ b/examples/doc-components/SideNav.js @@ -1,10 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' import {NavLink} from 'react-router-dom' -import {Block} from '../../src' +import {Box} from '../../src' const SideNav = ({title, examples}) => ( - + - + ) SideNav.propTypes = { diff --git a/examples/sandbox.js b/examples/sandbox.js index e36ef3e930d..9dfa57882f4 100644 --- a/examples/sandbox.js +++ b/examples/sandbox.js @@ -7,15 +7,15 @@ import * as components from '../src' Object.assign(components, {NavLink}) const code = ` - + Hello World! All of the primer-react components are available in this sandbox! - + This is a box with some mono text. - -` + +` const Sandbox = () => diff --git a/package-lock.json b/package-lock.json index 3dd742d3584..82f8fe08373 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "primer-react", - "version": "1.0.0-beta", + "version": "2.0.0-beta", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz", - "integrity": "sha512-W7IeG4MoVf4oUvWfHUx9VG9if3E0xSUDf1urrnNYtC2ow1dz2ptvQ6YsJfyVXDuPTFXz66jkHhzMW7a5Eld7TA==", + "version": "7.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz", + "integrity": "sha512-qhQo3GqwqMUv03SxxjcEkWtlkEDvFYrBKbJUn4Dtd9amC2cLkJ3me4iYUVSBbVXWbfbVRalEeVBHzX4aQYKnBg==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.47" + "@babel/highlight": "7.0.0-rc.1" } }, "@babel/generator": { @@ -147,9 +147,9 @@ } }, "@babel/highlight": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.47.tgz", - "integrity": "sha512-d505K3Hth1eg0b2swfEF7oFMw3J9M8ceFg0s6dhCSxOOF+07WDvJ0HKT/YbK/Jk9wn8Wyr6HIRAUPKJ9Wfv8Rg==", + "version": "7.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-rc.1.tgz", + "integrity": "sha512-5PgPDV6F5s69XNznTcP0za3qH7qgBkr9DVQTXfZtpF+3iEyuIZB1Mjxu52F5CFxgzQUQJoBYHVxtH4Itdb5MgA==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -1099,9 +1099,9 @@ "dev": true }, "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", "dev": true }, "abbrev": { @@ -1519,12 +1519,12 @@ "dev": true }, "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "dev": true, "requires": { - "default-require-extensions": "^1.0.0" + "default-require-extensions": "^2.0.0" } }, "aproba": { @@ -2074,13 +2074,13 @@ } }, "babel-jest": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz", - "integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==", + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.2.tgz", + "integrity": "sha512-wg1LJ2tzsafXqPFVgAsYsMCVD5U7kwJZAvbZIxVm27iOewsQw1BR7VZifDlMTEWVo3wasoPPyMdKXWCsfFPr3Q==", "dev": true, "requires": { - "babel-plugin-istanbul": "^4.1.5", - "babel-preset-jest": "^22.4.4" + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" } }, "babel-loader": { @@ -2187,9 +2187,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz", - "integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", "dev": true }, "babel-plugin-macros": { @@ -2752,12 +2752,12 @@ } }, "babel-preset-jest": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz", - "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^22.4.4", + "babel-plugin-jest-hoist": "^23.2.0", "babel-plugin-syntax-object-rest-spread": "^6.13.0" } }, @@ -3023,9 +3023,9 @@ "dev": true }, "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, "requires": { "resolve": "1.1.7" @@ -3747,6 +3747,15 @@ "center-align": "^0.1.1", "right-align": "^0.1.1", "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } } }, "clone-response": { @@ -3884,9 +3893,9 @@ "dev": true }, "compare-versions": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.2.1.tgz", - "integrity": "sha512-2y2nHcopMG/NAyk6vWXlLs86XeM9sik4jmx1tKIgzMi9/RQ2eo758RGpxQO3ErihHmg0RlQITPqgz73y6s7quA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.0.tgz", + "integrity": "sha512-MAAAIOdi2s4Gl6rZ76PNcUa9IOYB+5ICdT41o5uMRf09aEu/F9RK+qhe8RjXNPwcTjGV7KU7h2P/fljThFVqyQ==", "dev": true }, "component-emitter": { @@ -4294,9 +4303,9 @@ "dev": true }, "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", "dev": true }, "cssstats": { @@ -4329,9 +4338,9 @@ } }, "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.0.0.tgz", + "integrity": "sha512-Bpuh47j2mRMY60X90mXaJAEtJwxvA2roZzbgwAXYhMbmwmakdRr4Cq9L5SkleKJNLOKqHIa2YWyOXDX3VgggSQ==", "dev": true, "requires": { "cssom": "0.3.x" @@ -4403,6 +4412,14 @@ "abab": "^1.0.4", "whatwg-mimetype": "^2.0.0", "whatwg-url": "^6.4.0" + }, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + } } }, "date-now": { @@ -4477,12 +4494,12 @@ "dev": true }, "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "dev": true, "requires": { - "strip-bom": "^2.0.0" + "strip-bom": "^3.0.0" } }, "define-properties": { @@ -5077,9 +5094,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -5616,12 +5633,12 @@ } }, "exec-sh": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", - "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", "dev": true, "requires": { - "merge": "^1.1.3" + "merge": "^1.2.0" } }, "execa": { @@ -5673,17 +5690,17 @@ } }, "expect": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", - "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.5.0.tgz", + "integrity": "sha512-aG083W63tBloy8YgafWuC44EakjYe0Q6Mg35aujBPvyNU38DvLat9BVzOihNP2NZDLaCJiFNe0vejbtO6knnlA==", "dev": true, "requires": { "ansi-styles": "^3.2.0", - "jest-diff": "^22.4.3", - "jest-get-type": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-regex-util": "^22.4.3" + "jest-diff": "^23.5.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" }, "dependencies": { "ansi-styles": { @@ -6630,9 +6647,9 @@ "dev": true }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "get-contrast": { @@ -8075,30 +8092,6 @@ "js-yaml": "^3.7.0", "mkdirp": "^0.5.1", "once": "^1.4.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", - "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - } } }, "istanbul-lib-coverage": { @@ -8108,12 +8101,12 @@ "dev": true }, "istanbul-lib-hook": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", - "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz", + "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==", "dev": true, "requires": { - "append-transform": "^0.4.0" + "append-transform": "^1.0.0" } }, "istanbul-lib-instrument": { @@ -8161,13 +8154,13 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==", "dev": true, "requires": { "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", + "istanbul-lib-coverage": "^1.2.0", "mkdirp": "^0.5.1", "rimraf": "^2.6.1", "source-map": "^0.5.3" @@ -8210,13 +8203,13 @@ "dev": true }, "jest": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-22.4.4.tgz", - "integrity": "sha512-eBhhW8OS/UuX3HxgzNBSVEVhSuRDh39Z1kdYkQVWna+scpgsrD7vSeBI7tmEvsguPDMnfJodW28YBnhv/BzSew==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.5.0.tgz", + "integrity": "sha512-+X3Fk4rD8dTnHoIxHJymZthbtYllvSOnXAApQltvyLkHsv+fqyC/SZptUJDbXkFsqZJyyIXMySkdzerz3fv4oQ==", "dev": true, "requires": { "import-local": "^1.0.0", - "jest-cli": "^22.4.4" + "jest-cli": "^23.5.0" }, "dependencies": { "ansi-regex": { @@ -8225,27 +8218,10 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, "jest-cli": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.4.4.tgz", - "integrity": "sha512-I9dsgkeyjVEEZj9wrGrqlH+8OlNob9Iptyl+6L5+ToOLJmHm4JwOPatin1b2Bzp5R5YRQJ+oiedx7o1H7wJzhA==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.5.0.tgz", + "integrity": "sha512-Kxi2QH8s6NkpPgboza/plpmQ2bjUQ+MwYv7vM5rDwJz/x+NB4YoLXFikPXLWNP0JuYpMvYwITKneFljnNKhq2Q==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", @@ -8255,33 +8231,35 @@ "graceful-fs": "^4.1.11", "import-local": "^1.0.0", "is-ci": "^1.0.10", - "istanbul-api": "^1.1.14", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-instrument": "^1.8.0", - "istanbul-lib-source-maps": "^1.2.1", - "jest-changed-files": "^22.2.0", - "jest-config": "^22.4.4", - "jest-environment-jsdom": "^22.4.1", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.5.0", + "jest-environment-jsdom": "^23.4.0", "jest-get-type": "^22.1.0", - "jest-haste-map": "^22.4.2", - "jest-message-util": "^22.4.0", - "jest-regex-util": "^22.1.0", - "jest-resolve-dependencies": "^22.1.0", - "jest-runner": "^22.4.4", - "jest-runtime": "^22.4.4", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.4", - "jest-worker": "^22.2.2", + "jest-haste-map": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.5.0", + "jest-runner": "^23.5.0", + "jest-runtime": "^23.5.0", + "jest-snapshot": "^23.5.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.5.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", "micromatch": "^2.3.11", "node-notifier": "^5.2.1", + "prompts": "^0.1.9", "realpath-native": "^1.0.0", "rimraf": "^2.5.4", "slash": "^1.0.0", "string-length": "^2.0.0", "strip-ansi": "^4.0.0", "which": "^1.2.12", - "yargs": "^10.0.3" + "yargs": "^11.0.0" } }, "strip-ansi": { @@ -8292,87 +8270,71 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } } } }, "jest-changed-files": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz", - "integrity": "sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw==", + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", "dev": true, "requires": { "throat": "^4.0.0" } }, "jest-config": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.4.tgz", - "integrity": "sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.5.0.tgz", + "integrity": "sha512-JENhQpLaVwXWPLUkhPYgIfecHKsU8GR1vj79rS4n0LSRsHx/U2wItZKoKAd5vtt2J58JPxRq4XheG79jd4fI7Q==", "dev": true, "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.4.2", "chalk": "^2.0.1", "glob": "^7.1.1", - "jest-environment-jsdom": "^22.4.1", - "jest-environment-node": "^22.4.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", "jest-get-type": "^22.1.0", - "jest-jasmine2": "^22.4.4", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.4", - "pretty-format": "^22.4.0" + "jest-jasmine2": "^23.5.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.5.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.5.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.5.0" } }, "jest-diff": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", - "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.5.0.tgz", + "integrity": "sha512-Miz8GakJIz443HkGpVOAyHQgSYqcgs2zQmDJl4oV7DYrFotchdoQvxceF6LhfpRBV1LOUGcFk5Dd/ffSXVwMsA==", "dev": true, "requires": { "chalk": "^2.0.1", "diff": "^3.2.0", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" + "jest-get-type": "^22.1.0", + "pretty-format": "^23.5.0" } }, "jest-docblock": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz", - "integrity": "sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", "dev": true, "requires": { "detect-newline": "^2.1.0" } }, + "jest-each": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.5.0.tgz", + "integrity": "sha512-8BgebQgAJmWXpYp4Qt9l3cn1Xei0kZ7JL4cs/NXh7750ATlPGzRRYbutFVJTk5B/Lt3mjHP3G3tLQLyBOCSHGA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.5.0" + } + }, "jest-emotion": { "version": "9.2.7", "resolved": "https://registry.npmjs.org/jest-emotion/-/jest-emotion-9.2.7.tgz", @@ -8416,24 +8378,24 @@ } }, "jest-environment-jsdom": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", - "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", "dev": true, "requires": { - "jest-mock": "^22.4.3", - "jest-util": "^22.4.3", + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", "jsdom": "^11.5.1" } }, "jest-environment-node": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", - "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", "dev": true, "requires": { - "jest-mock": "^22.4.3", - "jest-util": "^22.4.3" + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" } }, "jest-get-type": { @@ -8443,81 +8405,76 @@ "dev": true }, "jest-haste-map": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.4.3.tgz", - "integrity": "sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.5.0.tgz", + "integrity": "sha512-bt9Swigb6KZ6ZQq/fQDUwdUeHenVvZ6G/lKwJjwRGp+Fap8D4B3bND3FaeJg7vXVsLX8hXshRArbVxLop/5wLw==", "dev": true, "requires": { "fb-watchman": "^2.0.0", "graceful-fs": "^4.1.11", - "jest-docblock": "^22.4.3", - "jest-serializer": "^22.4.3", - "jest-worker": "^22.4.3", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", "micromatch": "^2.3.11", "sane": "^2.0.0" + }, + "dependencies": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + } } }, "jest-jasmine2": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz", - "integrity": "sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz", + "integrity": "sha512-xMgvDUvgqKpilsGnneC9Qr+uIlROxKI3UoJcHZeUlu6AKpQyEkGh0hKbfM0NaEjX5sy7WeFQEhcp/AiWlHcc0A==", "dev": true, "requires": { + "babel-traverse": "^6.0.0", "chalk": "^2.0.1", "co": "^4.6.0", - "expect": "^22.4.0", - "graceful-fs": "^4.1.11", + "expect": "^23.5.0", "is-generator-fn": "^1.0.0", - "jest-diff": "^22.4.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", - "source-map-support": "^0.5.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 - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } + "jest-diff": "^23.5.0", + "jest-each": "^23.5.0", + "jest-matcher-utils": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.5.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.5.0" } }, "jest-leak-detector": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz", - "integrity": "sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz", + "integrity": "sha512-40VsHQCIEslxg91Zg5NiZGtPeWSBLXiD6Ww+lhHlIF6u8uSQ+xgiD6NbWHFOYs1VBRI+V/ym7Q1aOtVg9tqMzQ==", "dev": true, "requires": { - "pretty-format": "^22.4.3" + "pretty-format": "^23.5.0" } }, "jest-matcher-utils": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", - "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz", + "integrity": "sha512-hmQUKUKYOExp3T8dNYK9A9copCFYKoRLcY4WDJJ0Z2u3oF6rmAhHuZtmpHBuGpASazobBxm3TXAfAXDvz2T7+Q==", "dev": true, "requires": { "chalk": "^2.0.1", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" + "jest-get-type": "^22.1.0", + "pretty-format": "^23.5.0" } }, "jest-message-util": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", - "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", "dev": true, "requires": { "@babel/code-frame": "^7.0.0-beta.35", @@ -8528,184 +8485,143 @@ } }, "jest-mock": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", - "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", "dev": true }, "jest-regex-util": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", - "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", "dev": true }, "jest-resolve": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", - "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.5.0.tgz", + "integrity": "sha512-CRPc0ebG3baNKz/QicIy5rGfzYpMNm8AjEl/tDQhehq/QC4ttyauZdvAXel3qo+4Gri9ljajnxW+hWyxZbbcnQ==", "dev": true, "requires": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1" + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" } }, "jest-resolve-dependencies": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", - "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz", + "integrity": "sha512-APZc/CjfzL8rH/wr+Gh7XJJygYaDjMQsWaJy4ZR1WaHWKude4WcfdU8xjqaNbx5NsVF2P2tVvsLbumlPXCdJOw==", "dev": true, "requires": { - "jest-regex-util": "^22.4.3" + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.5.0" } }, "jest-runner": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.4.tgz", - "integrity": "sha512-5S/OpB51igQW9xnkM5Tgd/7ZjiAuIoiJAVtvVTBcEBiXBIFzWM3BAMPBM19FX68gRV0KWyFuGKj0EY3M3aceeQ==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.5.0.tgz", + "integrity": "sha512-cpBvkBTVmW1ab1thbtoh2m6VnnM0BYKhj3MEzbOTZjPfzoIjUVIxLUTDobVNOvEK7aTEb/2oiPlNoOTSNJx8mw==", "dev": true, "requires": { "exit": "^0.1.2", - "jest-config": "^22.4.4", - "jest-docblock": "^22.4.0", - "jest-haste-map": "^22.4.2", - "jest-jasmine2": "^22.4.4", - "jest-leak-detector": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-runtime": "^22.4.4", - "jest-util": "^22.4.1", - "jest-worker": "^22.2.2", + "graceful-fs": "^4.1.11", + "jest-config": "^23.5.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.5.0", + "jest-jasmine2": "^23.5.0", + "jest-leak-detector": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.5.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", + "source-map-support": "^0.5.6", "throat": "^4.0.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 + }, + "source-map-support": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz", + "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } } }, "jest-runtime": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.4.4.tgz", - "integrity": "sha512-WRTj9m///npte1YjuphCYX7GRY/c2YvJImU9t7qOwFcqHr4YMzmX6evP/3Sehz5DKW2Vi8ONYPCFWe36JVXxfw==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.5.0.tgz", + "integrity": "sha512-WzzYxYtoU8S1MJns0G4E3BsuFUTFBiu1qsk3iC9OTugzNQcQKt0BoOGsT7wXCKqkw/09QdV77vvaeJXST2Efgg==", "dev": true, "requires": { "babel-core": "^6.0.0", - "babel-jest": "^22.4.4", - "babel-plugin-istanbul": "^4.1.5", + "babel-plugin-istanbul": "^4.1.6", "chalk": "^2.0.1", "convert-source-map": "^1.4.0", "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.1.11", - "jest-config": "^22.4.4", - "jest-haste-map": "^22.4.2", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.4", - "json-stable-stringify": "^1.0.1", + "jest-config": "^23.5.0", + "jest-haste-map": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.5.0", + "jest-snapshot": "^23.5.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.5.0", "micromatch": "^2.3.11", "realpath-native": "^1.0.0", "slash": "^1.0.0", "strip-bom": "3.0.0", "write-file-atomic": "^2.1.0", - "yargs": "^10.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "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" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } + "yargs": "^11.0.0" } }, "jest-serializer": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-22.4.3.tgz", - "integrity": "sha512-uPaUAppx4VUfJ0QDerpNdF43F68eqKWCzzhUlKNDsUPhjOon7ZehR4C809GCqh765FoMRtTVUVnGvIoskkYHiw==", + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", "dev": true }, "jest-snapshot": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", - "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.5.0.tgz", + "integrity": "sha512-NYg8MFNVyPXmnnihiltasr4t1FJEXFbZFaw1vZCowcnezIQ9P1w+yxTwjWT564QP24Zbn5L9cjxLs8d6K+pNlw==", "dev": true, "requires": { + "babel-types": "^6.0.0", "chalk": "^2.0.1", - "jest-diff": "^22.4.3", - "jest-matcher-utils": "^22.4.3", + "jest-diff": "^23.5.0", + "jest-matcher-utils": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.5.0", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^22.4.3" + "pretty-format": "^23.5.0", + "semver": "^5.5.0" } }, "jest-util": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", - "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", "dev": true, "requires": { "callsites": "^2.0.0", "chalk": "^2.0.1", "graceful-fs": "^4.1.11", "is-ci": "^1.0.10", - "jest-message-util": "^22.4.3", + "jest-message-util": "^23.4.0", "mkdirp": "^0.5.1", + "slash": "^1.0.0", "source-map": "^0.6.0" }, "dependencies": { @@ -8718,22 +8634,32 @@ } }, "jest-validate": { - "version": "22.4.4", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.4.tgz", - "integrity": "sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.5.0.tgz", + "integrity": "sha512-XmStdYhfdiDKacXX5sNqEE61Zz4/yXaPcDsKvVA0429RBu2pkQyIltCVG7UitJIEAzSs3ociQTdyseAW8VGPiA==", "dev": true, "requires": { "chalk": "^2.0.1", - "jest-config": "^22.4.4", "jest-get-type": "^22.1.0", "leven": "^2.1.0", - "pretty-format": "^22.4.0" + "pretty-format": "^23.5.0" + } + }, + "jest-watcher": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "string-length": "^2.0.0" } }, "jest-worker": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.4.3.tgz", - "integrity": "sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", "dev": true, "requires": { "merge-stream": "^1.0.1" @@ -8767,37 +8693,54 @@ "optional": true }, "jsdom": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.10.0.tgz", - "integrity": "sha512-x5No5FpJgBg3j5aBwA8ka6eGuS5IxbC8FOkmyccKvObtFT0bDMict/LOxINZsZGZSfGdNomLZ/qRV9Bpq/GIBA==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "abab": "^1.0.4", - "acorn": "^5.3.0", + "abab": "^2.0.0", + "acorn": "^5.5.3", "acorn-globals": "^4.1.0", "array-equal": "^1.0.0", "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", + "cssstyle": "^1.0.0", "data-urls": "^1.0.0", - "domexception": "^1.0.0", - "escodegen": "^1.9.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.2.0", - "nwmatcher": "^1.4.3", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", "parse5": "4.0.0", "pn": "^1.1.0", - "request": "^2.83.0", + "request": "^2.87.0", "request-promise-native": "^1.0.5", "sax": "^1.2.4", "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.3", + "tough-cookie": "^2.3.4", "w3c-hr-time": "^1.0.1", "webidl-conversions": "^4.0.2", "whatwg-encoding": "^1.0.3", "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.0", - "ws": "^4.0.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } } }, "jsesc": { @@ -8828,15 +8771,6 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -8926,6 +8860,12 @@ "is-buffer": "^1.1.5" } }, + "kleur": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.1.tgz", + "integrity": "sha512-Zq/jyANIJ2uX8UZjWlqLwbyhcxSXJtT/Y89lClyeZd3l++3ztL1I5SSCYrbcbwSunTjC88N3WuMk0kRDQD6gzA==", + "dev": true + }, "koa": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/koa/-/koa-2.5.1.tgz", @@ -9081,6 +9021,15 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } } } }, @@ -9926,10 +9875,10 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", + "nwsapi": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.8.tgz", + "integrity": "sha512-7RZ+qbFGiVc6v14Y8DSZjPN1wZPOaMbiiP4tzf5eNuyOITAeOIA3cMhjuKUypVIqBgCSg1KaSyAv8Ocq/0ZJ1A==", "dev": true }, "oauth-sign": { @@ -10647,9 +10596,9 @@ "dev": true }, "pretty-format": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", - "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.5.0.tgz", + "integrity": "sha512-iFLvYTXOn+C/s7eV+pr4E8DD7lYa2/klXMEz+lvH14qSDWAJ7S+kFmMe1SIWesATHQxopHTxRcB2nrpExhzaBA==", "dev": true, "requires": { "ansi-regex": "^3.0.0", @@ -10729,6 +10678,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "dev": true, + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, "prop-types": { "version": "15.6.0", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", @@ -11297,9 +11256,9 @@ } }, "realpath-native": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", - "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.1.tgz", + "integrity": "sha512-W14EcXuqUvKP8dkWkD7B95iMy77lpMnlFXbbk409bQtNCbeu0kvRE5reo+yIZ3JXxg6frbGsz2DLQ39lrCB40g==", "dev": true, "requires": { "util.promisify": "^1.0.0" @@ -11870,6 +11829,12 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "sane": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", @@ -11887,16 +11852,6 @@ "watch": "~0.18.0" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -12080,601 +12035,6 @@ } } }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "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, - "optional": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "minipass": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", - "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", - "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "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" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", - "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "yallist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", - "dev": true - } - } - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -12735,23 +12095,6 @@ } } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -12784,57 +12127,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - } - } } } }, @@ -13019,6 +12311,12 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "sisteransi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", + "dev": true + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -13547,13 +12845,10 @@ } }, "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true }, "strip-bom-string": { "version": "1.0.0", @@ -13994,23 +13289,6 @@ } } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -14038,26 +13316,6 @@ "to-regex": "^3.0.2" } }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -14076,30 +13334,6 @@ "find-up": "^1.0.0", "read-pkg": "^1.0.0" } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - } - } } } }, @@ -15627,12 +14861,23 @@ "dev": true }, "whatwg-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz", + "integrity": "sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg==", "dev": true, "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "0.4.23" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, "whatwg-fetch": { @@ -15647,9 +14892,9 @@ "dev": true }, "whatwg-url": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", - "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -15689,9 +14934,9 @@ "optional": true }, "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "worker-farm": { @@ -15807,6 +15052,69 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "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" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, "yargs-parser": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", diff --git a/package.json b/package.json index b6c8f6bbc91..063d1832628 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "primer-react", - "version": "1.0.0-beta", + "version": "2.0.0-beta", "description": "Primer react components", "main": "dist/index.umd.js", "module": "dist/index.esm.js", @@ -55,9 +55,9 @@ "@compositor/x0": "^5.0.8", "babel-plugin-add-react-displayname": "0.0.5", "babel-plugin-external-helpers": "6.22.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", - "babel-preset-stage-0": "6.24.1", "enzyme": "3.3.0", "enzyme-adapter-react-16": "1.1.1", "eslint": "4.19.1", @@ -65,7 +65,7 @@ "eslint-plugin-jest": "21.15.1", "eslint-plugin-jsx-a11y": "6.0.3", "eslint-plugin-react": "7.8.2", - "jest": "^22.4.3", + "jest": "23.5.0", "jest-emotion": "9.2.7", "react-router-dom": "^4.3.1", "react-test-renderer": "^16.3.2", diff --git a/src/Block.js b/src/Block.js deleted file mode 100644 index 5cf5500c074..00000000000 --- a/src/Block.js +++ /dev/null @@ -1,5 +0,0 @@ -import {withSystemProps, LAYOUT} from './system-props' - -const Block = withSystemProps('div', LAYOUT) - -export default Block diff --git a/src/BorderBox.js b/src/BorderBox.js new file mode 100644 index 00000000000..18035cfa73f --- /dev/null +++ b/src/BorderBox.js @@ -0,0 +1,14 @@ +import {withSystemProps, LAYOUT} from './system-props' + +const BorderBox = withSystemProps( + { + is: 'div', + bg: 'white', + border: 1, + borderColor: 'gray.2', + borderRadius: 1 + }, + LAYOUT +) + +export default BorderBox diff --git a/src/Box.js b/src/Box.js index 6ed92fb9c96..a421dbf8e21 100644 --- a/src/Box.js +++ b/src/Box.js @@ -1,14 +1,5 @@ import {withSystemProps, LAYOUT} from './system-props' -const Box = withSystemProps( - { - is: 'div', - bg: 'white', - border: 1, - borderColor: 'gray.2', - borderRadius: 1 - }, - LAYOUT -) +const Box = withSystemProps('div', LAYOUT) export default Box diff --git a/src/Caret.js b/src/Caret.js index 17e29292070..91bce73e343 100644 --- a/src/Caret.js +++ b/src/Caret.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import Box from './Box' +import BorderBox from './BorderBox' import {style} from 'styled-system' import {withDefaultTheme} from './system-props' @@ -100,8 +100,8 @@ Caret.locations = [ ] Caret.defaultProps = { - bg: Box.defaultProps.bg, - borderColor: Box.defaultProps.borderColor, + bg: BorderBox.defaultProps.bg, + borderColor: BorderBox.defaultProps.borderColor, borderWidth: 1, location: 'bottom', size: 2 diff --git a/src/CaretBox.js b/src/CaretBox.js deleted file mode 100644 index 28eee6b2be4..00000000000 --- a/src/CaretBox.js +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import Box from './Box' -import Caret from './Caret' - -function CaretBox({position, ...rest}) { - // don't destructure these, just grab them - const {bg, border, borderColor} = rest - const {caret, children, ...boxProps} = rest - const caretProps = {bg, borderColor, borderWidth: border, location: caret} - return ( - - {children} - - - ) -} - -CaretBox.propTypes = { - ...Box.propTypes, - caret: Caret.propTypes.location -} - -CaretBox.defaultProps = { - ...Box.defaultProps, - position: 'relative' -} - -// we can set this because it "extends" Box implicitly -CaretBox.systemComponent = true - -export default CaretBox diff --git a/src/CircleBadge.js b/src/CircleBadge.js index 8f8c894724c..66369047281 100644 --- a/src/CircleBadge.js +++ b/src/CircleBadge.js @@ -5,7 +5,24 @@ import {withSystemProps, COMMON} from './system-props' const ICON_CLASS = 'CircleBadge-icon' -const CircleBadge = ({is: Tag = 'div', size = 'medium', bg, children, className, ...rest}) => { +const sizeMapper = size => { + if (typeof size === 'number') return size + const map = { + small: 56, + medium: 96, + large: 128 + } + return map[size] +} + +const sizeStyles = ({size}) => { + return { + width: sizeMapper(size), + height: sizeMapper(size) + } +} + +const CircleBadge = ({is: Tag = 'div', children, className, ...rest}) => { const mappedChildren = React.Children.map(children, child => { let {className = ''} = child.props if (!className.includes(ICON_CLASS)) { @@ -13,7 +30,8 @@ const CircleBadge = ({is: Tag = 'div', size = 'medium', bg, children, className, } return React.cloneElement(child, {className}) }) - const classes = classnames(className, 'CircleBadge', `CircleBadge--${size}`, bg && `bg-${bg}`) + + const classes = classnames(className, 'CircleBadge') return ( {mappedChildren} @@ -25,8 +43,8 @@ CircleBadge.propTypes = { alt: PropTypes.string, bg: PropTypes.string, is: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), - size: PropTypes.oneOf(['small', 'medium', 'large']), + size: PropTypes.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.number]), src: PropTypes.string } -export default withSystemProps(CircleBadge, COMMON) +export default withSystemProps(CircleBadge, [...COMMON, sizeStyles]) diff --git a/src/Dropdown.js b/src/Dropdown.js index a75be4efcb5..edd43c2bb0d 100644 --- a/src/Dropdown.js +++ b/src/Dropdown.js @@ -4,7 +4,7 @@ import classnames from 'classnames' import Octicon from './Octicon' import {TriangleDown} from '@githubprimer/octicons-react' import Button from './Button' -import Block from './Block' +import Box from './Box' import Caret from './Caret' import Details from './Details' import FlexContainer from './FlexContainer' @@ -21,7 +21,7 @@ function Dropdown({title, scheme, children, className, ...rest}) { {title} - {children} - + )} diff --git a/src/PointerBox.js b/src/PointerBox.js new file mode 100644 index 00000000000..4aca5c42240 --- /dev/null +++ b/src/PointerBox.js @@ -0,0 +1,26 @@ +import React from 'react' +import BorderBox from './BorderBox' +import Caret from './Caret' + +function PointerBox(props) { + // don't destructure these, just grab them + const {bg, border, borderColor} = props + const {caret, children, ...boxProps} = props + const caretProps = {bg, borderColor, borderWidth: border, location: caret} + return ( + + {children} + + + ) +} + +PointerBox.propTypes = { + ...BorderBox.propTypes, + caret: Caret.propTypes.location +} + +// we can set this because it "extends" Box implicitly +PointerBox.systemComponent = true + +export default PointerBox diff --git a/src/Position.js b/src/Position.js new file mode 100644 index 00000000000..59267a410d9 --- /dev/null +++ b/src/Position.js @@ -0,0 +1,19 @@ +import React from 'react' +import {withSystemProps, LAYOUT, POSITION} from './system-props' + +export const Position = withSystemProps('div', LAYOUT.concat(POSITION)) + +function withPosition(position) { + const WithPosition = props => + WithPosition.defaultProps = {...Position.defaultProps} + delete WithPosition.defaultProps.position + WithPosition.propTypes = {...Position.propTypes} + delete WithPosition.propTypes.position + WithPosition.displayName = `Position.${position}` + return WithPosition +} + +export const Absolute = withPosition('absolute') +export const Fixed = withPosition('fixed') +export const Relative = withPosition('relative') +export const Sticky = withPosition('sticky') diff --git a/src/__tests__/Block.js b/src/__tests__/Block.js deleted file mode 100644 index d051d410512..00000000000 --- a/src/__tests__/Block.js +++ /dev/null @@ -1,75 +0,0 @@ -import React from 'react' -import Block from '../Block' -import theme from '../theme' -import {render} from '../utils/testing' -import {COMMON} from '../system-props' - -describe('Block', () => { - it('is a system component', () => { - expect(Block.systemComponent).toEqual(true) - }) - - it('implements layout system props', () => { - expect(Block).toImplementSystemProps(COMMON) - // FIXME - // expect(Block).toImplementSystemProps(LAYOUT) - }) - - it('renders without any props', () => { - expect(render()).toMatchSnapshot() - }) - - it('renders margin', () => { - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - }) - - it('renders padding', () => { - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - }) - - describe('borders', () => { - it('handles border prop', () => { - expect(render()).toMatchSnapshot() - }) - it('handles a single border edge', () => { - expect(render()).toMatchSnapshot() - }) - it('handles multiple border edges', () => { - expect(render()).toMatchSnapshot() - }) - it('handles just a border color', () => { - expect(render()).toMatchSnapshot() - }) - }) - - it('respects display', () => { - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - }) - - it('respects position', () => { - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - }) - - it('respects bg', () => { - expect(render()).toMatchSnapshot() - }) - - it('respects color', () => { - expect(render()).toMatchSnapshot() - }) - - it('renders shadow', () => { - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - expect(render()).toMatchSnapshot() - }) -}) diff --git a/src/__tests__/BorderBox.js b/src/__tests__/BorderBox.js new file mode 100644 index 00000000000..4eb6d09201d --- /dev/null +++ b/src/__tests__/BorderBox.js @@ -0,0 +1,40 @@ +import React from 'react' +import theme, {colors} from '../theme' +import BorderBox from '../BorderBox' +import Box from '../Box' +import {px, render, renderStyles} from '../utils/testing' + +describe('BorderBox', () => { + it('is a system component', () => { + expect(BorderBox.systemComponent).toEqual(true) + }) + + it('renders a Box with default props', () => { + expect(render()).toEqual(render()) + }) + + it('renders margin', () => { + expect(render()).toHaveStyleRule('margin', px(theme.space[1])) + expect(renderStyles()).toMatchKeys({ + margin: px(theme.space[0]), + [`@media screen and (min-width:${px(theme.breakpoints[0])})`]: { + margin: px(theme.space[1]) + } + }) + }) + + it('renders padding', () => { + expect(render()).toHaveStyleRule('padding', px(theme.space[1])) + expect(renderStyles()).toMatchKeys({ + padding: px(theme.space[0]), + [`@media screen and (min-width:${px(theme.breakpoints[0])})`]: { + padding: px(theme.space[1]) + } + }) + }) + + it('renders borders', () => { + expect(render()).toHaveStyleRule('border-color', colors.green[5]) + expect(render()).toHaveStyleRule('border-bottom', '0') + }) +}) diff --git a/src/__tests__/Box.js b/src/__tests__/Box.js index 224a1a912b2..770922faca0 100644 --- a/src/__tests__/Box.js +++ b/src/__tests__/Box.js @@ -1,50 +1,74 @@ import React from 'react' import Box from '../Box' -import {renderClasses} from '../utils/testing' +import theme from '../theme' +import {render} from '../utils/testing' +import {COMMON, LAYOUT} from '../system-props' -xdescribe('Box', () => { +describe('Box', () => { it('is a system component', () => { expect(Box.systemComponent).toEqual(true) }) - const defaultClasses = ['border', 'bg-white', 'rounded-1'] - it('renders default classes', () => { - expect(renderClasses()).toEqual(defaultClasses) + it('implements layout system props', () => { + expect(Box).toImplementSystemProps(COMMON) + expect(Box).toImplementSystemProps(LAYOUT) + }) + + it('renders without any props', () => { + expect(render()).toMatchSnapshot() }) it('renders margin', () => { - expect(renderClasses()).toEqual(['m-1', ...defaultClasses]) - expect(renderClasses()).toEqual([ - 'm-0', - 'm-sm-1', - 'm-md-2', - 'm-lg-3', - 'm-xl-4', - ...defaultClasses - ]) - expect(renderClasses()).toEqual(['m-sm-1', 'm-lg-3', ...defaultClasses]) + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() }) it('renders padding', () => { - expect(renderClasses()).toEqual(['p-1', ...defaultClasses]) - expect(renderClasses()).toEqual([ - 'p-0', - 'p-sm-1', - 'p-md-2', - 'p-lg-3', - 'p-xl-4', - ...defaultClasses - ]) - expect(renderClasses()).toEqual(['p-sm-1', 'p-lg-3', ...defaultClasses]) - }) - - it('renders borders', () => { - expect(renderClasses()).toEqual(['border', 'bg-white', 'rounded-1']) - expect(renderClasses()).toEqual([ - 'border-left', - 'border-green', - 'bg-white', - 'rounded-1' - ]) + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + }) + + describe('borders', () => { + it('handles border prop', () => { + expect(render()).toMatchSnapshot() + }) + it('handles a single border edge', () => { + expect(render()).toMatchSnapshot() + }) + it('handles multiple border edges', () => { + expect(render()).toMatchSnapshot() + }) + it('handles just a border color', () => { + expect(render()).toMatchSnapshot() + }) + }) + + it('respects display', () => { + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + }) + + it('respects position', () => { + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + }) + + it('respects bg', () => { + expect(render()).toMatchSnapshot() + }) + + it('respects color', () => { + expect(render()).toMatchSnapshot() + }) + + it('renders shadow', () => { + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() + expect(render()).toMatchSnapshot() }) }) diff --git a/src/__tests__/CaretBox.js b/src/__tests__/CaretBox.js deleted file mode 100644 index c598c6b8183..00000000000 --- a/src/__tests__/CaretBox.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import {CaretBox} from '..' -import {render} from '../utils/testing' - -describe('CaretBox', () => { - it('is a system component', () => { - expect(CaretBox.systemComponent).toEqual(true) - }) - - it('renders a in with relative positioning', () => { - expect(render()).toMatchSnapshot() - }) - - it('passes the "borderColor" prop to both and ', () => { - expect(render()).toMatchSnapshot() - }) - - it('passes the "bg" prop to both and ', () => { - expect(render()).toMatchSnapshot() - }) -}) diff --git a/src/__tests__/CircleBadge.js b/src/__tests__/CircleBadge.js index 338a2e6ba3a..4eb84e75f2d 100644 --- a/src/__tests__/CircleBadge.js +++ b/src/__tests__/CircleBadge.js @@ -10,10 +10,6 @@ describe('CircleBadge', () => { expect(CircleBadge.systemComponent).toEqual(true) }) - it('renders medium by default', () => { - expect(render().props.className).toContain('CircleBadge--medium') - }) - it('respects "is" prop', () => { const item = render() expect(item.type).toEqual('a') diff --git a/src/__tests__/PointerBox.js b/src/__tests__/PointerBox.js new file mode 100644 index 00000000000..92c6a9272ec --- /dev/null +++ b/src/__tests__/PointerBox.js @@ -0,0 +1,21 @@ +import React from 'react' +import {PointerBox} from '..' +import {render} from '../utils/testing' + +describe('PointerBox', () => { + it('is a system component', () => { + expect(PointerBox.systemComponent).toEqual(true) + }) + + it('renders a in with relative positioning', () => { + expect(render()).toMatchSnapshot() + }) + + it('passes the "borderColor" prop to both and ', () => { + expect(render()).toMatchSnapshot() + }) + + it('passes the "bg" prop to both and ', () => { + expect(render()).toMatchSnapshot() + }) +}) diff --git a/src/__tests__/Position.js b/src/__tests__/Position.js new file mode 100644 index 00000000000..71a8fb02c57 --- /dev/null +++ b/src/__tests__/Position.js @@ -0,0 +1,79 @@ +import React from 'react' +import {LAYOUT, POSITION} from '../system-props' +import BorderBox from '../BorderBox' +import {Absolute, Fixed, Relative, Sticky} from '../Position' +import {render} from '../utils/testing' + +describe('position components', () => { + // position components don't "implement" the position prop because + // it's not in their propTypes, since it can't be overridden + const positionProps = LAYOUT.concat(POSITION.filter(p => p !== 'position')) + + describe('Absolute', () => { + it('implements system props', () => { + expect(Absolute).toImplementSystemProps(positionProps) + }) + it('sets position: absolute', () => { + expect(render()).toHaveStyleRule('position', 'absolute') + }) + it('cannot override position', () => { + expect(render()).toHaveStyleRule('position', 'absolute') + }) + it('can render other components with the is prop', () => { + const result = render() + expect(result).toHaveStyleRule('position', 'absolute') + expect(result).toHaveStyleRule('border', '1px solid') + }) + }) + + describe('Fixed', () => { + it('implements system props', () => { + expect(Fixed).toImplementSystemProps(positionProps) + }) + it('sets position: fixed', () => { + expect(render()).toHaveStyleRule('position', 'fixed') + }) + it('cannot override position', () => { + expect(render()).toHaveStyleRule('position', 'fixed') + }) + it('can render other components with the is prop', () => { + const result = render() + expect(result).toHaveStyleRule('position', 'fixed') + expect(result).toHaveStyleRule('border', '1px solid') + }) + }) + + describe('Relative', () => { + it('implements system props', () => { + expect(Relative).toImplementSystemProps(positionProps) + }) + it('sets position: relative', () => { + expect(render()).toHaveStyleRule('position', 'relative') + }) + it('cannot override position', () => { + expect(render()).toHaveStyleRule('position', 'relative') + }) + it('can render other components with the is prop', () => { + const result = render() + expect(result).toHaveStyleRule('position', 'relative') + expect(result).toHaveStyleRule('border', '1px solid') + }) + }) + + describe('Sticky', () => { + it('implements system props', () => { + expect(Sticky).toImplementSystemProps(positionProps) + }) + it('sets position: sticky', () => { + expect(render()).toHaveStyleRule('position', 'sticky') + }) + it('cannot override position', () => { + expect(render()).toHaveStyleRule('position', 'sticky') + }) + it('can render other components with the is prop', () => { + const result = render() + expect(result).toHaveStyleRule('position', 'sticky') + expect(result).toHaveStyleRule('border', '1px solid') + }) + }) +}) diff --git a/src/__tests__/Text.js b/src/__tests__/Text.js index 05ac43eebed..022f5aa9e88 100644 --- a/src/__tests__/Text.js +++ b/src/__tests__/Text.js @@ -1,7 +1,7 @@ import React from 'react' import Text from '../Text' import theme, {colors} from '../theme' -import {render} from '../utils/testing' +import {px, render, renderStyles} from '../utils/testing' describe('Text', () => { it('is a system component', () => { @@ -18,18 +18,36 @@ describe('Text', () => { it('renders font-size', () => { for (const fontSize of theme.fontSizes) { - expect(render()).toHaveStyleRule('font-size', `${fontSize}px`) + expect(render()).toHaveStyleRule('font-size', px(fontSize)) } }) + it('renders responsive fontSize', () => { + expect(renderStyles()).toEqual({ + 'font-size': px(theme.fontSizes[1]), + [`@media screen and (min-width:${px(theme.breakpoints[0])})`]: { + 'font-size': px(theme.fontSizes[2]) + } + }) + }) + + it('renders responsive lineHeight', () => { + expect(renderStyles()).toEqual({ + 'line-height': String(theme.lineHeights.condensed), + [`@media screen and (min-width:${px(theme.breakpoints[0])})`]: { + 'line-height': String(theme.lineHeights.default) + } + }) + }) + it('renders margin', () => { - expect(render()).toHaveStyleRule('margin', '4px') + expect(render()).toHaveStyleRule('margin', px(theme.space[1])) expect(render()).toMatchSnapshot() expect(render()).toMatchSnapshot() }) it('renders padding', () => { - expect(render()).toHaveStyleRule('padding', '4px') + expect(render()).toHaveStyleRule('padding', px(theme.space[1])) expect(render()).toMatchSnapshot() expect(render()).toMatchSnapshot() }) diff --git a/src/__tests__/__snapshots__/Avatar.js.snap b/src/__tests__/__snapshots__/Avatar.js.snap index 10da8b91aa1..a67b01f17e1 100644 --- a/src/__tests__/__snapshots__/Avatar.js.snap +++ b/src/__tests__/__snapshots__/Avatar.js.snap @@ -2,7 +2,6 @@ exports[`Avatar passes through the src prop 1`] = ` {undefined} `; diff --git a/src/__tests__/__snapshots__/Block.js.snap b/src/__tests__/__snapshots__/Box.js.snap similarity index 74% rename from src/__tests__/__snapshots__/Block.js.snap rename to src/__tests__/__snapshots__/Box.js.snap index 447f0881e42..dbd32929808 100644 --- a/src/__tests__/__snapshots__/Block.js.snap +++ b/src/__tests__/__snapshots__/Box.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Block borders handles a single border edge 1`] = ` +exports[`Box borders handles a single border edge 1`] = ` .emotion-0 { border-left: 1px solid; border-color: #28a745; @@ -11,7 +11,7 @@ exports[`Block borders handles a single border edge 1`] = ` /> `; -exports[`Block borders handles border prop 1`] = ` +exports[`Box borders handles border prop 1`] = ` .emotion-0 { border: 1px solid; } @@ -21,7 +21,7 @@ exports[`Block borders handles border prop 1`] = ` /> `; -exports[`Block borders handles just a border color 1`] = ` +exports[`Box borders handles just a border color 1`] = ` .emotion-0 { border-color: #d73a49; } @@ -31,7 +31,7 @@ exports[`Block borders handles just a border color 1`] = ` /> `; -exports[`Block borders handles multiple border edges 1`] = ` +exports[`Box borders handles multiple border edges 1`] = ` .emotion-0 { border-right: 1px solid; border-left: 1px solid; @@ -43,7 +43,7 @@ exports[`Block borders handles multiple border edges 1`] = ` /> `; -exports[`Block renders margin 1`] = ` +exports[`Box renders margin 1`] = ` .emotion-0 { margin: 4px; } @@ -53,7 +53,7 @@ exports[`Block renders margin 1`] = ` /> `; -exports[`Block renders margin 2`] = ` +exports[`Box renders margin 2`] = ` .emotion-0 { margin: 0px; } @@ -81,7 +81,7 @@ exports[`Block renders margin 2`] = ` /> `; -exports[`Block renders margin 3`] = ` +exports[`Box renders margin 3`] = ` .emotion-0 { margin: 4px; } @@ -109,7 +109,7 @@ exports[`Block renders margin 3`] = ` /> `; -exports[`Block renders padding 1`] = ` +exports[`Box renders padding 1`] = ` .emotion-0 { padding: 4px; } @@ -119,7 +119,7 @@ exports[`Block renders padding 1`] = ` /> `; -exports[`Block renders padding 2`] = ` +exports[`Box renders padding 2`] = ` .emotion-0 { padding: 0px; } @@ -147,7 +147,7 @@ exports[`Block renders padding 2`] = ` /> `; -exports[`Block renders padding 3`] = ` +exports[`Box renders padding 3`] = ` .emotion-0 { padding: 4px; } @@ -175,7 +175,7 @@ exports[`Block renders padding 3`] = ` /> `; -exports[`Block renders shadow 1`] = ` +exports[`Box renders shadow 1`] = ` .emotion-0 { box-shadow: 0 1px 1px rgba(27,31,35,0.1); } @@ -185,7 +185,7 @@ exports[`Block renders shadow 1`] = ` /> `; -exports[`Block renders shadow 2`] = ` +exports[`Box renders shadow 2`] = ` .emotion-0 { box-shadow: 0 1px 5px rgba(27,31,35,0.15); } @@ -195,7 +195,7 @@ exports[`Block renders shadow 2`] = ` /> `; -exports[`Block renders shadow 3`] = ` +exports[`Box renders shadow 3`] = ` .emotion-0 { box-shadow: 0 1px 15px rgba(27,31,35,0.15); } @@ -205,7 +205,7 @@ exports[`Block renders shadow 3`] = ` /> `; -exports[`Block renders shadow 4`] = ` +exports[`Box renders shadow 4`] = ` .emotion-0 { box-shadow: 0 10px 50px rgba(27,31,35,0.07); } @@ -215,13 +215,13 @@ exports[`Block renders shadow 4`] = ` /> `; -exports[`Block renders without any props 1`] = ` +exports[`Box renders without any props 1`] = `
`; -exports[`Block respects bg 1`] = ` +exports[`Box respects bg 1`] = ` .emotion-0 { background-color: #fff5b1; } @@ -231,7 +231,7 @@ exports[`Block respects bg 1`] = ` /> `; -exports[`Block respects color 1`] = ` +exports[`Box respects color 1`] = ` .emotion-0 { color: #d73a49; } @@ -241,7 +241,7 @@ exports[`Block respects color 1`] = ` /> `; -exports[`Block respects display 1`] = ` +exports[`Box respects display 1`] = ` .emotion-0 { display: inline; } @@ -251,7 +251,7 @@ exports[`Block respects display 1`] = ` /> `; -exports[`Block respects display 2`] = ` +exports[`Box respects display 2`] = ` .emotion-0 { display: inline-block; } @@ -261,7 +261,7 @@ exports[`Block respects display 2`] = ` /> `; -exports[`Block respects display 3`] = ` +exports[`Box respects display 3`] = ` .emotion-0 { display: none; } @@ -271,7 +271,7 @@ exports[`Block respects display 3`] = ` /> `; -exports[`Block respects display 4`] = ` +exports[`Box respects display 4`] = ` .emotion-0 { display: none; } @@ -293,14 +293,14 @@ exports[`Block respects display 4`] = ` /> `; -exports[`Block respects position 1`] = ` +exports[`Box respects position 1`] = `
`; -exports[`Block respects position 2`] = ` +exports[`Box respects position 2`] = `
`; diff --git a/src/__tests__/__snapshots__/Dropdown.js.snap b/src/__tests__/__snapshots__/Dropdown.js.snap index c44bbe08a59..f2e371838c9 100644 --- a/src/__tests__/__snapshots__/Dropdown.js.snap +++ b/src/__tests__/__snapshots__/Dropdown.js.snap @@ -100,13 +100,11 @@ exports[`Dropdown matches the snapshots 1`] = ` ] } className="emotion-1 btn BtnGroup-item" - disabled={undefined} onClick={[Function]} type="button" >
`; -exports[`CaretBox passes the "borderColor" prop to both and 1`] = ` +exports[`PointerBox passes the "borderColor" prop to both and 1`] = ` .emotion-0 { position: relative; background-color: #fff; @@ -86,7 +86,7 @@ exports[`CaretBox passes the "borderColor" prop to both and 1`] =
`; -exports[`CaretBox renders a in with relative positioning 1`] = ` +exports[`PointerBox renders a in with relative positioning 1`] = ` .emotion-0 { position: relative; background-color: #fff; diff --git a/src/__tests__/__snapshots__/StateLabel.js.snap b/src/__tests__/__snapshots__/StateLabel.js.snap index 6b9c58574cc..3b7b6f22c9e 100644 --- a/src/__tests__/__snapshots__/StateLabel.js.snap +++ b/src/__tests__/__snapshots__/StateLabel.js.snap @@ -17,7 +17,6 @@ exports[`StateLabel renders icon with children 1`] = ` >
)).toEqual(render(
)) +// 2. remove this definition; it's just for eslint +function SomeComponent() {} + +// 3. remove the leading "x" from this line to enable the test +xdescribe('SomeComponent', () => { + // if applicable, ensure that this is a "system component" + it('is a system component', () => { + expect(SomeComponent.systemComponent).toBe(true) + }) + + // ensure that it implements common props + it('implements common system props', () => { + expect(SomeComponent).toImplementSystemProps(COMMON) + }) + + it('matches the snapshot', () => { + expect(render()).toMatchSnapshot() + }) + + // this is generally how you test that a prop renders one or more styles + it('renders "x" prop into styles', () => { + // use the .toMatchKeys() to test a subset of the rendered styles + expect(renderStyles()).toMatchKeys({ + 'background-color': colors.green[5] + }) + + // or use .toEqual() if: + // * your component shouldn't render any other styles; or + // * you know the other ("base") styles that your component should + // render, and you can spread them into the result + const defaultStyles = { + color: colors.bodytext + } + expect(renderStyles()).toEqual({ + ...defaultStyles, + 'background-color': colors.green[5] + }) + }) }) diff --git a/src/index.js b/src/index.js index 68175f5d9fa..be157317c3f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,9 @@ export {default as theme} from './theme' // Layout -export {default as Block} from './Block' +export {default as BorderBox} from './BorderBox' export {default as Box} from './Box' +export {Position, Absolute, Fixed, Relative, Sticky} from './Position' // Components export {default as Avatar} from './Avatar' @@ -15,7 +16,7 @@ export {default as ButtonLink} from './ButtonLink' export {default as OcticonButton} from './OcticonButton' export {default as Caret} from './Caret' -export {default as CaretBox} from './CaretBox' +export {default as PointerBox} from './PointerBox' export {default as CircleOcticon} from './CircleOcticon' export {default as CircleBadge} from './CircleBadge' diff --git a/src/utils/test-matchers.js b/src/utils/test-matchers.js index e5d109160ab..136f6f2001e 100644 --- a/src/utils/test-matchers.js +++ b/src/utils/test-matchers.js @@ -1,15 +1,28 @@ import {createMatchers, createSerializer} from 'jest-emotion' import * as emotion from 'emotion' -import * as systemProps from 'styled-system' +import {styles as systemProps} from 'styled-system' +import {getClasses, getClassName, getComputedStyles, render} from './testing' expect.extend(createMatchers(emotion)) expect.addSnapshotSerializer(createSerializer(emotion)) const stringify = d => JSON.stringify(d, null, ' ') +/** + * These are props that styled-system aliases for backwards compatibility. + * For some reason, they don't show up in our toImplementSystemProps() matcher, + * so we skip over them. + */ const ALIAS_PROP_TYPES = ['w', 'align', 'justify', 'wrap'] expect.extend({ + toMatchKeys(obj, values) { + return { + pass: Object.keys(values).every(key => this.equals(obj[key], values[key])), + message: () => `Expected ${stringify(obj)} to have matching keys: ${stringify(values)}` + } + }, + toHaveClass(node, klass) { const classes = getClasses(node) const pass = classes.includes(klass) @@ -39,14 +52,15 @@ expect.extend({ pass: missing.length === 0, message: () => `Missing prop${missing.length === 1 ? '' : 's'}: ${stringify(missing)}` } + }, + + toRenderStyles(node, expected) { + const result = render(node) + const className = getClassName(result) + const computed = getComputedStyles(className) + return { + pass: this.equals(expected, computed), + message: () => `Computed styles mismatch: expected ${stringify(expected)}, but got ${stringify(computed)}` + } } }) - -function getProps(node) { - return typeof node.props === 'function' ? node.props() : node.props -} - -function getClasses(node) { - const {className = ''} = getProps(node) - return className.trim().split(/ +/) -} diff --git a/src/utils/testing.js b/src/utils/testing.js index 9ac7e146ad4..130e8f35b87 100644 --- a/src/utils/testing.js +++ b/src/utils/testing.js @@ -52,3 +52,73 @@ export function rendersClass(node, klass) { export function renderWithTheme(node, theme = defaultTheme) { return render({node}) } + +export function px(value) { + return typeof value === 'number' ? `${value}px` : value +} + +export function renderStyles(node) { + const { + props: {className} + } = render(node) + return getComputedStyles(className) +} + +export function getComputedStyles(className) { + const div = document.createElement('div') + div.className = className + + const computed = {} + for (const sheet of document.styleSheets) { + for (const rule of sheet.cssRules) { + if (rule.type === 1) { + readRule(rule, computed) + } else if (rule.type === 4) { + readMedia(rule) + } else { + // console.warn('rule.type =', rule.type) + } + } + } + + return computed + + function readRule(rule, dest) { + if (!rule.selectorText) { + // console.warn('no selector text:', rule) + } else if (div.matches(rule.selectorText)) { + const {style} = rule + for (let i = 0; i < style.length; i++) { + const prop = style[i] + dest[prop] = style.getPropertyValue(prop) + } + } else { + // console.warn('no match:', rule.selectorText) + } + } + + function readMedia(mediaRule) { + const key = `@media ${mediaRule.media[0]}` + const dest = computed[key] || (computed[key] = {}) + for (const rule of mediaRule.cssRules) { + readRule(rule, dest) + } + } +} + +/** + * This provides a layer of compatibility between the render() function from + * react-test-renderer and Enzyme's mount() + */ +export function getProps(node) { + return typeof node.props === 'function' ? node.props() : node.props +} + +export function getClassName(node) { + return getProps(node).className +} + +export function getClasses(node) { + const className = getClassName(node) + return className ? className.trim().split(/ +/) : [] +}