From 621f4c72f4124c810269a8a9928e915623a03955 Mon Sep 17 00:00:00 2001 From: Sara Vieira Date: Mon, 18 Sep 2017 12:12:01 +0100 Subject: [PATCH] feat: improved range slider --- .../__snapshots__/filters.spec.js.snap | 517 +++---- .../my-joyent/src/components/home/home.js | 27 +- .../__snapshots__/header.spec.js.snap | 2 + .../src/components/navigation/header.js | 4 +- .../__tests__/__snapshots__/list.spec.js.snap | 4 +- .../my-joyent/src/components/packages/list.js | 2 +- .../__snapshots__/index.spec.js.snap | 1376 +++++++++-------- .../__snapshots__/header.spec.js.snap | 2 + .../__snapshots__/index.spec.js.snap | 4 +- packages/ui-toolkit/.babelrc | 2 +- packages/ui-toolkit/package.json | 22 +- packages/ui-toolkit/src/slider/Readme.md | 15 +- packages/ui-toolkit/src/slider/index.js | 79 +- packages/ui-toolkit/src/slider/inputStyles.js | 61 - .../src/slider/react-input-range/index.js | 3 + .../input-range/input-range.jsx | 725 +++++++++ .../react-input-range/input-range/label.jsx | 44 + .../input-range/range-prop-type.js | 18 + .../react-input-range/input-range/slider.jsx | 309 ++++ .../react-input-range/input-range/track.jsx | 210 +++ .../input-range/value-prop-type.js | 23 + .../input-range/value-transformer.js | 144 ++ .../react-input-range/utils/captialize.js | 9 + .../slider/react-input-range/utils/clamp.js | 11 + .../react-input-range/utils/distance-to.js | 13 + .../slider/react-input-range/utils/index.js | 7 + .../react-input-range/utils/is-defined.js | 9 + .../react-input-range/utils/is-number.js | 9 + .../react-input-range/utils/is-object.js | 9 + .../slider/react-input-range/utils/length.js | 10 + yarn.lock | 1011 +----------- 31 files changed, 2556 insertions(+), 2125 deletions(-) delete mode 100644 packages/ui-toolkit/src/slider/inputStyles.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/index.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/input-range.jsx create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/label.jsx create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/range-prop-type.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/slider.jsx create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/track.jsx create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/value-prop-type.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/input-range/value-transformer.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/captialize.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/clamp.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/distance-to.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/index.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/is-defined.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/is-number.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/is-object.js create mode 100755 packages/ui-toolkit/src/slider/react-input-range/utils/length.js diff --git a/packages/my-joyent/src/components/filters/__tests__/__snapshots__/filters.spec.js.snap b/packages/my-joyent/src/components/filters/__tests__/__snapshots__/filters.spec.js.snap index 479f8e40..bc92f250 100644 --- a/packages/my-joyent/src/components/filters/__tests__/__snapshots__/filters.spec.js.snap +++ b/packages/my-joyent/src/components/filters/__tests__/__snapshots__/filters.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`renders without throwing 1`] = ` -.c6 { +.c12 { font-family: sans-serif; font-size: 100%; line-height: 1.15; @@ -49,47 +49,47 @@ exports[`renders without throwing 1`] = ` font-weight: 600; } -.c6::-moz-focus-inner, -.c6[type='button']::-moz-focus-inner, -.c6[type='reset']::-moz-focus-inner, -.c6[type='submit']::-moz-focus-inner { +.c12::-moz-focus-inner, +.c12[type='button']::-moz-focus-inner, +.c12[type='reset']::-moz-focus-inner, +.c12[type='submit']::-moz-focus-inner { border-style: none; padding: 0; } -.c6:-moz-focusring, -.c6[type='button']:-moz-focusring, -.c6[type='reset']:-moz-focusring, -.c6[type='submit']:-moz-focusring { +.c12:-moz-focusring, +.c12[type='button']:-moz-focusring, +.c12[type='reset']:-moz-focusring, +.c12[type='submit']:-moz-focusring { outline: 0.0625rem dotted ButtonText; } -.c6:focus { +.c12:focus { outline: 0; text-decoration: none; } -.c6:hover { +.c12:hover { border: solid 0.0625rem; } -.c6:active, -.c6:active:hover, -.c6:active:focus { +.c12:active, +.c12:active:hover, +.c12:active:focus { background-image: none; outline: 0; } -.c6[disabled] { +.c12[disabled] { cursor: not-allowed; pointer-events: none; } -.c6 + button { +.c12 + button { margin-left: 1.25rem; } -.c7 { +.c13 { font-family: sans-serif; font-size: 100%; line-height: 1.15; @@ -136,43 +136,43 @@ exports[`renders without throwing 1`] = ` font-weight: 600; } -.c7::-moz-focus-inner, -.c7[type='button']::-moz-focus-inner, -.c7[type='reset']::-moz-focus-inner, -.c7[type='submit']::-moz-focus-inner { +.c13::-moz-focus-inner, +.c13[type='button']::-moz-focus-inner, +.c13[type='reset']::-moz-focus-inner, +.c13[type='submit']::-moz-focus-inner { border-style: none; padding: 0; } -.c7:-moz-focusring, -.c7[type='button']:-moz-focusring, -.c7[type='reset']:-moz-focusring, -.c7[type='submit']:-moz-focusring { +.c13:-moz-focusring, +.c13[type='button']:-moz-focusring, +.c13[type='reset']:-moz-focusring, +.c13[type='submit']:-moz-focusring { outline: 0.0625rem dotted ButtonText; } -.c7:focus { +.c13:focus { outline: 0; text-decoration: none; } -.c7:hover { +.c13:hover { border: solid 0.0625rem; } -.c7:active, -.c7:active:hover, -.c7:active:focus { +.c13:active, +.c13:active:hover, +.c13:active:focus { background-image: none; outline: 0; } -.c7[disabled] { +.c13[disabled] { cursor: not-allowed; pointer-events: none; } -.c7 + button { +.c13 + button { margin-left: 1.25rem; } @@ -187,14 +187,25 @@ exports[`renders without throwing 1`] = ` font-weight: bold; } -.c3 .input-range { - position: relative; - width: calc(100% - 18px); - margin: auto; - min-height: 0.625rem; +.c7 { + font-weight: 600; + font-size: 0.625rem; + color: #464646; + position: absolute; + top: 1rem; + right: auto; } -.c3 .slider { +.c9 { + font-weight: 600; + font-size: 0.625rem; + color: #464646; + position: absolute; + top: 1rem; + right: 1px; +} + +.c8 { -webkit-appearance: none; -moz-appearance: none; appearance: none; @@ -205,57 +216,56 @@ exports[`renders without throwing 1`] = ` display: block; height: 0.875rem; width: 0.875rem; - -webkit-transform: translateY(-50%) translateX(-50%); - -ms-transform: translateY(-50%) translateX(-50%); - transform: translateY(-50%) translateX(-50%); + -webkit-transform: translateY(-50%) translateX(-1%); + -ms-transform: translateY(-50%) translateX(-1%); + transform: translateY(-50%) translateX(-1%); outline: none; position: absolute; - top: 50%; + top: 0; margin-top: 0.125rem; } -.c3 .slider::active { +.c8::active { -webkit-transform: scale(1.3); -ms-transform: scale(1.3); transform: scale(1.3); } -.c3 .slider::focus { +.c8::focus { box-shadow: 0 0 0 5px rgba(63,81,181,0.2); } -.c3 .disabled .track { - background: #D8D8D8; -} - -.c3 .disabled .slider { - background: #CCC; - border: 1px solid #CCC; - box-shadow: none; - -webkit-transform: none; - -ms-transform: none; - transform: none; -} - -.c3 .min, -.c3 .max { - display: none; -} - -.c3 .value { - top: 0.5rem; +.c10 { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: #FFFFFF; + border: 2px solid #bdbdbd; + border-radius: 50%; + cursor: pointer; + display: block; + height: 0.875rem; + width: 0.875rem; + -webkit-transform: translateY(-50%) translateX(-99%); + -ms-transform: translateY(-50%) translateX(-99%); + transform: translateY(-50%) translateX(-99%); + outline: none; position: absolute; + top: 0; + margin-top: 0.125rem; } -.c3 .value .label-container { - font-weight: 600; - font-size: 0.625rem; - color: #464646; - left: -50%; - position: relative; +.c10::active { + -webkit-transform: scale(1.3); + -ms-transform: scale(1.3); + transform: scale(1.3); } -.c3 .track { +.c10::focus { + box-shadow: 0 0 0 5px rgba(63,81,181,0.2); +} + +.c5 { background: #D8D8D8; cursor: pointer; display: block; @@ -263,13 +273,18 @@ exports[`renders without throwing 1`] = ` position: relative; } -.c3 .active-track { +.c6 { background: #364ACD; height: 100%; position: absolute; } .c4 { + position: relative; + min-height: 0.625rem; +} + +.c3 { margin-bottom: 0.625rem; margin-top: 0.75rem; } @@ -291,7 +306,7 @@ exports[`renders without throwing 1`] = ` margin-right: 2.25rem; } -.c5 { +.c11 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -320,39 +335,28 @@ exports[`renders without throwing 1`] = `
-
+
- - - 0.256 - -
without throwing 1`] = ` } } /> - + - - 0.256 - + 0.256
without throwing 1`] = ` aria-valuemax={50.688} aria-valuemin={0.256} aria-valuenow={0.256} - className="slider" + className="c8" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 50.688 - + 50.688
without throwing 1`] = ` aria-valuemax={50.688} aria-valuemin={0.256} aria-valuenow={50.688} - className="slider" + className="c10" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 50.688 - -
-
+
- - - 0.25 - -
without throwing 1`] = ` } } /> - + - - 0.25 - + 0.25
without throwing 1`] = ` aria-valuemax={3.25} aria-valuemin={0.25} aria-valuenow={0.25} - className="slider" + className="c8" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 3.25 - + 3.25
without throwing 1`] = ` aria-valuemax={3.25} aria-valuemin={0.25} aria-valuenow={3.25} - className="slider" + className="c10" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 3.25 - -
-
+
- - - 0.01 - -
without throwing 1`] = ` } } /> - + - - 0.01 - + 0.01
without throwing 1`] = ` aria-valuemax={107.26} aria-valuemin={0.01} aria-valuenow={0.01} - className="slider" + className="c8" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 107.26 - + 107.26
without throwing 1`] = ` aria-valuemax={107.26} aria-valuemin={0.01} aria-valuenow={107.26} - className="slider" + className="c10" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 107.26 - -
-
+
- - - 0.016 - -
without throwing 1`] = ` } } /> - + - - 0.016 - + 0.016
without throwing 1`] = ` aria-valuemax={0.525} aria-valuemin={0.016} aria-valuenow={0.016} - className="slider" + className="c8" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 0.525 - + 0.525
without throwing 1`] = ` aria-valuemax={0.525} aria-valuemin={0.016} aria-valuenow={0.525} - className="slider" + className="c10" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 0.525 - -
+ + + ); } } diff --git a/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap b/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap index ff3c6ec7..589c243c 100644 --- a/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap +++ b/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap @@ -68,9 +68,11 @@ exports[`renders
without throwing 1`] = ` > Triton Logo diff --git a/packages/my-joyent/src/components/navigation/header.js b/packages/my-joyent/src/components/navigation/header.js index 581fb136..7a4c66a7 100644 --- a/packages/my-joyent/src/components/navigation/header.js +++ b/packages/my-joyent/src/components/navigation/header.js @@ -14,8 +14,8 @@ const StyledLogo = Img.extend` const NavHeader = () => (
- - + +
diff --git a/packages/my-joyent/src/components/packages/__tests__/__snapshots__/list.spec.js.snap b/packages/my-joyent/src/components/packages/__tests__/__snapshots__/list.spec.js.snap index 43dde085..b2d77297 100644 --- a/packages/my-joyent/src/components/packages/__tests__/__snapshots__/list.spec.js.snap +++ b/packages/my-joyent/src/components/packages/__tests__/__snapshots__/list.spec.js.snap @@ -253,7 +253,7 @@ exports[`renders without throwing 1`] = ` } } -
    without throwing 1`] = `
    -
+
`; diff --git a/packages/my-joyent/src/components/packages/list.js b/packages/my-joyent/src/components/packages/list.js index 31a5ce68..b14b3d94 100644 --- a/packages/my-joyent/src/components/packages/list.js +++ b/packages/my-joyent/src/components/packages/list.js @@ -5,7 +5,7 @@ import { Col } from 'react-styled-flexboxgrid'; import Package from '@components/package'; -const ListStyled = styled.ul` +const ListStyled = styled.section` display: flex; min-width: 100%; list-style: none; diff --git a/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap b/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap index b5857e2e..7218a74d 100644 --- a/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap +++ b/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`renders without throwing 1`] = ` -.c1 { +.c2 { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; @@ -20,7 +20,7 @@ exports[`renders without throwing 1`] = ` margin-left: -0.5rem; } -.c27 { +.c34 { box-sizing: border-box; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; @@ -29,7 +29,7 @@ exports[`renders without throwing 1`] = ` padding-left: 0.5rem; } -.c31 { +.c38 { box-sizing: border-box; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; @@ -51,12 +51,12 @@ exports[`renders without throwing 1`] = ` flex-flow: column; } -.c14 { +.c15 { background-color: transparent; text-decoration-skip: objects; } -.c17 { +.c18 { font-family: sans-serif; font-size: 100%; line-height: 1.15; @@ -101,47 +101,47 @@ exports[`renders without throwing 1`] = ` border: solid 0.0625rem; } -.c17::-moz-focus-inner, -.c17[type='button']::-moz-focus-inner, -.c17[type='reset']::-moz-focus-inner, -.c17[type='submit']::-moz-focus-inner { +.c18::-moz-focus-inner, +.c18[type='button']::-moz-focus-inner, +.c18[type='reset']::-moz-focus-inner, +.c18[type='submit']::-moz-focus-inner { border-style: none; padding: 0; } -.c17:-moz-focusring, -.c17[type='button']:-moz-focusring, -.c17[type='reset']:-moz-focusring, -.c17[type='submit']:-moz-focusring { +.c18:-moz-focusring, +.c18[type='button']:-moz-focusring, +.c18[type='reset']:-moz-focusring, +.c18[type='submit']:-moz-focusring { outline: 0.0625rem dotted ButtonText; } -.c17:focus { +.c18:focus { outline: 0; text-decoration: none; } -.c17:hover { +.c18:hover { border: solid 0.0625rem; } -.c17:active, -.c17:active:hover, -.c17:active:focus { +.c18:active, +.c18:active:hover, +.c18:active:focus { background-image: none; outline: 0; } -.c17[disabled] { +.c18[disabled] { cursor: not-allowed; pointer-events: none; } -.c17 + button { +.c18 + button { margin-left: 1.25rem; } -.c24 { +.c31 { font-family: sans-serif; font-size: 100%; line-height: 1.15; @@ -189,47 +189,47 @@ exports[`renders without throwing 1`] = ` font-weight: 600; } -.c24::-moz-focus-inner, -.c24[type='button']::-moz-focus-inner, -.c24[type='reset']::-moz-focus-inner, -.c24[type='submit']::-moz-focus-inner { +.c31::-moz-focus-inner, +.c31[type='button']::-moz-focus-inner, +.c31[type='reset']::-moz-focus-inner, +.c31[type='submit']::-moz-focus-inner { border-style: none; padding: 0; } -.c24:-moz-focusring, -.c24[type='button']:-moz-focusring, -.c24[type='reset']:-moz-focusring, -.c24[type='submit']:-moz-focusring { +.c31:-moz-focusring, +.c31[type='button']:-moz-focusring, +.c31[type='reset']:-moz-focusring, +.c31[type='submit']:-moz-focusring { outline: 0.0625rem dotted ButtonText; } -.c24:focus { +.c31:focus { outline: 0; text-decoration: none; } -.c24:hover { +.c31:hover { border: solid 0.0625rem; } -.c24:active, -.c24:active:hover, -.c24:active:focus { +.c31:active, +.c31:active:hover, +.c31:active:focus { background-image: none; outline: 0; } -.c24[disabled] { +.c31[disabled] { cursor: not-allowed; pointer-events: none; } -.c24 + button { +.c31 + button { margin-left: 1.25rem; } -.c25 { +.c32 { font-family: sans-serif; font-size: 100%; line-height: 1.15; @@ -276,53 +276,138 @@ exports[`renders without throwing 1`] = ` font-weight: 600; } -.c25::-moz-focus-inner, -.c25[type='button']::-moz-focus-inner, -.c25[type='reset']::-moz-focus-inner, -.c25[type='submit']::-moz-focus-inner { +.c32::-moz-focus-inner, +.c32[type='button']::-moz-focus-inner, +.c32[type='reset']::-moz-focus-inner, +.c32[type='submit']::-moz-focus-inner { border-style: none; padding: 0; } -.c25:-moz-focusring, -.c25[type='button']:-moz-focusring, -.c25[type='reset']:-moz-focusring, -.c25[type='submit']:-moz-focusring { +.c32:-moz-focusring, +.c32[type='button']:-moz-focusring, +.c32[type='reset']:-moz-focusring, +.c32[type='submit']:-moz-focusring { outline: 0.0625rem dotted ButtonText; } -.c25:focus { +.c32:focus { outline: 0; text-decoration: none; } -.c25:hover { +.c32:hover { border: solid 0.0625rem; } -.c25:active, -.c25:active:hover, -.c25:active:focus { +.c32:active, +.c32:active:hover, +.c32:active:focus { background-image: none; outline: 0; } -.c25[disabled] { +.c32[disabled] { cursor: not-allowed; pointer-events: none; } -.c25 + button { +.c32 + button { margin-left: 1.25rem; } -.c11 { +.c45 { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; + overflow: visible; + text-transform: none; + -webkit-appearance: button; + -moz-appearance: button; + appearance: button; + min-width: 7.5rem; + box-sizing: border-box; + display: inline-block; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0; + padding: 0.9375rem 1.125rem; + position: relative; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + font-size: 0.9375rem; + text-align: center; + font-style: normal; + font-stretch: normal; + line-height: normal; + -webkit-letter-spacing: normal; + -moz-letter-spacing: normal; + -ms-letter-spacing: normal; + letter-spacing: normal; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border-radius: 0.25rem; + border: solid 0.0625rem; +} + +.c45::-moz-focus-inner, +.c45[type='button']::-moz-focus-inner, +.c45[type='reset']::-moz-focus-inner, +.c45[type='submit']::-moz-focus-inner { + border-style: none; + padding: 0; +} + +.c45:-moz-focusring, +.c45[type='button']:-moz-focusring, +.c45[type='reset']:-moz-focusring, +.c45[type='submit']:-moz-focusring { + outline: 0.0625rem dotted ButtonText; +} + +.c45:focus { + outline: 0; + text-decoration: none; +} + +.c45:hover { + border: solid 0.0625rem; +} + +.c45:active, +.c45:active:hover, +.c45:active:focus { + background-image: none; + outline: 0; +} + +.c45[disabled] { + cursor: not-allowed; + pointer-events: none; +} + +.c45 + button { + margin-left: 1.25rem; +} + +.c12 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 500; font-size: 0.9375rem; } -.c5 { +.c6 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 500; font-size: 1.5rem; @@ -331,7 +416,7 @@ exports[`renders without throwing 1`] = ` display: inline-block; } -.c6 { +.c7 { border: solid; border-width: 0 0.125rem 0.125rem 0; display: inline-block; @@ -342,14 +427,14 @@ exports[`renders without throwing 1`] = ` margin: 0.1875rem 0.625rem 0.1875rem 0.625rem; } -.c13 { +.c14 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 400; line-height: 1.5rem; font-size: 0.9375rem; } -.c16 { +.c17 { background-color: #FFFFFF; padding: 0.75rem; min-width: auto; @@ -357,17 +442,17 @@ exports[`renders without throwing 1`] = ` box-shadow: none; } -.c16:hover, -.c16:focus, -.c16:active, -.c16:active:hover, -.c16:active:focus { +.c17:hover, +.c17:focus, +.c17:active, +.c17:active:hover, +.c17:active:focus { background-color: #FFFFFF; border: none; box-shadow: none; } -.c19 { +.c20 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 400; font-size: 0.9375rem; @@ -378,7 +463,7 @@ exports[`renders without throwing 1`] = ` font-weight: bold; } -.c7 { +.c8 { position: relative; margin-bottom: 0.75rem; box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05); @@ -386,7 +471,7 @@ exports[`renders without throwing 1`] = ` width: 100%; } -.c8 { +.c9 { position: absolute; top: 0; left: 0; @@ -394,33 +479,44 @@ exports[`renders without throwing 1`] = ` height: 100%; } -.c9 { +.c10 { padding: 0.75rem 0 0.84375rem 0; } -.c10 { +.c11 { margin: 0 3.375rem 0.09375rem 3.375rem; font-weight: 600; } -.c12 { +.c13 { margin: 0.09375rem 3.375rem 0 3.375rem; } -.c15 { +.c16 { position: absolute; right: 0.1875rem; top: 0.1875rem; } -.c21 .input-range { - position: relative; - width: calc(100% - 18px); - margin: auto; - min-height: 0.625rem; +.c26 { + font-weight: 600; + font-size: 0.625rem; + color: #464646; + position: absolute; + top: 1rem; + right: auto; } -.c21 .slider { +.c28 { + font-weight: 600; + font-size: 0.625rem; + color: #464646; + position: absolute; + top: 1rem; + right: 1px; +} + +.c27 { -webkit-appearance: none; -moz-appearance: none; appearance: none; @@ -431,57 +527,56 @@ exports[`renders without throwing 1`] = ` display: block; height: 0.875rem; width: 0.875rem; - -webkit-transform: translateY(-50%) translateX(-50%); - -ms-transform: translateY(-50%) translateX(-50%); - transform: translateY(-50%) translateX(-50%); + -webkit-transform: translateY(-50%) translateX(-1%); + -ms-transform: translateY(-50%) translateX(-1%); + transform: translateY(-50%) translateX(-1%); outline: none; position: absolute; - top: 50%; + top: 0; margin-top: 0.125rem; } -.c21 .slider::active { +.c27::active { -webkit-transform: scale(1.3); -ms-transform: scale(1.3); transform: scale(1.3); } -.c21 .slider::focus { +.c27::focus { box-shadow: 0 0 0 5px rgba(63,81,181,0.2); } -.c21 .disabled .track { - background: #D8D8D8; -} - -.c21 .disabled .slider { - background: #CCC; - border: 1px solid #CCC; - box-shadow: none; - -webkit-transform: none; - -ms-transform: none; - transform: none; -} - -.c21 .min, -.c21 .max { - display: none; -} - -.c21 .value { - top: 0.5rem; +.c29 { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: #FFFFFF; + border: 2px solid #bdbdbd; + border-radius: 50%; + cursor: pointer; + display: block; + height: 0.875rem; + width: 0.875rem; + -webkit-transform: translateY(-50%) translateX(-99%); + -ms-transform: translateY(-50%) translateX(-99%); + transform: translateY(-50%) translateX(-99%); + outline: none; position: absolute; + top: 0; + margin-top: 0.125rem; } -.c21 .value .label-container { - font-weight: 600; - font-size: 0.625rem; - color: #464646; - left: -50%; - position: relative; +.c29::active { + -webkit-transform: scale(1.3); + -ms-transform: scale(1.3); + transform: scale(1.3); } -.c21 .track { +.c29::focus { + box-shadow: 0 0 0 5px rgba(63,81,181,0.2); +} + +.c24 { background: #D8D8D8; cursor: pointer; display: block; @@ -489,18 +584,23 @@ exports[`renders without throwing 1`] = ` position: relative; } -.c21 .active-track { +.c25 { background: #364ACD; height: 100%; position: absolute; } +.c23 { + position: relative; + min-height: 0.625rem; +} + .c22 { margin-bottom: 0.625rem; margin-top: 0.75rem; } -.c33 { +.c40 { font-size: 0.9375rem; line-height: 1.5; font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; @@ -526,7 +626,7 @@ exports[`renders without throwing 1`] = ` padding: 0.75rem 1.125rem 0 1.125rem; } -.c29 { +.c36 { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; @@ -561,7 +661,7 @@ exports[`renders without throwing 1`] = ` min-width: 292px; } -.c30 { +.c37 { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; @@ -590,7 +690,7 @@ exports[`renders without throwing 1`] = ` flex-direction: row; } -.c32 { +.c39 { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; @@ -616,7 +716,7 @@ exports[`renders without throwing 1`] = ` transform: translateY(-50%); } -.c35 { +.c42 { display: inline-block; -webkit-flex-direction: column; -ms-flex-direction: column; @@ -632,14 +732,14 @@ exports[`renders without throwing 1`] = ` justify-content: flex-end; } -.c34 { +.c41 { display: inline-block; padding: 0 1.125rem; font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 400; } -.c36 { +.c43 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 400; -webkit-flex-grow: 1; @@ -650,7 +750,7 @@ exports[`renders without throwing 1`] = ` flex-basis: 5.625rem; } -.c37 { +.c44 { display: inline-block; -webkit-flex-direction: column; -ms-flex-direction: column; @@ -663,7 +763,7 @@ exports[`renders without throwing 1`] = ` color: rgba(73,73,73,0.5); } -.c3 { +.c4 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 400; display: inline-block; @@ -672,41 +772,41 @@ exports[`renders without throwing 1`] = ` margin-right: 1.4375rem; } -.c4 { +.c5 { font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; font-weight: 400; text-decoration: none; cursor: pointer; } -.c4.active { +.c5.active { cursor: default; } -.c2 { +.c3 { list-style-type: none; padding: 0; margin: 0; } -.c20 { +.c21 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } -.c20 > div { +.c21 > div { -webkit-flex-grow: 1; -ms-flex-grow: 1; flex-grow: 1; } -.c20 > div:not(:last-child) { +.c21 > div:not(:last-child) { margin-right: 2.25rem; } -.c23 { +.c30 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -719,16 +819,16 @@ exports[`renders without throwing 1`] = ` margin-top: 2.25rem; } -.c18 { +.c19 { width: 100%; } -.c28 { +.c35 { margin-right: 1.125rem; margin-bottom: 1.125rem; } -.c26 { +.c33 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -744,8 +844,12 @@ exports[`renders without throwing 1`] = ` margin-left: -0.5rem; } +.c1 { + margin-bottom: 40px; +} + @media only screen and (min-width:0em) { - .c27 { + .c34 { -webkit-flex-basis: 100%; -ms-flex-basis: 100%; flex-basis: 100%; @@ -755,7 +859,7 @@ exports[`renders without throwing 1`] = ` } @media only screen and (min-width:48em) { - .c27 { + .c34 { -webkit-flex-basis: 50%; -ms-flex-basis: 50%; flex-basis: 50%; @@ -765,7 +869,7 @@ exports[`renders without throwing 1`] = ` } @media only screen and (min-width:64em) { - .c27 { + .c34 { -webkit-flex-basis: 33.333333333333336%; -ms-flex-basis: 33.333333333333336%; flex-basis: 33.333333333333336%; @@ -775,7 +879,7 @@ exports[`renders without throwing 1`] = ` } @media only screen and (min-width:75em) { - .c27 { + .c34 { -webkit-flex-basis: 25%; -ms-flex-basis: 25%; flex-basis: 25%; @@ -785,7 +889,7 @@ exports[`renders without throwing 1`] = ` } @media only screen and (min-width:0em) { - .c31 { + .c38 { -webkit-flex-basis: 50%; -ms-flex-basis: 50%; flex-basis: 50%; @@ -815,19 +919,21 @@ exports[`renders without throwing 1`] = `
-
+

Instances

Create Instance

Choosing deployement data center

Not all data centres have all configurations of instances available. Make sure that you choose the data center that suits your requirements. Learn More @@ -910,7 +1016,7 @@ exports[`renders without throwing 1`] = `

-
+
- - - 0.256 - -
without throwing 1`] = ` } } /> - + - - 0.256 - + 0.256
without throwing 1`] = ` aria-valuemax={63.8} aria-valuemin={0.256} aria-valuenow={0.256} - className="slider" + className="c27" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 63.8 - + 63.8
without throwing 1`] = ` aria-valuemax={63.8} aria-valuemin={0.256} aria-valuenow={63.8} - className="slider" + className="c29" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 63.8 - -
-
+
- - - 0.25 - -
without throwing 1`] = ` } } /> - + - - 0.25 - + 0.25
without throwing 1`] = ` aria-valuemax={8} aria-valuemin={0.25} aria-valuenow={0.25} - className="slider" + className="c27" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 8 - + 8
without throwing 1`] = ` aria-valuemax={8} aria-valuemin={0.25} aria-valuenow={8} - className="slider" + className="c29" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 8 - -
-
+
- - - 0.01 - -
without throwing 1`] = ` } } /> - + - - 0.01 - + 0.01
without throwing 1`] = ` aria-valuemax={4.9} aria-valuemin={0.01} aria-valuenow={0.01} - className="slider" + className="c27" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 4.9 - + 4.9
without throwing 1`] = ` aria-valuemax={4.9} aria-valuemin={0.01} aria-valuenow={4.9} - className="slider" + className="c29" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 4.9 - -
-
+
- - - 0.016 - -
without throwing 1`] = ` } } /> - + - - 0.016 - + 0.016
without throwing 1`] = ` aria-valuemax={2.131} aria-valuemin={0.016} aria-valuenow={0.016} - className="slider" + className="c27" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "0%", + "position": "absolute", + } + } tabIndex="0" + type="min" /> - + - - 2.131 - + 2.131
without throwing 1`] = ` aria-valuemax={2.131} aria-valuemin={0.016} aria-valuenow={2.131} - className="slider" + className="c29" draggable="false" onKeyDown={[Function]} onMouseDown={[Function]} onTouchStart={[Function]} role="slider" + style={ + Object { + "left": "100%", + "position": "absolute", + } + } tabIndex="0" + type="max" />
- - - 2.131 - -
-
    $ @@ -1496,54 +1490,54 @@ exports[`renders without throwing 1`] = ` per hour
    0.256 GB RAM
    0.25 vCPUs
    0.1 TB disk
    SSD
    Compute Optimized @@ -1554,25 +1548,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -1580,54 +1574,54 @@ exports[`renders without throwing 1`] = ` per hour
    0.768 GB RAM
    0.5 vCPUs
    0.25 TB disk
    SSD
    Compute Optimized @@ -1638,25 +1632,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -1664,54 +1658,54 @@ exports[`renders without throwing 1`] = ` per hour
    1.8 GB RAM
    1 vCPUs
    0.5 TB disk
    SSD
    Compute Optimized @@ -1722,25 +1716,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -1748,54 +1742,54 @@ exports[`renders without throwing 1`] = ` per hour
    3.8 GB RAM
    2 vCPUs
    1 TB disk
    SSD
    Compute Optimized @@ -1806,25 +1800,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -1832,54 +1826,54 @@ exports[`renders without throwing 1`] = ` per hour
    7.8 GB RAM
    4 vCPUs
    2 TB disk
    SSD
    Compute Optimized @@ -1890,25 +1884,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -1916,54 +1910,54 @@ exports[`renders without throwing 1`] = ` per hour
    15.8 GB RAM
    8 vCPUs
    4 TB disk
    SSD
    Compute Optimized @@ -1974,25 +1968,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2000,54 +1994,54 @@ exports[`renders without throwing 1`] = ` per hour
    3.8 GB RAM
    1 vCPUs
    0.5 TB disk
    SSD
    General Purpose @@ -2058,25 +2052,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2084,54 +2078,54 @@ exports[`renders without throwing 1`] = ` per hour
    7.8 GB RAM
    2 vCPUs
    1 TB disk
    SSD
    General Purpose @@ -2142,25 +2136,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2168,54 +2162,54 @@ exports[`renders without throwing 1`] = ` per hour
    15.8 GB RAM
    4 vCPUs
    2 TB disk
    SSD
    General Purpose @@ -2226,25 +2220,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2252,54 +2246,54 @@ exports[`renders without throwing 1`] = ` per hour
    31.8 GB RAM
    8 vCPUs
    4 TB disk
    SSD
    General Purpose @@ -2310,25 +2304,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2336,54 +2330,54 @@ exports[`renders without throwing 1`] = ` per hour
    15.8 GB RAM
    2 vCPUs
    1 TB disk
    SSD
    Memory Optimized @@ -2394,25 +2388,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2420,54 +2414,54 @@ exports[`renders without throwing 1`] = ` per hour
    31.8 GB RAM
    4 vCPUs
    2 TB disk
    SSD
    Memory Optimized @@ -2478,25 +2472,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2504,54 +2498,54 @@ exports[`renders without throwing 1`] = ` per hour
    63.8 GB RAM
    8 vCPUs
    4 TB disk
    SSD
    Memory Optimized @@ -2562,25 +2556,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2588,54 +2582,54 @@ exports[`renders without throwing 1`] = ` per hour
    31.8 GB RAM
    4 vCPUs
    8 TB disk
    SSD
    Storage Optimized @@ -2646,25 +2640,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2672,54 +2666,54 @@ exports[`renders without throwing 1`] = ` per hour
    63.8 GB RAM
    8 vCPUs
    16 TB disk
    SSD
    Storage Optimized @@ -2730,25 +2724,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2756,54 +2750,54 @@ exports[`renders without throwing 1`] = ` per hour
    15.8 GB RAM
    2 vCPUs
    12 TB disk
    SSD
    Storage Optimized @@ -2814,25 +2808,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2840,54 +2834,54 @@ exports[`renders without throwing 1`] = ` per hour
    31.8 GB RAM
    4 vCPUs
    24 TB disk
    SSD
    Storage Optimized @@ -2898,25 +2892,25 @@ exports[`renders without throwing 1`] = `
    $ @@ -2924,54 +2918,54 @@ exports[`renders without throwing 1`] = ` per hour
    63.8 GB RAM
    8 vCPUs
    49 TB disk
    SSD
    Storage Optimized @@ -2981,7 +2975,21 @@ exports[`renders without throwing 1`] = `
    -
+ +
+
+ +
diff --git a/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap b/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap index ff3c6ec7..589c243c 100644 --- a/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap +++ b/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap @@ -68,9 +68,11 @@ exports[`renders
without throwing 1`] = ` > Triton Logo diff --git a/packages/my-joyent/src/containers/packages/__tests__/__snapshots__/index.spec.js.snap b/packages/my-joyent/src/containers/packages/__tests__/__snapshots__/index.spec.js.snap index cabbef24..353a806b 100644 --- a/packages/my-joyent/src/containers/packages/__tests__/__snapshots__/index.spec.js.snap +++ b/packages/my-joyent/src/containers/packages/__tests__/__snapshots__/index.spec.js.snap @@ -253,7 +253,7 @@ exports[`renders without throwing 1`] = ` } } -
    without throwing 1`] = `
    -
+ `; diff --git a/packages/ui-toolkit/.babelrc b/packages/ui-toolkit/.babelrc index d57f858e..c1e44f2e 100644 --- a/packages/ui-toolkit/.babelrc +++ b/packages/ui-toolkit/.babelrc @@ -1,5 +1,5 @@ { - "presets": "joyent-portal", + "presets": ["joyent-portal"], "plugins": [ "styled-components", ["inline-react-svg", { diff --git a/packages/ui-toolkit/package.json b/packages/ui-toolkit/package.json index d12e7c70..911c4bc7 100644 --- a/packages/ui-toolkit/package.json +++ b/packages/ui-toolkit/package.json @@ -10,22 +10,16 @@ "lint:css": "echo 0", "lint-ci:css": "echo 0", "lint:js": "eslint . --fix", - "lint-ci:js": - "eslint . --format junit --output-file $CIRCLE_TEST_REPORTS/lint/ui-toolkit.xml", + "lint-ci:js": "eslint . --format junit --output-file $CIRCLE_TEST_REPORTS/lint/ui-toolkit.xml", "lint": "redrun -s lint:*", "lint-ci": "redrun -s lint-ci:*", "test": "echo 0", "test-ci": "echo 0", - "copy-fonts": - "rm -rf dist; mkdir -p dist/es/typography; mkdir -p dist/umd/typography; cp -r src/typography/libre-franklin dist/es/typography; cp -r src/typography/libre-franklin dist/umd/typography", - "compile-watch:es": - "NODE_ENV=development babel src --out-dir dist/es --source-maps inline --watch", - "compile:es": - "NODE_ENV=development babel src --out-dir dist/es --source-maps inline", - "compile:umd": - "cross-env NODE_ENV=test babel src --out-dir dist/umd --source-maps inline", - "compile-watch:umd": - "cross-env NODE_ENV=test babel src --out-dir dist/umd --source-maps inline --watch", + "copy-fonts": "rm -rf dist; mkdir -p dist/es/typography; mkdir -p dist/umd/typography; cp -r src/typography/libre-franklin dist/es/typography; cp -r src/typography/libre-franklin dist/umd/typography", + "compile-watch:es": "NODE_ENV=development babel src --out-dir dist/es --source-maps inline --watch", + "compile:es": "NODE_ENV=development babel src --out-dir dist/es --source-maps inline", + "compile:umd": "cross-env NODE_ENV=test babel src --out-dir dist/umd --source-maps inline", + "compile-watch:umd": "cross-env NODE_ENV=test babel src --out-dir dist/umd --source-maps inline --watch", "compile": "redrun -p compile:*", "watch": "redrun copy-fonts && redrun -p compile-watch:*", "styleguide:build": "cross-env NODE_ENV=production styleguidist build", @@ -64,6 +58,7 @@ "unitcalc": "^1.0.8" }, "devDependencies": { + "babel-plugin-transform-decorators-legacy": "^1.3.4", "csso": "^3.1.1", "eslint": "^4.5.0", "eslint-config-joyent-portal": "2.0.0", @@ -88,8 +83,7 @@ "stylelint": "^8.0.0", "stylelint-config-primer": "^2.0.1", "stylelint-config-standard": "^17.0.0", - "stylelint-processor-styled-components": - "styled-components/stylelint-processor-styled-components#2a33b5f", + "stylelint-processor-styled-components": "styled-components/stylelint-processor-styled-components#2a33b5f", "svgo": "^0.7.2", "tinycolor2": "^1.4.1", "title-case": "^2.1.1", diff --git a/packages/ui-toolkit/src/slider/Readme.md b/packages/ui-toolkit/src/slider/Readme.md index 643f7110..77e344e7 100644 --- a/packages/ui-toolkit/src/slider/Readme.md +++ b/packages/ui-toolkit/src/slider/Readme.md @@ -9,17 +9,4 @@ onChangeComplete={value => console.log(value)} onChange={value => console.log(value)} >vCPUs -``` - -### Normal Slider - -``` - console.log(value)} - onChange={value => console.log(value)} - >Price -``` +``` \ No newline at end of file diff --git a/packages/ui-toolkit/src/slider/index.js b/packages/ui-toolkit/src/slider/index.js index e919f5ef..ca99ccf8 100644 --- a/packages/ui-toolkit/src/slider/index.js +++ b/packages/ui-toolkit/src/slider/index.js @@ -1,57 +1,10 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; -import InputRange from 'react-input-range'; +import InputRange from './react-input-range'; import remcalc from 'remcalc'; -import theme from '../theme'; import FormLabel from '../form/label'; -import { - sliderStyles, - disabledStyles, - trackStyles, - activeStyles, - rangeStyles -} from './inputStyles'; - -const SliderStyled = styled.div` - .input-range { - ${rangeStyles}; - } - - .slider { - ${sliderStyles}; - } - .disabled { - ${disabledStyles}; - } - - .min, - .max { - display: none; - } - - .value { - top: ${remcalc(8)}; - position: absolute; - - .label-container { - font-weight: 600; - font-size: ${remcalc(10)}; - color: ${theme.secondary}; - left: -50%; - position: relative; - } - } - - .track { - ${trackStyles}; - } - - .active-track { - ${activeStyles}; - } -`; const Label = styled(FormLabel)` margin-bottom: ${remcalc(10)}; @@ -79,7 +32,7 @@ class Slider extends Component { const { minValue, maxValue, value } = this.state; const { children, ...rest } = this.props; return ( - +
this.changeValue(value)} /> - +
); } } @@ -103,18 +56,6 @@ Slider.propTypes = { formatLabel: PropTypes.func, ariaLabelledby: PropTypes.string, ariaControls: PropTypes.string, - classNames: PropTypes.shape({ - activeTrack: PropTypes.string, - disabledInputRange: PropTypes.string, - inputRange: PropTypes.string, - labelContainer: PropTypes.string, - maxLabel: PropTypes.string, - minLabel: PropTypes.string, - slider: PropTypes.string, - sliderContainer: PropTypes.string, - track: PropTypes.string, - valueLabel: PropTypes.string - }), disabled: PropTypes.bool, draggableTrack: PropTypes.bool, onChangeStart: PropTypes.func, @@ -129,19 +70,7 @@ Slider.defaultProps = { ? Math.round(value).toFixed(3) : value, onChangeStart: () => {}, - step: 1, - classNames: { - activeTrack: 'active-track', - disabledInputRange: 'disabled-range', - inputRange: 'input-range', - labelContainer: 'label-container', - maxLabel: 'max', - minLabel: 'min', - sliderContainer: 'slider-container', - track: 'track', - valueLabel: 'value', - slider: 'slider' - } + step: 1 }; export default Slider; diff --git a/packages/ui-toolkit/src/slider/inputStyles.js b/packages/ui-toolkit/src/slider/inputStyles.js deleted file mode 100644 index 32c4a553..00000000 --- a/packages/ui-toolkit/src/slider/inputStyles.js +++ /dev/null @@ -1,61 +0,0 @@ -import { css } from 'styled-components'; -import remcalc from 'remcalc'; - -import theme from '../theme'; - -export const sliderStyles = css` - appearance: none; - background: ${theme.white}; - border: 2px solid ${theme.greyLight}; - border-radius: 50%; - cursor: pointer; - display: block; - height: ${remcalc(14)}; - width: ${remcalc(14)}; - transform: translateY(-50%) translateX(-50%); - outline: none; - position: absolute; - top: 50%; - margin-top: ${remcalc(2)}; - - &::active { - transform: scale(1.3); - } - - &::focus { - box-shadow: 0 0 0 5px rgba(63, 81, 181, 0.2); - } -`; - -export const disabledStyles = css` - .track { - background: ${theme.grey}; - } - .slider { - background: ${theme.greyDark}; - border: 1px solid ${theme.greyDark}; - box-shadow: none; - transform: none; - } -`; - -export const trackStyles = css` - background: ${theme.grey}; - cursor: pointer; - display: block; - height: ${remcalc(4)}; - position: relative; -`; - -export const activeStyles = css` - background: ${theme.blue}; - height: 100%; - position: absolute; -`; - -export const rangeStyles = css` - position: relative; - width: calc(100% - 18px); - margin: auto; - min-height: ${remcalc(10)}; -`; diff --git a/packages/ui-toolkit/src/slider/react-input-range/index.js b/packages/ui-toolkit/src/slider/react-input-range/index.js new file mode 100755 index 00000000..1984ea4c --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/index.js @@ -0,0 +1,3 @@ +import InputRange from './input-range/input-range'; + +export default InputRange; diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/input-range.jsx b/packages/ui-toolkit/src/slider/react-input-range/input-range/input-range.jsx new file mode 100755 index 00000000..924a0b06 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/input-range.jsx @@ -0,0 +1,725 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import * as valueTransformer from './value-transformer'; +import rangePropType from './range-prop-type'; +import valuePropType from './value-prop-type'; +import Slider from './slider'; +import Track from './track'; +import { captialize, distanceTo, isDefined, isObject, length } from '../utils'; +import styled from 'styled-components'; +import remcalc from 'remcalc'; + +export const RangeStyled = styled.div` + position: relative; + min-height: ${remcalc(10)}; +`; + +/** + * A React component that allows users to input numeric values within a range + * by dragging its sliders. + */ +export default class InputRange extends Component { + /** + * @ignore + * @override + * @return {Object} + */ + static get propTypes() { + return { + ariaLabelledby: PropTypes.string, + ariaControls: PropTypes.string, + classNames: PropTypes.objectOf(PropTypes.string), + disabled: PropTypes.bool, + draggableTrack: PropTypes.bool, + formatLabel: PropTypes.func, + maxValue: rangePropType, + minValue: rangePropType, + name: PropTypes.string, + onChangeStart: PropTypes.func, + onChange: PropTypes.func.isRequired, + onChangeComplete: PropTypes.func, + step: PropTypes.number, + value: valuePropType + }; + } + + /** + * @ignore + * @override + * @return {Object} + */ + static get defaultProps() { + return { + disabled: false, + maxValue: 10, + minValue: 0, + step: 1 + }; + } + + /** + * @param {Object} props + * @param {string} [props.ariaLabelledby] + * @param {string} [props.ariaControls] + * @param {InputRangeClassNames} [props.classNames] + * @param {boolean} [props.disabled = false] + * @param {Function} [props.formatLabel] + * @param {number|Range} [props.maxValue = 10] + * @param {number|Range} [props.minValue = 0] + * @param {string} [props.name] + * @param {string} props.onChange + * @param {Function} [props.onChangeComplete] + * @param {Function} [props.onChangeStart] + * @param {number} [props.step = 1] + * @param {number|Range} props.value + */ + constructor(props) { + super(props); + + /** + * @private + * @type {?number} + */ + this.startValue = null; + + /** + * @private + * @type {?Component} + */ + this.node = null; + + /** + * @private + * @type {?Component} + */ + this.trackNode = null; + + /** + * @private + * @type {bool} + */ + this.isSliderDragging = false; + + this.handleSliderDrag = this.handleSliderDrag.bind(this); + this.handleTrackDrag = this.handleTrackDrag.bind(this); + this.handleTrackMouseDown = this.handleTrackMouseDown.bind(this); + this.handleInteractionStart = this.handleInteractionStart.bind(this); + this.handleInteractionEnd = this.handleInteractionEnd.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); + this.handleMouseDown = this.handleMouseDown.bind(this); + this.handleMouseUp = this.handleMouseUp.bind(this); + this.handleKeyUp = this.handleKeyUp.bind(this); + this.handleTouchStart = this.handleTouchStart.bind(this); + this.handleTouchEnd = this.handleTouchEnd.bind(this); + } + + /** + * @ignore + * @override + * @return {void} + */ + componentWillUnmount() { + this.removeDocumentMouseUpListener(); + this.removeDocumentTouchEndListener(); + } + + /** + * Return the bounding rect of the track + * @private + * @return {ClientRect} + */ + getTrackClientRect() { + return this.trackNode.getClientRect(); + } + + /** + * Return the slider key closest to a point + * @private + * @param {Point} position + * @return {string} + */ + getKeyByPosition(position) { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + const positions = valueTransformer.getPositionsFromValues( + values, + this.props.minValue, + this.props.maxValue, + this.getTrackClientRect() + ); + + if (this.isMultiValue()) { + const distanceToMin = distanceTo(position, positions.min); + const distanceToMax = distanceTo(position, positions.max); + + if (distanceToMin < distanceToMax) { + return 'min'; + } + } + + return 'max'; + } + + /** + * Return all the slider keys + * @private + * @return {string[]} + */ + getKeys() { + if (this.isMultiValue()) { + return ['min', 'max']; + } + + return ['max']; + } + + /** + * Return true if the difference between the new and the current value is + * greater or equal to the step amount of the component + * @private + * @param {Range} values + * @return {boolean} + */ + hasStepDifference(values) { + const currentValues = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + + return ( + length(values.min, currentValues.min) >= this.props.step || + length(values.max, currentValues.max) >= this.props.step + ); + } + + /** + * Return true if the component accepts a min and max value + * @private + * @return {boolean} + */ + isMultiValue() { + return isObject(this.props.value); + } + + /** + * Return true if the range is within the max and min value of the component + * @private + * @param {Range} values + * @return {boolean} + */ + isWithinRange(values) { + if (this.isMultiValue()) { + return ( + values.min >= this.props.minValue && + values.max <= this.props.maxValue && + values.min < values.max + ); + } + + return ( + values.max >= this.props.minValue && values.max <= this.props.maxValue + ); + } + + /** + * Return true if the new value should trigger a render + * @private + * @param {Range} values + * @return {boolean} + */ + shouldUpdate(values) { + return this.isWithinRange(values) && this.hasStepDifference(values); + } + + /** + * Update the position of a slider + * @private + * @param {string} key + * @param {Point} position + * @return {void} + */ + updatePosition(key, position) { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + const positions = valueTransformer.getPositionsFromValues( + values, + this.props.minValue, + this.props.maxValue, + this.getTrackClientRect() + ); + + positions[key] = position; + + this.updatePositions(positions); + } + + /** + * Update the positions of multiple sliders + * @private + * @param {Object} positions + * @param {Point} positions.min + * @param {Point} positions.max + * @return {void} + */ + updatePositions(positions) { + const values = { + min: valueTransformer.getValueFromPosition( + positions.min, + this.props.minValue, + this.props.maxValue, + this.getTrackClientRect() + ), + max: valueTransformer.getValueFromPosition( + positions.max, + this.props.minValue, + this.props.maxValue, + this.getTrackClientRect() + ) + }; + + const transformedValues = { + min: valueTransformer.getStepValueFromValue(values.min, this.props.step), + max: valueTransformer.getStepValueFromValue(values.max, this.props.step) + }; + + this.updateValues(transformedValues); + } + + /** + * Update the value of a slider + * @private + * @param {string} key + * @param {number} value + * @return {void} + */ + updateValue(key, value) { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + + values[key] = value; + + this.updateValues(values); + } + + /** + * Update the values of multiple sliders + * @private + * @param {Range|number} values + * @return {void} + */ + updateValues(values) { + if (!this.shouldUpdate(values)) { + return; + } + + this.props.onChange(this.isMultiValue() ? values : values.max); + } + + /** + * Increment the value of a slider by key name + * @private + * @param {string} key + * @return {void} + */ + incrementValue(key) { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + const value = values[key] + this.props.step; + + this.updateValue(key, value); + } + + /** + * Decrement the value of a slider by key name + * @private + * @param {string} key + * @return {void} + */ + decrementValue(key) { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + const value = values[key] - this.props.step; + + this.updateValue(key, value); + } + + /** + * Listen to mouseup event + * @private + * @return {void} + */ + addDocumentMouseUpListener() { + this.removeDocumentMouseUpListener(); + this.node.ownerDocument.addEventListener('mouseup', this.handleMouseUp); + } + + /** + * Listen to touchend event + * @private + * @return {void} + */ + addDocumentTouchEndListener() { + this.removeDocumentTouchEndListener(); + this.node.ownerDocument.addEventListener('touchend', this.handleTouchEnd); + } + + /** + * Stop listening to mouseup event + * @private + * @return {void} + */ + removeDocumentMouseUpListener() { + this.node.ownerDocument.removeEventListener('mouseup', this.handleMouseUp); + } + + /** + * Stop listening to touchend event + * @private + * @return {void} + */ + removeDocumentTouchEndListener() { + this.node.ownerDocument.removeEventListener( + 'touchend', + this.handleTouchEnd + ); + } + + /** + * Handle any "mousemove" event received by the slider + * @private + * @param {SyntheticEvent} event + * @param {string} key + * @return {void} + */ + handleSliderDrag(event, key) { + if (this.props.disabled) { + return; + } + + const position = valueTransformer.getPositionFromEvent( + event, + this.getTrackClientRect() + ); + this.isSliderDragging = true; + requestAnimationFrame(() => this.updatePosition(key, position)); + } + + /** + * Handle any "mousemove" event received by the track + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + handleTrackDrag(event, prevEvent) { + if ( + this.props.disabled || + !this.props.draggableTrack || + this.isSliderDragging + ) { + return; + } + + const { maxValue, minValue, value: { max, min } } = this.props; + + const position = valueTransformer.getPositionFromEvent( + event, + this.getTrackClientRect() + ); + const value = valueTransformer.getValueFromPosition( + position, + minValue, + maxValue, + this.getTrackClientRect() + ); + const stepValue = valueTransformer.getStepValueFromValue( + value, + this.props.step + ); + + const prevPosition = valueTransformer.getPositionFromEvent( + prevEvent, + this.getTrackClientRect() + ); + const prevValue = valueTransformer.getValueFromPosition( + prevPosition, + minValue, + maxValue, + this.getTrackClientRect() + ); + const prevStepValue = valueTransformer.getStepValueFromValue( + prevValue, + this.props.step + ); + + const offset = prevStepValue - stepValue; + + const transformedValues = { + min: min - offset, + max: max - offset + }; + + this.updateValues(transformedValues); + } + + /** + * Handle any "mousedown" event received by the track + * @private + * @param {SyntheticEvent} event + * @param {Point} position + * @return {void} + */ + + handleTrackMouseDown(event, position) { + if (this.props.disabled) { + return; + } + + const { maxValue, minValue, value: { max, min } } = this.props; + + event.preventDefault(); + + const value = valueTransformer.getValueFromPosition( + position, + minValue, + maxValue, + this.getTrackClientRect() + ); + const stepValue = valueTransformer.getStepValueFromValue( + value, + this.props.step + ); + + if (!this.props.draggableTrack || stepValue > max || stepValue < min) { + this.updatePosition(this.getKeyByPosition(position), position); + } + } + + /** + * Handle the start of any mouse/touch event + * @private + * @return {void} + */ + + handleInteractionStart() { + if (this.props.onChangeStart) { + this.props.onChangeStart(this.props.value); + } + + if (this.props.onChangeComplete && !isDefined(this.startValue)) { + this.startValue = this.props.value; + } + } + + /** + * Handle the end of any mouse/touch event + * @private + * @return {void} + */ + handleInteractionEnd() { + if (this.isSliderDragging) { + this.isSliderDragging = false; + } + + if (!this.props.onChangeComplete || !isDefined(this.startValue)) { + return; + } + + if (this.startValue !== this.props.value) { + this.props.onChangeComplete(this.props.value); + } + + this.startValue = null; + } + + /** + * Handle any "keydown" event received by the component + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + + handleKeyDown(event) { + this.handleInteractionStart(event); + } + + /** + * Handle any "keyup" event received by the component + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + handleKeyUp(event) { + this.handleInteractionEnd(event); + } + + /** + * Handle any "mousedown" event received by the component + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + + handleMouseDown(event) { + this.handleInteractionStart(event); + this.addDocumentMouseUpListener(); + } + + /** + * Handle any "mouseup" event received by the component + * @private + * @param {SyntheticEvent} event + */ + + handleMouseUp(event) { + this.handleInteractionEnd(event); + this.removeDocumentMouseUpListener(); + } + + /** + * Handle any "touchstart" event received by the component + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + + handleTouchStart(event) { + this.handleInteractionStart(event); + this.addDocumentTouchEndListener(); + } + + /** + * Handle any "touchend" event received by the component + * @private + * @param {SyntheticEvent} event + */ + handleTouchEnd(event) { + this.handleInteractionEnd(event); + this.removeDocumentTouchEndListener(); + } + + /** + * Return JSX of sliders + * @private + * @return {JSX.Element} + */ + renderSliders() { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + const percentages = valueTransformer.getPercentagesFromValues( + values, + this.props.minValue, + this.props.maxValue + ); + + return this.getKeys().map(key => { + const value = values[key]; + const percentage = percentages[key]; + + let { maxValue, minValue } = this.props; + + if (key === 'min') { + maxValue = values.max; + } else { + minValue = values.min; + } + + const slider = ( + + ); + + return slider; + }); + } + + /** + * Return JSX of hidden inputs + * @private + * @return {JSX.Element} + */ + renderHiddenInputs() { + if (!this.props.name) { + return []; + } + + const isMultiValue = this.isMultiValue(); + const values = valueTransformer.getValueFromProps(this.props, isMultiValue); + + return this.getKeys().map(key => { + const value = values[key]; + const name = isMultiValue + ? `${this.props.name}${captialize(key)}` + : this.props.name; + + return ; + }); + } + + /** + * @ignore + * @override + * @return {JSX.Element} + */ + render() { + const values = valueTransformer.getValueFromProps( + this.props, + this.isMultiValue() + ); + const percentages = valueTransformer.getPercentagesFromValues( + values, + this.props.minValue, + this.props.maxValue + ); + + return ( + { + this.node = node; + }} + onKeyDown={this.handleKeyDown} + onKeyUp={this.handleKeyUp} + onMouseDown={this.handleMouseDown} + onTouchStart={this.handleTouchStart} + > + { + this.trackNode = trackNode; + }} + percentages={percentages} + onTrackDrag={this.handleTrackDrag} + onTrackMouseDown={this.handleTrackMouseDown} + > + {this.renderSliders()} + + + {this.renderHiddenInputs()} + + ); + } +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/label.jsx b/packages/ui-toolkit/src/slider/react-input-range/input-range/label.jsx new file mode 100755 index 00000000..a7f350da --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/label.jsx @@ -0,0 +1,44 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styled from 'styled-components'; +import remcalc from 'remcalc'; + +import theme from '../../../theme'; + +const Span = styled.span` + font-weight: 600; + font-size: ${remcalc(10)}; + color: ${theme.secondary}; + position: absolute; + top: ${remcalc(8)}; + right: ${props => (props.type === 'max' ? '1px' : 'auto')}; +`; + +/** + * @ignore + * @param {Object} props + * @param {InputRangeClassNames} props.classNames + * @param {Function} props.formatLabel + * @param {string} props.type + */ +export default function Label(props) { + const labelValue = props.formatLabel + ? props.formatLabel(props.children, props.type) + : props.children; + + return {labelValue}; +} + +/** + * @type {Object} + * @property {Function} children + * @property {Function} classNames + * @property {Function} formatLabel + * @property {Function} type + */ +Label.propTypes = { + children: PropTypes.node.isRequired, + classNames: PropTypes.objectOf(PropTypes.string).isRequired, + formatLabel: PropTypes.func, + type: PropTypes.string.isRequired +}; diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/range-prop-type.js b/packages/ui-toolkit/src/slider/react-input-range/input-range/range-prop-type.js new file mode 100755 index 00000000..27cf7182 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/range-prop-type.js @@ -0,0 +1,18 @@ +import { isNumber } from '../utils'; + +/** + * @ignore + * @param {Object} props - React component props + * @return {?Error} Return Error if validation fails + */ +export default function rangePropType(props) { + const { maxValue, minValue } = props; + + if (!isNumber(minValue) || !isNumber(maxValue)) { + return new Error('"minValue" and "maxValue" must be a number'); + } + + if (minValue >= maxValue) { + return new Error('"minValue" must be smaller than "maxValue"'); + } +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/slider.jsx b/packages/ui-toolkit/src/slider/react-input-range/input-range/slider.jsx new file mode 100755 index 00000000..df3b68fc --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/slider.jsx @@ -0,0 +1,309 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import Label from './label'; + +import styled from 'styled-components'; +import remcalc from 'remcalc'; +import theme from '../../../theme'; + +export const SliderStyled = styled.div` + appearance: none; + background: ${theme.white}; + border: 2px solid ${theme.greyLight}; + border-radius: 50%; + cursor: pointer; + display: block; + height: ${remcalc(14)}; + width: ${remcalc(14)}; + transform: ${props => + props.type === 'max' + ? 'translateY(-50%) translateX(-99%)' + : 'translateY(-50%) translateX(-1%)'}; + outline: none; + position: absolute; + top: 0; + margin-top: ${remcalc(2)}; + + &::active { + transform: scale(1.3); + } + + &::focus { + box-shadow: 0 0 0 5px rgba(63, 81, 181, 0.2); + } +`; + +/** + * @ignore + */ +export default class Slider extends Component { + /** + * Accepted propTypes of Slider + * @override + * @return {Object} + * @property {Function} ariaLabelledby + * @property {Function} ariaControls + * @property {Function} className + * @property {Function} formatLabel + * @property {Function} maxValue + * @property {Function} minValue + * @property {Function} onSliderDrag + * @property {Function} onSliderKeyDown + * @property {Function} percentage + * @property {Function} type + * @property {Function} value + */ + static get propTypes() { + return { + ariaLabelledby: PropTypes.string, + ariaControls: PropTypes.string, + classNames: PropTypes.objectOf(PropTypes.string).isRequired, + formatLabel: PropTypes.func, + maxValue: PropTypes.number, + minValue: PropTypes.number, + onSliderDrag: PropTypes.func.isRequired, + onSliderKeyDown: PropTypes.func.isRequired, + percentage: PropTypes.number.isRequired, + type: PropTypes.string.isRequired, + value: PropTypes.number.isRequired + }; + } + + /** + * @param {Object} props + * @param {string} [props.ariaLabelledby] + * @param {string} [props.ariaControls] + * @param {InputRangeClassNames} props.classNames + * @param {Function} [props.formatLabel] + * @param {number} [props.maxValue] + * @param {number} [props.minValue] + * @param {Function} props.onSliderKeyDown + * @param {Function} props.onSliderDrag + * @param {number} props.percentage + * @param {number} props.type + * @param {number} props.value + */ + constructor(props) { + super(props); + + /** + * @private + * @type {?Component} + */ + this.node = null; + + this.handleMouseDown = this.handleMouseDown.bind(this); + this.handleMouseUp = this.handleMouseUp.bind(this); + this.handleMouseMove = this.handleMouseMove.bind(this); + this.handleTouchStart = this.handleTouchStart.bind(this); + this.handleTouchMove = this.handleTouchMove.bind(this); + this.handleTouchEnd = this.handleTouchEnd.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); + } + + /** + * @ignore + * @override + * @return {void} + */ + componentWillUnmount() { + this.removeDocumentMouseMoveListener(); + this.removeDocumentMouseUpListener(); + this.removeDocumentTouchEndListener(); + this.removeDocumentTouchMoveListener(); + } + + /** + * @private + * @return {Object} + */ + getStyle() { + const perc = (this.props.percentage || 0) * 100; + const style = { + position: 'absolute', + left: `${perc}%` + }; + + return style; + } + + /** + * Listen to mousemove event + * @private + * @return {void} + */ + addDocumentMouseMoveListener() { + this.removeDocumentMouseMoveListener(); + this.node.ownerDocument.addEventListener('mousemove', this.handleMouseMove); + } + + /** + * Listen to mouseup event + * @private + * @return {void} + */ + addDocumentMouseUpListener() { + this.removeDocumentMouseUpListener(); + this.node.ownerDocument.addEventListener('mouseup', this.handleMouseUp); + } + + /** + * Listen to touchmove event + * @private + * @return {void} + */ + addDocumentTouchMoveListener() { + this.removeDocumentTouchMoveListener(); + this.node.ownerDocument.addEventListener('touchmove', this.handleTouchMove); + } + + /** + * Listen to touchend event + * @private + * @return {void} + */ + addDocumentTouchEndListener() { + this.removeDocumentTouchEndListener(); + this.node.ownerDocument.addEventListener('touchend', this.handleTouchEnd); + } + + /** + * @private + * @return {void} + */ + removeDocumentMouseMoveListener() { + this.node.ownerDocument.removeEventListener( + 'mousemove', + this.handleMouseMove + ); + } + + /** + * @private + * @return {void} + */ + removeDocumentMouseUpListener() { + this.node.ownerDocument.removeEventListener('mouseup', this.handleMouseUp); + } + + /** + * @private + * @return {void} + */ + removeDocumentTouchMoveListener() { + this.node.ownerDocument.removeEventListener( + 'touchmove', + this.handleTouchMove + ); + } + + /** + * @private + * @return {void} + */ + removeDocumentTouchEndListener() { + this.node.ownerDocument.removeEventListener( + 'touchend', + this.handleTouchEnd + ); + } + + /** + * @private + * @return {void} + */ + handleMouseDown() { + this.addDocumentMouseMoveListener(); + this.addDocumentMouseUpListener(); + } + + /** + * @private + * @return {void} + */ + handleMouseUp() { + this.removeDocumentMouseMoveListener(); + this.removeDocumentMouseUpListener(); + } + + /** + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + handleMouseMove(event) { + this.props.onSliderDrag(event, this.props.type); + } + + /** + * @private + * @return {void} + */ + handleTouchStart() { + this.addDocumentTouchEndListener(); + this.addDocumentTouchMoveListener(); + } + + /** + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + handleTouchMove(event) { + this.props.onSliderDrag(event, this.props.type); + } + + /** + * @private + * @return {void} + */ + handleTouchEnd() { + this.removeDocumentTouchMoveListener(); + this.removeDocumentTouchEndListener(); + } + + /** + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + handleKeyDown(event) { + this.props.onSliderKeyDown(event, this.props.type); + } + + /** + * @override + * @return {JSX.Element} + */ + render() { + const style = this.getStyle(); + const props = this.props; + + return ( + { + this.node = node; + }} + > + + + + ); + } +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/track.jsx b/packages/ui-toolkit/src/slider/react-input-range/input-range/track.jsx new file mode 100755 index 00000000..7885a262 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/track.jsx @@ -0,0 +1,210 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import styled from 'styled-components'; +import remcalc from 'remcalc'; +import theme from '../../../theme'; + +export const TrackStyled = styled.div` + background: ${theme.grey}; + cursor: pointer; + display: block; + height: ${remcalc(4)}; + position: relative; +`; + +const ActiveTrack = styled.div` + background: ${theme.blue}; + height: 100%; + position: absolute; +`; + +/** + * @ignore + */ +export default class Track extends Component { + /** + * @override + * @return {Object} + * @property {Function} children + * @property {Function} classNames + * @property {Boolean} draggableTrack + * @property {Function} onTrackDrag + * @property {Function} onTrackMouseDown + * @property {Function} percentages + */ + static get propTypes() { + return { + children: PropTypes.node.isRequired, + classNames: PropTypes.objectOf(PropTypes.string).isRequired, + draggableTrack: PropTypes.bool, + onTrackDrag: PropTypes.func, + onTrackMouseDown: PropTypes.func.isRequired, + percentages: PropTypes.objectOf(PropTypes.number).isRequired + }; + } + + /** + * @param {Object} props + * @param {InputRangeClassNames} props.classNames + * @param {Boolean} props.draggableTrack + * @param {Function} props.onTrackDrag + * @param {Function} props.onTrackMouseDown + * @param {number} props.percentages + */ + constructor(props) { + super(props); + + /** + * @private + * @type {?Component} + */ + this.node = null; + this.trackDragEvent = null; + + this.handleMouseMove = this.handleMouseMove.bind(this); + this.handleMouseUp = this.handleMouseUp.bind(this); + this.handleMouseDown = this.handleMouseDown.bind(this); + this.handleTouchStart = this.handleTouchStart.bind(this); + } + + /** + * @private + * @return {ClientRect} + */ + getClientRect() { + return this.node.getBoundingClientRect(); + } + + /** + * @private + * @return {Object} CSS styles + */ + getActiveTrackStyle() { + const width = `${(this.props.percentages.max - this.props.percentages.min) * + 100}%`; + const left = `${this.props.percentages.min * 100}%`; + + return { left, width }; + } + + /** + * Listen to mousemove event + * @private + * @return {void} + */ + addDocumentMouseMoveListener() { + this.removeDocumentMouseMoveListener(); + this.node.ownerDocument.addEventListener('mousemove', this.handleMouseMove); + } + + /** + * Listen to mouseup event + * @private + * @return {void} + */ + addDocumentMouseUpListener() { + this.removeDocumentMouseUpListener(); + this.node.ownerDocument.addEventListener('mouseup', this.handleMouseUp); + } + + /** + * @private + * @return {void} + */ + removeDocumentMouseMoveListener() { + this.node.ownerDocument.removeEventListener( + 'mousemove', + this.handleMouseMove + ); + } + + /** + * @private + * @return {void} + */ + removeDocumentMouseUpListener() { + this.node.ownerDocument.removeEventListener('mouseup', this.handleMouseUp); + } + + /** + * @private + * @param {SyntheticEvent} event + * @return {void} + */ + handleMouseMove(event) { + if (!this.props.draggableTrack) { + return; + } + + if (this.trackDragEvent !== null) { + this.props.onTrackDrag(event, this.trackDragEvent); + } + + this.trackDragEvent = event; + } + + /** + * @private + * @return {void} + */ + handleMouseUp() { + if (!this.props.draggableTrack) { + return; + } + + this.removeDocumentMouseMoveListener(); + this.removeDocumentMouseUpListener(); + this.trackDragEvent = null; + } + + /** + * @private + * @param {SyntheticEvent} event - User event + */ + handleMouseDown(event) { + const clientX = event.touches ? event.touches[0].clientX : event.clientX; + const trackClientRect = this.getClientRect(); + const position = { + x: clientX - trackClientRect.left, + y: 0 + }; + + this.props.onTrackMouseDown(event, position); + + if (this.props.draggableTrack) { + this.addDocumentMouseMoveListener(); + this.addDocumentMouseUpListener(); + } + } + + /** + * @private + * @param {SyntheticEvent} event - User event + */ + handleTouchStart(event) { + event.preventDefault(); + + this.handleMouseDown(event); + } + + /** + * @override + * @return {JSX.Element} + */ + render() { + const activeTrackStyle = this.getActiveTrackStyle(); + + return ( + { + this.node = node; + }} + > + + {this.props.children} + + ); + } +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/value-prop-type.js b/packages/ui-toolkit/src/slider/react-input-range/input-range/value-prop-type.js new file mode 100755 index 00000000..5df1893c --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/value-prop-type.js @@ -0,0 +1,23 @@ +import { isNumber, isObject } from '../utils'; + +/** + * @ignore + * @param {Object} props + * @return {?Error} Return Error if validation fails + */ +export default function valuePropType(props, propName) { + const { maxValue, minValue } = props; + const value = props[propName]; + + if (!isNumber(value) && (!isObject(value) || !isNumber(value.min) || !isNumber(value.max))) { + return new Error(`"${propName}" must be a number or a range object`); + } + + if (isNumber(value) && (value < minValue || value > maxValue)) { + return new Error(`"${propName}" must be in between "minValue" and "maxValue"`); + } + + if (isObject(value) && (value.min < minValue || value.min > maxValue || value.max < minValue || value.max > maxValue)) { + return new Error(`"${propName}" must be in between "minValue" and "maxValue"`); + } +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/input-range/value-transformer.js b/packages/ui-toolkit/src/slider/react-input-range/input-range/value-transformer.js new file mode 100755 index 00000000..96d9ed65 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/input-range/value-transformer.js @@ -0,0 +1,144 @@ +import { clamp } from '../utils'; + +/** + * Convert a point into a percentage value + * @ignore + * @param {Point} position + * @param {ClientRect} clientRect + * @return {number} Percentage value + */ +export function getPercentageFromPosition(position, clientRect) { + const length = clientRect.width; + const sizePerc = position.x / length; + + return sizePerc || 0; +} + +/** + * Convert a point into a model value + * @ignore + * @param {Point} position + * @param {number} minValue + * @param {number} maxValue + * @param {ClientRect} clientRect + * @return {number} + */ +export function getValueFromPosition(position, minValue, maxValue, clientRect) { + const sizePerc = getPercentageFromPosition(position, clientRect); + const valueDiff = maxValue - minValue; + + return minValue + (valueDiff * sizePerc); +} + +/** + * Convert props into a range value + * @ignore + * @param {Object} props + * @param {boolean} isMultiValue + * @return {Range} + */ +export function getValueFromProps(props, isMultiValue) { + if (isMultiValue) { + return { ...props.value }; + } + + return { + min: props.minValue, + max: props.value, + }; +} + +/** + * Convert a model value into a percentage value + * @ignore + * @param {number} value + * @param {number} minValue + * @param {number} maxValue + * @return {number} + */ +export function getPercentageFromValue(value, minValue, maxValue) { + const validValue = clamp(value, minValue, maxValue); + const valueDiff = maxValue - minValue; + const valuePerc = (validValue - minValue) / valueDiff; + + return valuePerc || 0; +} + +/** + * Convert model values into percentage values + * @ignore + * @param {Range} values + * @param {number} minValue + * @param {number} maxValue + * @return {Range} + */ +export function getPercentagesFromValues(values, minValue, maxValue) { + return { + min: getPercentageFromValue(values.min, minValue, maxValue), + max: getPercentageFromValue(values.max, minValue, maxValue), + }; +} + +/** + * Convert a value into a point + * @ignore + * @param {number} value + * @param {number} minValue + * @param {number} maxValue + * @param {ClientRect} clientRect + * @return {Point} Position + */ +export function getPositionFromValue(value, minValue, maxValue, clientRect) { + const length = clientRect.width; + const valuePerc = getPercentageFromValue(value, minValue, maxValue); + const positionValue = valuePerc * length; + + return { + x: positionValue, + y: 0, + }; +} + +/** + * Convert a range of values into points + * @ignore + * @param {Range} values + * @param {number} minValue + * @param {number} maxValue + * @param {ClientRect} clientRect + * @return {Range} + */ +export function getPositionsFromValues(values, minValue, maxValue, clientRect) { + return { + min: getPositionFromValue(values.min, minValue, maxValue, clientRect), + max: getPositionFromValue(values.max, minValue, maxValue, clientRect), + }; +} + +/** + * Convert an event into a point + * @ignore + * @param {Event} event + * @param {ClientRect} clientRect + * @return {Point} + */ +export function getPositionFromEvent(event, clientRect) { + const length = clientRect.width; + const { clientX } = event.touches ? event.touches[0] : event; + + return { + x: clamp(clientX - clientRect.left, 0, length), + y: 0, + }; +} + +/** + * Convert a value into a step value + * @ignore + * @param {number} value + * @param {number} valuePerStep + * @return {number} + */ +export function getStepValueFromValue(value, valuePerStep) { + return Math.round(value / valuePerStep) * valuePerStep; +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/captialize.js b/packages/ui-toolkit/src/slider/react-input-range/utils/captialize.js new file mode 100755 index 00000000..4955b511 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/captialize.js @@ -0,0 +1,9 @@ +/** + * Captialize a string + * @ignore + * @param {string} string + * @return {string} + */ +export default function captialize(string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/clamp.js b/packages/ui-toolkit/src/slider/react-input-range/utils/clamp.js new file mode 100755 index 00000000..f06fc27d --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/clamp.js @@ -0,0 +1,11 @@ +/** + * Clamp a value between a min and max value + * @ignore + * @param {number} value + * @param {number} min + * @param {number} max + * @return {number} + */ +export default function clamp(value, min, max) { + return Math.min(Math.max(value, min), max); +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/distance-to.js b/packages/ui-toolkit/src/slider/react-input-range/utils/distance-to.js new file mode 100755 index 00000000..f9502af2 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/distance-to.js @@ -0,0 +1,13 @@ +/** + * Calculate the distance between pointA and pointB + * @ignore + * @param {Point} pointA + * @param {Point} pointB + * @return {number} Distance + */ +export default function distanceTo(pointA, pointB) { + const xDiff = (pointB.x - pointA.x) ** 2; + const yDiff = (pointB.y - pointA.y) ** 2; + + return Math.sqrt(xDiff + yDiff); +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/index.js b/packages/ui-toolkit/src/slider/react-input-range/utils/index.js new file mode 100755 index 00000000..ea457cdd --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/index.js @@ -0,0 +1,7 @@ +export { default as captialize } from './captialize'; +export { default as clamp } from './clamp'; +export { default as distanceTo } from './distance-to'; +export { default as isDefined } from './is-defined'; +export { default as isNumber } from './is-number'; +export { default as isObject } from './is-object'; +export { default as length } from './length'; diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/is-defined.js b/packages/ui-toolkit/src/slider/react-input-range/utils/is-defined.js new file mode 100755 index 00000000..d03be870 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/is-defined.js @@ -0,0 +1,9 @@ +/** + * Check if a value is defined + * @ignore + * @param {*} value + * @return {boolean} + */ +export default function isDefined(value) { + return value !== undefined && value !== null; +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/is-number.js b/packages/ui-toolkit/src/slider/react-input-range/utils/is-number.js new file mode 100755 index 00000000..a61d272f --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/is-number.js @@ -0,0 +1,9 @@ +/** + * Check if a value is a number + * @ignore + * @param {*} value + * @return {boolean} + */ +export default function isNumber(value) { + return typeof value === 'number'; +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/is-object.js b/packages/ui-toolkit/src/slider/react-input-range/utils/is-object.js new file mode 100755 index 00000000..f07e48aa --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/is-object.js @@ -0,0 +1,9 @@ +/** + * Check if a value is an object + * @ignore + * @param {*} value + * @return {boolean} + */ +export default function isObject(value) { + return value !== null && typeof value === 'object'; +} diff --git a/packages/ui-toolkit/src/slider/react-input-range/utils/length.js b/packages/ui-toolkit/src/slider/react-input-range/utils/length.js new file mode 100755 index 00000000..9a6c9645 --- /dev/null +++ b/packages/ui-toolkit/src/slider/react-input-range/utils/length.js @@ -0,0 +1,10 @@ +/** + * Calculate the absolute difference between two numbers + * @ignore + * @param {number} numA + * @param {number} numB + * @return {number} + */ +export default function length(numA, numB) { + return Math.abs(numA - numB); +} diff --git a/yarn.lock b/yarn.lock index 1d49e293..3b828be8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,13 +108,6 @@ version "0.10.2" resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.10.2.tgz#d7c79acbaa17453b6681c80c34b38fcb10c4c08c" -JSONStream@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0" - dependencies: - jsonparse "0.0.5" - through ">=2.2.7 <3" - JSONStream@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.8.4.tgz#91657dfe6ff857483066132b4618b62e8f4887bd" @@ -137,13 +130,6 @@ abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -accept@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.4.tgz#887af54ceee5c7f4430461971ec400c61d09acbb" - dependencies: - boom "5.x.x" - hoek "4.x.x" - accepts@^1.3.0, accepts@~1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" @@ -257,13 +243,6 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -ammo@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.4.tgz#bf80aab211698ea78f63ef5e7f113dd5d9e8917f" - dependencies: - boom "5.x.x" - hoek "4.x.x" - anser@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.1.tgz#c3641863a962cebef941ea2c8706f2cb4f0716bd" @@ -337,7 +316,7 @@ anymatch@^1.3.0: micromatch "^2.1.5" normalize-path "^2.0.0" -apollo-client@^1.4.0, apollo-client@^1.9.2: +apollo-client@^1.4.0: version "1.9.2" resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-1.9.2.tgz#a95b38ca846e881bba1b59b0e3fbf82abfd7f23d" dependencies: @@ -359,10 +338,6 @@ apollo-link-core@^0.5.0: graphql-tag "^2.4.2" zen-observable-ts "^0.4.4" -apollo-server-module-graphiql@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.1.2.tgz#49a154cf80e984acb082bd0096175b561e1bfbcc" - apollo@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/apollo/-/apollo-0.2.2.tgz#e409f53765bbf98efa3d127a2789c63bccd025d6" @@ -834,10 +809,6 @@ axobject-query@^0.1.0: dependencies: ast-types-flow "0.0.7" -b64@3.x.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.3.tgz#36afeee0d9345f046387ce6de8a6702afe5bb56e" - babel-cli@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" @@ -1156,6 +1127,10 @@ babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" +babel-plugin-syntax-decorators@^6.1.18: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" @@ -1197,6 +1172,14 @@ babel-plugin-transform-class-properties@6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-plugin-transform-decorators-legacy@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" + dependencies: + babel-plugin-syntax-decorators "^6.1.18" + babel-runtime "^6.2.0" + babel-template "^6.3.0" + babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -1582,14 +1565,14 @@ babel-register@^6.24.1, babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: +babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0, babel-template@^6.26.0: +babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0, babel-template@^6.26.0, babel-template@^6.3.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -1678,16 +1661,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -belly-button@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/belly-button/-/belly-button-4.0.1.tgz#55225d373f7519fd4e29ce8ef596c244499780eb" - dependencies: - bossy "3.x.x" - chalk "1.1.x" - eslint "4.x.x" - glob "7.x.x" - insync "2.x.x" - big.js@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" @@ -1700,23 +1673,13 @@ binary-extensions@^1.0.0: version "1.10.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" -bindings@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" - -bl@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" - dependencies: - readable-stream "^2.0.5" - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" dependencies: inherits "~2.0.0" -"bluebird@>= 2.3.2 < 3", bluebird@^2.10.2: +bluebird@^2.10.2: version "2.11.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" @@ -1764,19 +1727,6 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boom@5.x.x, boom@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - -bossy@3.x.x: - version "3.0.4" - resolved "https://registry.yarnpkg.com/bossy/-/bossy-3.0.4.tgz#f9ae9f26e81b41a318f4ee0d83686e4a5c2507b9" - dependencies: - hoek "4.x.x" - joi "10.x.x" - boxen@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" @@ -1912,10 +1862,6 @@ browserslist@^2.1.2, browserslist@^2.1.5, browserslist@^2.4.0: caniuse-lite "^1.0.30000718" electron-to-chromium "^1.3.18" -brule@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/brule/-/brule-2.0.0.tgz#7020ecb04301f4e1f03f26fc00569edf81258699" - bser@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" @@ -2080,13 +2026,6 @@ call-signature@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" -call@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/call/-/call-4.0.2.tgz#df76f5f51ee8dd48b856ac8400f7e69e6d7399c4" - dependencies: - boom "5.x.x" - hoek "4.x.x" - caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -2160,20 +2099,6 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -catbox-memory@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" - dependencies: - hoek "4.x.x" - -catbox@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.5.tgz#c56f7e8e9555d27c0dc038a96ef73e57d186bb1f" - dependencies: - boom "5.x.x" - hoek "4.x.x" - joi "10.x.x" - ccount@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.2.tgz#53b6a2f815bb77b9c2871f7b9a72c3a25f1d8e89" @@ -2185,7 +2110,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@1.1.3, chalk@1.1.x, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -2237,26 +2162,6 @@ character-reference-invalid@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz#942835f750e4ec61a308e60c2ef8cc1011202efc" -chart.js@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.7.0.tgz#330dbbee0c66199eb715f60fbf8ca4029609a529" - dependencies: - chartjs-color "~2.2.0" - moment "~2.18.0" - -chartjs-color-string@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz#8d3752d8581d86687c35bfe2cb80ac5213ceb8c1" - dependencies: - color-name "^1.0.0" - -chartjs-color@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.2.0.tgz#84a2fb755787ed85c39dd6dd8c7b1d88429baeae" - dependencies: - chartjs-color-string "^0.5.0" - color-convert "^0.5.3" - checksum@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9" @@ -2286,12 +2191,6 @@ ci-info@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" -cidr-matcher@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/cidr-matcher/-/cidr-matcher-1.0.5.tgz#1805e49751be8fc8279a73355574e31c9f49666b" - dependencies: - ip "^1.0.2" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -2450,12 +2349,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -code@4.1.x, code@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/code/-/code-4.1.0.tgz#209ad11d05af8a0c1c7aaf694d9fa4d2c7d95b85" - dependencies: - hoek "4.x.x" - codemirror@5.20.2: version "5.20.2" resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.20.2.tgz#918e0ece96d57a99030b2f8b33011284bed5217a" @@ -2472,10 +2365,6 @@ collapse-white-space@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c" -color-convert@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - color-convert@^1.3.0, color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" @@ -2635,14 +2524,6 @@ concat-stream@^1.4.10, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream readable-stream "^2.2.2" typedarray "^0.0.6" -concat-stream@~1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - concordance@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/concordance/-/concordance-3.0.0.tgz#b2286af54405fc995fc7345b0b106d8dd073cb29" @@ -2698,24 +2579,10 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -constant-case@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" - dependencies: - snake-case "^2.1.0" - upper-case "^1.1.1" - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -consulite@2.x.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/consulite/-/consulite-2.0.0.tgz#4d35228d24f70a8fb01fdb8ed921d4e54d8bbb16" - dependencies: - or-promise "1.x.x" - wreck "12.x.x" - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2732,12 +2599,6 @@ content-type@^1.0.2, content-type@~1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -content@3.x.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/content/-/content-3.0.6.tgz#9c2e301e9ae515ed65a4b877d78aa5659bb1b809" - dependencies: - boom "5.x.x" - conventional-changelog-angular@^1.3.3, conventional-changelog-angular@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.0.tgz#50b2d45008448455fdf67e06ea01972fbd08182a" @@ -3024,12 +2885,6 @@ create-react-class@^15.5.1, create-react-class@^15.6.0: loose-envify "^1.3.1" object-assign "^4.1.1" -crocket@^0.9.11: - version "0.9.11" - resolved "https://registry.yarnpkg.com/crocket/-/crocket-0.9.11.tgz#288fca11ef0d3dd239b62c488265f30c8edfb0c5" - dependencies: - xpipe "*" - cross-env@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.5.tgz#4383d364d9660873dd185b398af3bfef5efffef3" @@ -3058,12 +2913,6 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cryptiles@3.x.x, cryptiles@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - crypto-browserify@^3.11.0: version "3.11.1" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" @@ -3606,18 +3455,10 @@ deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" -deep-get-set@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-get-set/-/deep-get-set-1.1.0.tgz#47bba2008a3fde9c753dcbe61a36241606d9836f" - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -deep-object-diff@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.0.4.tgz#ee4c93b4a9da2962a568964c935a1989a416f9c4" - default-gateway@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.0.2.tgz#e365db05c50a4643cc1990c6178228c540a0b910" @@ -3671,12 +3512,6 @@ del@^3.0.0: pify "^3.0.0" rimraf "^2.2.8" -delay@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-2.0.0.tgz#9112eadc03e4ec7e00297337896f273bbd91fae5" - dependencies: - p-defer "^1.0.0" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -3738,7 +3573,7 @@ dictionary-en-us@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/dictionary-en-us/-/dictionary-en-us-1.2.1.tgz#d21009edaccab49fae8eefdc483da83438526b5f" -diff@3.3.x, diff@^3.0.0, diff@^3.2.0: +diff@^3.0.0, diff@^3.2.0: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -3771,23 +3606,6 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -docker-modem@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.2.tgz#004de0afd2e7b32894e18492fab05ba2dc5d63e3" - dependencies: - JSONStream "0.10.0" - debug "^2.6.0" - readable-stream "~1.0.26-4" - split-ca "^1.0.0" - -dockerode@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.1.tgz#c0df942c48bf0c0be8353e348d45e1acb4c036e5" - dependencies: - concat-stream "~1.5.1" - docker-modem "^1.0.0" - tar-fs "~1.12.0" - doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -4104,10 +3922,6 @@ es6-object-assign@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" -es6-promise@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - es6-promise@^4.0.5, es6-promise@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" @@ -4166,10 +3980,6 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-config-hapi@10.x.x: - version "10.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-10.1.0.tgz#e65720917575da292c4ffe8d59ad9aa4e5b0a2ac" - eslint-config-joyent-portal@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/eslint-config-joyent-portal/-/eslint-config-joyent-portal-2.0.0.tgz#bd06be8866df36366f395885ccd51609b545d196" @@ -4230,15 +4040,6 @@ eslint-plugin-flowtype@^2.35.1: dependencies: lodash "^4.15.0" -eslint-plugin-hapi@4.x.x: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-hapi/-/eslint-plugin-hapi-4.0.0.tgz#44aa2e45f7939a523929cd832bb9aa129a95e823" - dependencies: - hapi-capitalize-modules "1.x.x" - hapi-for-you "1.x.x" - hapi-scope-start "2.x.x" - no-arrowception "1.x.x" - eslint-plugin-import@2.7.0, eslint-plugin-import@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" @@ -4358,49 +4159,7 @@ eslint@4.4.1: table "^4.0.1" text-table "~0.2.0" -eslint@4.5.x: - version "4.5.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.5.0.tgz#bb75d3b8bde97fb5e13efcd539744677feb019c3" - dependencies: - ajv "^5.2.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^2.6.8" - doctrine "^2.0.0" - eslint-scope "^3.7.1" - espree "^3.5.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^9.17.0" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^4.0.0" - progress "^2.0.0" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "^4.0.1" - text-table "~0.2.0" - -eslint@4.x.x, eslint@^4.5.0: +eslint@^4.5.0: version "4.6.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.6.1.tgz#ddc7fc7fd70bf93205b0b3449bb16a1e9e7d4950" dependencies: @@ -4451,7 +4210,7 @@ espower-location-detector@^1.0.0: source-map "^0.5.0" xtend "^4.0.0" -espree@3.5.x, espree@^3.5.0: +espree@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" dependencies: @@ -4512,18 +4271,6 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" -event-stream@~3.3.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -4754,10 +4501,6 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" -fast-safe-stringify@1.1.x: - version "1.1.13" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-1.1.13.tgz#a01e9cd9c9e491715c98a75a42d5f0bbd107ff76" - fast-safe-stringify@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-1.2.0.tgz#ebd42666fd18fe4f2ba4f0d295065f3f85cade96" @@ -4896,10 +4639,6 @@ find-node-modules@1.0.4: findup-sync "0.4.2" merge "^1.2.0" -find-rc@3.0.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-3.0.1.tgz#54a4178370f10bc9371fa8d1b2c2809a2afa0cce" - find-root@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" @@ -5027,10 +4766,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" @@ -5284,17 +5019,6 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.x.x, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - 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" - glob@^5.0.14: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -5315,6 +5039,17 @@ glob@^6.0.1, glob@^6.0.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + 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" + global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -5384,31 +5119,6 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -good-console@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/good-console/-/good-console-6.4.0.tgz#7294c9d90c4c9f059a082e180625495966d2ba59" - dependencies: - hoek "4.x.x" - joi "8.1.x" - json-stringify-safe "5.0.x" - moment "2.15.x" - -good-squeeze@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/good-squeeze/-/good-squeeze-5.0.2.tgz#a8e58242b4a0b32cdbdf317b60e73a19a7f0879b" - dependencies: - fast-safe-stringify "1.1.x" - hoek "4.x.x" - -good@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/good/-/good-7.3.0.tgz#25da74d51f336692ec86fe8d6533453585fa85fe" - dependencies: - hoek "4.x.x" - joi "10.x.x" - oppsy "1.x.x" - pumpify "1.3.x" - got@^5.0.0: version "5.7.1" resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" @@ -5468,24 +5178,10 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graphi@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/graphi/-/graphi-3.1.0.tgz#e1dac4ab8dfd0f634b4d3672ed08b5815584e041" - dependencies: - boom "^5.2.0" - graphql "^0.11.2" - graphql-server-module-graphiql "^1.1.2" - graphql-anywhere@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-3.1.0.tgz#3ea0d8e8646b5cee68035016a9a7557c15c21e96" -graphql-server-module-graphiql@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/graphql-server-module-graphiql/-/graphql-server-module-graphiql-1.1.2.tgz#f504f6c825f71b6d56d0777f5a0b2b079efc1135" - dependencies: - apollo-server-module-graphiql "^1.1.2" - graphql-tag@^2.0.0, graphql-tag@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.4.2.tgz#6a63297d8522d03a2b72d26f1b239aab343840cd" @@ -5520,7 +5216,7 @@ handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" -handlebars@4.x.x, handlebars@^4.0.2, handlebars@^4.0.3: +handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" dependencies: @@ -5530,41 +5226,6 @@ handlebars@4.x.x, handlebars@^4.0.2, handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" -hapi-capitalize-modules@1.x.x: - version "1.1.6" - resolved "https://registry.yarnpkg.com/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz#7991171415e15e6aa3231e64dda73c8146665318" - -hapi-for-you@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hapi-for-you/-/hapi-for-you-1.0.0.tgz#d362fbee8d7bda9c2c7801e207e5a5cd1a0b6a7b" - -hapi-scope-start@2.x.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" - -hapi@^16.5.2: - version "16.6.0" - resolved "https://registry.yarnpkg.com/hapi/-/hapi-16.6.0.tgz#c97cc7119a04314553883868651862fee34318ee" - dependencies: - accept "^2.1.4" - ammo "^2.0.4" - boom "^5.2.0" - call "^4.0.2" - catbox "^7.1.5" - catbox-memory "^2.0.4" - cryptiles "^3.1.2" - heavy "^4.0.4" - hoek "^4.2.0" - iron "^4.0.5" - items "^2.1.1" - joi "^10.6.0" - mimos "^3.0.3" - podium "^1.3.0" - shot "^3.4.2" - statehood "^5.0.3" - subtext "^5.0.0" - topo "^2.0.2" - har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" @@ -5648,12 +5309,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hasha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" - dependencies: - is-stream "^1.0.1" - hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -5667,14 +5322,6 @@ he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" -heavy@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.4.tgz#36c91336c00ccfe852caa4d153086335cd2f00e9" - dependencies: - boom "5.x.x" - hoek "4.x.x" - joi "10.x.x" - hedges@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/hedges/-/hedges-1.2.1.tgz#6b41d5691c47392c76c355bbfb4900c70b71e125" @@ -5705,10 +5352,6 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -hoek@4.x.x, hoek@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" - hoist-non-react-statics@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" @@ -5919,7 +5562,7 @@ iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" -ignore-by-default@^1.0.0, ignore-by-default@^1.0.1: +ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -6063,10 +5706,6 @@ inquirer@^3.0.2, inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.2.3: strip-ansi "^4.0.0" through "^2.3.6" -insync@2.x.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/insync/-/insync-2.1.1.tgz#22e26c61121303c06f51d35a3ccf6d8fc1e914c4" - internal-ip@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" @@ -6098,7 +5737,7 @@ ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" -ip@^1.0.2, ip@^1.1.0, ip@^1.1.5: +ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -6110,14 +5749,6 @@ ipaddr.js@^1.5.1: version "1.5.2" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" -iron@4.x.x, iron@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.5.tgz#4f042cceb8b9738f346b59aa734c83a89bc31428" - dependencies: - boom "5.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - irregular-plurals@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.3.0.tgz#7af06931bdf74be33dcf585a13e06fccc16caecf" @@ -6435,10 +6066,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isemail@2.x.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" - isexe@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" @@ -6464,10 +6091,6 @@ isomorphic-fetch@^2.1.1: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" -ispromise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ispromise/-/ispromise-1.1.0.tgz#3770f7337f332a2d099ade4684fe02a9a50b893a" - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -6542,10 +6165,6 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -items@2.x.x, items@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" - iterall@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.1.tgz#f7f0af11e9a04ec6426260f5019d9fcca4d50214" @@ -7071,57 +6690,6 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -joi@10.x.x, joi@^10.6.0: - version "10.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2" - dependencies: - hoek "4.x.x" - isemail "2.x.x" - items "2.x.x" - topo "2.x.x" - -joi@8.1.x: - version "8.1.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-8.1.1.tgz#2d8b52a5d909d217ed47248577eefe8b1798f48f" - dependencies: - hoek "4.x.x" - isemail "2.x.x" - moment "2.x.x" - topo "2.x.x" - -joyent-ui-toolkit@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/joyent-ui-toolkit/-/joyent-ui-toolkit-1.2.1.tgz#b2cbdffc64f8f1ce52ee5fed2bc78151cc6bfbf9" - dependencies: - babel-cli "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-plugin-inline-react-svg "^0.4.0" - babel-plugin-styled-components "^1.1.7" - babel-preset-joyent-portal "^2.0.0" - babel-template "^6.26.0" - camel-case "^3.0.0" - cross-env "^5.0.5" - d3 "^4.10.0" - disable-scroll "^0.3.0" - lodash.difference "^4.5.0" - lodash.differenceby "^4.8.0" - lodash.isequal "^4.5.0" - lodash.isequalwith "^4.4.0" - lodash.isstring "^4.0.1" - normalized-styled-components "^1.0.9" - polished "^1.6.1" - prop-types "^15.5.10" - react-broadcast "^0.1.2" - react-styled-flexboxgrid "^2.0.3" - redrun "^5.9.16" - reduce-css-calc "^2.0.5" - remcalc "^1.0.8" - rnd-id "^1.0.8" - styled-components "^2.1.2" - styled-is "^1.0.11" - unitcalc "^1.0.8" - js-base64@^2.1.9: version "2.3.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" @@ -7212,13 +6780,13 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@1.x.x, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: jsonify "~0.0.0" -json-stringify-safe@5.0.x, json-stringify-safe@5.x.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7226,7 +6794,7 @@ json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" -json5@0.5.x, json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -7370,29 +6938,6 @@ known-css-properties@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" -lab@^14.2.2: - version "14.2.2" - resolved "https://registry.yarnpkg.com/lab/-/lab-14.2.2.tgz#9f8bf3a1c87fd7e5bf06ae20a7e15d064e8893aa" - dependencies: - bossy "3.x.x" - code "4.1.x" - diff "3.3.x" - eslint "4.5.x" - eslint-config-hapi "10.x.x" - eslint-plugin-hapi "4.x.x" - espree "3.5.x" - find-rc "3.0.x" - handlebars "4.x.x" - hoek "4.x.x" - items "2.x.x" - json-stable-stringify "1.x.x" - json-stringify-safe "5.x.x" - mkdirp "0.5.x" - seedrandom "2.4.x" - source-map "0.5.x" - source-map-support "0.4.x" - supports-color "4.4.x" - last-line-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" @@ -7576,53 +7121,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash-es@^4.17.3, lodash-es@^4.17.4, lodash-es@^4.2.0, lodash-es@^4.2.1: +lodash-es@^4.17.3, lodash-es@^4.2.0, lodash-es@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._bindcallback@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - -lodash._createassigner@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - dependencies: - lodash._bindcallback "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.restparam "^3.0.0" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" -lodash.assign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - dependencies: - lodash._baseassign "^3.0.0" - lodash._createassigner "^3.0.0" - lodash.keys "^3.0.0" - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -7643,13 +7149,6 @@ lodash.debounce@^4.0.3, lodash.debounce@^4.0.4, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" -lodash.defaults@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" - dependencies: - lodash.assign "^3.0.0" - lodash.restparam "^3.0.0" - lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -7666,10 +7165,6 @@ lodash.find@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" -lodash.findindex@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.findindex/-/lodash.findindex-4.6.0.tgz#a3245dee61fb9b6e0624b535125624bb69c11106" - lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" @@ -7690,14 +7185,6 @@ lodash.intersection@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.intersection/-/lodash.intersection-4.4.0.tgz#0a11ba631d0e95c23c7f2f4cbb9a692ed178e705" -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - lodash.isarraylike@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.isarraylike/-/lodash.isarraylike-4.2.0.tgz#4623310ab318804b667ddc3619058137559400c4" @@ -7738,14 +7225,6 @@ lodash.isundefined@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" @@ -7766,14 +7245,6 @@ lodash.pick@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" -lodash.remove@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.remove/-/lodash.remove-4.7.0.tgz#f31d31e7c39a0690d5074ec0d3627162334ee626" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -7807,7 +7278,7 @@ lodash@4.17.2: version "4.17.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.1.0, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.7.0: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.1.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.7.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -7914,10 +7385,6 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - mapsome@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mapsome/-/mapsome-1.0.0.tgz#70bf732b3eeab66aee7042158202885a17625c41" @@ -8079,7 +7546,7 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.x.x, "mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: +"mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" @@ -8109,13 +7576,6 @@ mimic-response@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" -mimos@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" - dependencies: - hoek "4.x.x" - mime-db "1.x.x" - minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" @@ -8181,11 +7641,7 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" -moment@2.15.x: - version "2.15.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.15.2.tgz#1bfdedf6a6e345f322fe956d5df5bd08a8ce84dc" - -moment@2.x.x, moment@^2.10.6, moment@^2.6.0, moment@~2.18.0: +moment@^2.10.6, moment@^2.6.0: version "2.18.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" @@ -8216,12 +7672,6 @@ ms@2.0.0, ms@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -msgpack@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/msgpack/-/msgpack-1.0.2.tgz#923e2c5cffa65c8418e9b228d1124793969c429c" - dependencies: - nan "^2.0.9" - multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -8274,14 +7724,10 @@ n-gram@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/n-gram/-/n-gram-0.1.2.tgz#9acecb0f797fbfd22a0ad8a28d987880a63002ab" -nan@^2.0.8, nan@^2.0.9, nan@^2.3.0, nan@^2.3.3: +nan@^2.0.8, nan@^2.3.0, nan@^2.3.3: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" -nan@~2.3.0: - version "2.3.5" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.3.5.tgz#822a0dc266290ce4cd3a12282ca3e7e364668a08" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8300,13 +7746,6 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" -nigel@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" - dependencies: - hoek "4.x.x" - vise "2.x.x" - nlcst-is-literal@^1.0.0, nlcst-is-literal@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/nlcst-is-literal/-/nlcst-is-literal-1.1.1.tgz#8d8f11dabffebf7526c13a80674e696421becaeb" @@ -8331,10 +7770,6 @@ nlcst-to-string@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.1.tgz#f90f3cf905c137dc8edd8727fbcde73e73c2a1d9" -no-arrowception@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" - no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" @@ -8347,7 +7782,7 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" -node-fetch@^1.0.1, node-fetch@^1.7.2: +node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" dependencies: @@ -8426,21 +7861,6 @@ node-uuid@^1.4.6: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" -nodemon@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.0.tgz#e538548a777340a19f855c4f087b7e528aa3feda" - dependencies: - chokidar "^1.7.0" - debug "^2.6.8" - es6-promise "^3.3.1" - ignore-by-default "^1.0.1" - lodash.defaults "^3.1.2" - minimatch "^3.0.4" - ps-tree "^1.1.0" - touch "^3.1.0" - undefsafe "0.0.3" - update-notifier "^2.2.0" - nopt@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz#2aa09b7d1768487b3b89a9c5aa52335bff0baea7" @@ -8454,12 +7874,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - dependencies: - abbrev "1" - normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -8663,13 +8077,6 @@ opn@5.1.0, opn@^5.1.0: dependencies: is-wsl "^1.1.0" -oppsy@1.x.x, oppsy@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/oppsy/-/oppsy-1.0.2.tgz#98014cd6967653a83cfffa554226dc90050baad4" - dependencies: - hoek "4.x.x" - items "2.x.x" - optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -8698,10 +8105,6 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -or-promise@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/or-promise/-/or-promise-1.0.0.tgz#158263c37ecf68c17a3dc669dcdb6a4bce21c85c" - original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" @@ -8757,10 +8160,6 @@ p-cancelable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8974,12 +8373,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - dependencies: - through "~2.3" - pbkdf2@^3.0.3: version "3.0.14" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" @@ -8990,31 +8383,10 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -penseur@^7.12.3: - version "7.12.3" - resolved "https://registry.yarnpkg.com/penseur/-/penseur-7.12.3.tgz#07032c9f206fe3188934c3c36c69b0f04e6ab20b" - dependencies: - boom "5.x.x" - hoek "4.x.x" - items "2.x.x" - joi "10.x.x" - radix62 "1.x.x" - rethinkdb "2.3.x" - performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" -pez@2.x.x: - version "2.1.5" - resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.5.tgz#5ec2cc62500cc3eb4236d4a414cf5a17b5eb5007" - dependencies: - b64 "3.x.x" - boom "5.x.x" - content "3.x.x" - hoek "4.x.x" - nigel "2.x.x" - pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -9023,16 +8395,6 @@ pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" -piloted@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/piloted/-/piloted-3.2.0.tgz#00b24beb62b539541dcd5e46b735e064a69a674d" - dependencies: - consulite "2.x.x" - hoek "4.x.x" - items "2.x.x" - json5 "0.5.x" - or-promise "1.x.x" - pinkie-promise@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" @@ -9097,14 +8459,6 @@ pluralize@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-6.0.0.tgz#d9b51afad97d3d51075cc1ddba9b132cacccb7ba" -podium@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/podium/-/podium-1.3.0.tgz#3c490f54d16f10f5260cbe98641f1cb733a8851c" - dependencies: - hoek "4.x.x" - items "2.x.x" - joi "10.x.x" - polished@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/polished/-/polished-1.7.0.tgz#cfc55113f52e9ecec7c84dbd0c708b9a3235d7c3" @@ -9555,12 +8909,6 @@ progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" -prom-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prom-query/-/prom-query-1.0.0.tgz#9a94fd51cf8de82215cbfcf68c4a5bedf910e6b1" - dependencies: - wreck "^12.2.3" - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -9601,12 +8949,6 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - dependencies: - event-stream "~3.3.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -9628,7 +8970,7 @@ pump@^1.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@1.3.x, pumpify@^1.3.3: +pumpify@^1.3.3: version "1.3.5" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b" dependencies: @@ -9644,10 +8986,6 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -putmetric@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/putmetric/-/putmetric-1.0.1.tgz#5b0362732545b4e05c91ef5e087fae075d638a12" - q@^1.1.2, q@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" @@ -9716,10 +9054,6 @@ quotation@^1.0.0, quotation@^1.0.1, quotation@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quotation/-/quotation-1.1.0.tgz#3f9c9b2e7780856f27c5015bec628d690e82c70d" -radix62@1.x.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/radix62/-/radix62-1.0.1.tgz#cc2f27a49543b44ddaac712380409354bbe009a5" - random-integral@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/random-integral/-/random-integral-1.0.3.tgz#8ff3c117565c9a04b66ddd559f3aed29bd0f0f6c" @@ -9796,13 +9130,6 @@ react-broadcast@^0.1.2: dependencies: invariant "^2.2.1" -react-bundle@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/react-bundle/-/react-bundle-1.0.4.tgz#ea03cae97be357ff8e290e785f4e30d0e065b920" - dependencies: - ispromise "^1.1.0" - prop-types "^15.5.10" - react-codemirror2@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-1.0.0.tgz#b529a6c5c91219f92c751f43a17721cdaf36b05f" @@ -10028,12 +9355,6 @@ react-scripts@^1.0.12: optionalDependencies: fsevents "1.1.2" -react-simple-table@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-simple-table/-/react-simple-table-1.0.1.tgz#941390bd68eca63d028c1873bd90772a21143b9c" - dependencies: - deep-get-set "^1.0.0" - react-styled-flexboxgrid@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/react-styled-flexboxgrid/-/react-styled-flexboxgrid-2.0.3.tgz#308a8bbc80b1737a65f4ccf35d02afe20932a2f2" @@ -10208,7 +9529,7 @@ read@1.0.7: string_decoder "~1.0.3" util-deprecate "~1.0.1" -readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.26-4: +readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -10226,17 +9547,6 @@ readable-stream@^1.0.33, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" @@ -10335,23 +9645,6 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -reduce-reducers@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.1.2.tgz#fa1b4718bc5292a71ddd1e5d839c9bea9770f14b" - -redux-actions@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-2.2.1.tgz#d64186b25649a13c05478547d7cd7537b892410d" - dependencies: - invariant "^2.2.1" - lodash "^4.13.1" - lodash-es "^4.17.4" - reduce-reducers "^0.1.0" - -redux-batched-actions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/redux-batched-actions/-/redux-batched-actions-0.2.0.tgz#da0000c882b0e6c861a96d5823bd36adf5d9c0dd" - redux-form@^7.0.3: version "7.0.4" resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-7.0.4.tgz#2297b6bed40fda8bb58132e261ba0976fb4e530c" @@ -10659,10 +9952,6 @@ requires-port@1.0.x, requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -reselect@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" - resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -10855,12 +10144,6 @@ retext@^5.0.0: retext-stringify "^2.0.0" unified "^6.0.0" -rethinkdb@2.3.x: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rethinkdb/-/rethinkdb-2.3.3.tgz#3dc6586e22fa1dabee0d254e64bd0e379fad2f72" - dependencies: - bluebird ">= 2.3.2 < 3" - right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -11008,10 +10291,6 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" -seedrandom@2.4.x: - version "2.4.3" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -11152,21 +10431,10 @@ sherlock@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sherlock/-/sherlock-1.0.0.tgz#e246eacfd72c0e3b3e8243a6c9e55340d80c854e" -shot@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.2.tgz#1e5c3f6f2b26649adc42f7eb350214a5a0291d67" - dependencies: - hoek "4.x.x" - joi "10.x.x" - signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -simple-statistics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/simple-statistics/-/simple-statistics-4.1.1.tgz#533c48d48336ba3d350d8135f20fa7138acb0c7d" - slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -11217,12 +10485,6 @@ smog-formula@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/smog-formula/-/smog-formula-1.0.1.tgz#b2bac5e7404cb431657b3ba9efeedc3c6abbbace" -snake-case@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" - dependencies: - no-case "^2.2.0" - snapguidist@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/snapguidist/-/snapguidist-2.0.1.tgz#0440b019c75ea29145967227c5ccd1e53dbd3177" @@ -11291,7 +10553,7 @@ source-map-resolve@^0.3.0: source-map-url "~0.3.0" urix "~0.1.0" -source-map-support@0.4.x, source-map-support@^0.4.0, source-map-support@^0.4.15: +source-map-support@^0.4.0, source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: @@ -11392,10 +10654,6 @@ specificity@^0.3.0, specificity@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.1.tgz#f1b068424ce317ae07478d95de3c21cf85e8d567" -split-ca@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" - split2@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/split2/-/split2-0.2.1.tgz#02ddac9adc03ec0bb78c1282ec079ca6e85ae900" @@ -11408,12 +10666,6 @@ split2@^2.0.0: dependencies: through2 "^2.0.2" -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - dependencies: - through "2" - split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" @@ -11494,17 +10746,6 @@ state-toggle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" -statehood@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.3.tgz#c07a75620db5379b60d2edd47f538002a8ac7dd6" - dependencies: - boom "5.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - iron "4.x.x" - items "2.x.x" - joi "10.x.x" - "statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -11523,12 +10764,6 @@ stream-combiner@^0.2.1: duplexer "~0.1.1" through "~2.3.4" -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - dependencies: - duplexer "~0.1.1" - stream-each@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.0.tgz#1e95d47573f580d814dc0ff8cd0f66f1ce53c991" @@ -11708,12 +10943,6 @@ styled-components@^2.1.2: stylis "^3.2.1" supports-color "^3.2.3" -styled-text-spinners@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/styled-text-spinners/-/styled-text-spinners-1.0.1.tgz#143f34b53d539b26eeb6c993c0d82f7e3e37559f" - dependencies: - styled-is "^1.0.11" - stylehacks@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.2.tgz#64c83e0438a68c9edf449e8c552a7d9ab6009b0b" @@ -11894,16 +11123,6 @@ stylis@^3.2.1: version "3.2.16" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.2.16.tgz#f336893e55f9f13299b39c01af3b10546cd7507a" -subtext@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/subtext/-/subtext-5.0.0.tgz#9c3f083018bb1586b167ad8cfd87083f5ccdfe0f" - dependencies: - boom "5.x.x" - content "3.x.x" - hoek "4.x.x" - pez "2.x.x" - wreck "12.x.x" - sugarss@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-0.2.0.tgz#ac34237563327c6ff897b64742bf6aec190ad39e" @@ -11916,12 +11135,6 @@ sugarss@^1.0.0: dependencies: postcss "^6.0.0" -supports-color@4.4.x, supports-color@^4.0.0, supports-color@^4.1.0, supports-color@^4.2.1, supports-color@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - dependencies: - has-flag "^2.0.0" - supports-color@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" @@ -11936,6 +11149,12 @@ supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" +supports-color@^4.0.0, supports-color@^4.1.0, supports-color@^4.2.1, supports-color@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -12070,14 +11289,6 @@ tape@^4.6.3: string.prototype.trim "~1.1.2" through "~2.3.8" -tar-fs@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.12.0.tgz#a6a80553d8a54c73de1d0ae0e79de77035605e1d" - dependencies: - mkdirp "^0.5.0" - pump "^1.0.0" - tar-stream "^1.1.2" - tar-pack@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" @@ -12091,15 +11302,6 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar-stream@^1.1.2: - version "1.5.4" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016" - dependencies: - bl "^1.0.0" - end-of-stream "^1.0.0" - readable-stream "^2.0.0" - xtend "^4.0.0" - tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -12208,7 +11410,7 @@ through2@^2.0.0, through2@^2.0.2, through2@~2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12305,29 +11507,10 @@ to-vfile@^2.1.1: is-buffer "^1.1.4" vfile "^2.0.0" -topo@2.x.x, topo@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" - dependencies: - hoek "4.x.x" - toposort@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" -toppsy@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/toppsy/-/toppsy-1.1.0.tgz#dd1ef4a15aaa7ef077bc41e9851aa75851610b41" - dependencies: - oppsy "^1.0.2" - putmetric "^1.0.1" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - dependencies: - nopt "~1.0.10" - tough-cookie@^2.3.2, tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" @@ -12376,41 +11559,6 @@ trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" -triton-watch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/triton-watch/-/triton-watch-1.1.0.tgz#d2b47fbf6a45174198c196152bb86c696a923c35" - dependencies: - triton "5.2.x" - -triton@5.2.x: - version "5.2.1" - resolved "https://registry.yarnpkg.com/triton/-/triton-5.2.1.tgz#5e950ca68a5aaf18d766f02bc87c5da2663c71cb" - dependencies: - assert-plus "0.2.0" - backoff "2.4.1" - bigspinner "3.1.0" - bunyan "1.5.1" - cmdln "4.1.2" - extsprintf "1.0.2" - getpass "0.1.6" - lomstream "1.1.0" - mkdirp "0.5.1" - once "1.3.2" - read "1.0.7" - restify-clients "1.5.0" - restify-errors "3.0.0" - rimraf "2.4.4" - semver "5.1.0" - smartdc-auth "2.5.2" - sshpk "1.10.2" - sshpk-agent "1.4.2" - strsplit "1.0.0" - tabula "1.9.0" - vasync "1.6.3" - verror "1.6.0" - which "1.2.4" - wordwrap "1.0.0" - triton@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/triton/-/triton-5.3.1.tgz#aaf9f9e302b23b5163b42af56662b980da843e12" @@ -12492,7 +11640,7 @@ type-is@~1.6.13, type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.15" -typedarray@^0.0.6, typedarray@~0.0.5: +typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -12573,14 +11721,6 @@ uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" -undefsafe@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" - -underscore@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.3.3.tgz#47ac53683daf832bfa952e1774417da47817ae42" - unfetch@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-2.1.2.tgz#684fee4d8acdb135bdb26c0364c642fc326ca95b" @@ -12701,7 +11841,7 @@ update-notifier@^1.0.3: semver-diff "^2.0.0" xdg-basedir "^2.0.0" -update-notifier@^2.1.0, update-notifier@^2.2.0: +update-notifier@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" dependencies: @@ -12798,7 +11938,7 @@ uuid@^2.0.1, uuid@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: +uuid@^3.0.0, uuid@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" @@ -12836,12 +11976,6 @@ vasync@1.6.3: dependencies: verror "1.6.0" -vasync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vasync/-/vasync-2.0.0.tgz#6712849dec6731923197b1cfb8a992e5ffc3f8b6" - dependencies: - verror "1.6.0" - vendors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" @@ -12904,12 +12038,6 @@ vfile@^2.0.0: replace-ext "1.0.0" unist-util-stringify-position "^1.0.0" -vise@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" - dependencies: - hoek "4.x.x" - vlq@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1" @@ -13246,13 +12374,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -wreck@12.x.x, wreck@^12.2.3, wreck@^12.4.0: - version "12.5.0" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.5.0.tgz#6825c017081d7e8f46ee74ce11fa5852aa8e72a7" - dependencies: - boom "5.x.x" - hoek "4.x.x" - write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: version "1.3.4" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" @@ -13337,10 +12458,6 @@ xmlhttprequest@1: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xpipe@*: - version "1.0.5" - resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -13479,19 +12596,3 @@ yargs@~3.10.0: zen-observable-ts@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.4.4.tgz#c244c71eaebef79a985ccf9895bc90307a6e9712" - -zerorpc@^0.9.7: - version "0.9.7" - resolved "https://registry.yarnpkg.com/zerorpc/-/zerorpc-0.9.7.tgz#64ddb32ce8c934bea5434ec81ca22e971045a860" - dependencies: - msgpack "1.0.2" - underscore "1.3.3" - uuid "^3.0.0" - zmq "2.x" - -zmq@2.x: - version "2.15.3" - resolved "https://registry.yarnpkg.com/zmq/-/zmq-2.15.3.tgz#66c6de82cc36b09734b820703776490a6fbbe624" - dependencies: - bindings "~1.2.1" - nan "~2.3.0"