├── .babelrc ├── .gitignore ├── CHANGELOG.md ├── README.md ├── package-lock.json ├── package.json └── src ├── index.d.ts └── index.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "env", 5 | { 6 | "modules": false, 7 | "loose": true 8 | } 9 | ], 10 | "stage-2", 11 | "react" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### v2.0.1 2 | 3 | * Bug fixes: 4 | * Safely check event objects in case events are dispatched with an undefined event parameter. 5 | 6 | ### v2.0.0 7 | 8 | * New features: 9 | * An additional render prop is added called `getFocusProps`, which acts as a composer of your own event handlers for a `FocusWithin`-targeted component. 10 | * Bug fixes: 11 | * Removed an unneeded import of `react-dom`. 12 | * Fixed a bug where a `setState` could have been called after the component was unmounted. 13 | * Breaking change: 14 | * `FocusWithin` now allows clicking within a `FocusWithin` container; i.e. it will no longer emit blur events for as long as mouse events are within that container. The `onBlur` event will only be emitted when DOM focus leaves the container **and** a mouse click happens outside the container (when both criteria are satisfied, the event is emitted). 15 | 16 | ### v0.1.0 17 | 18 | * Initial creation 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | A React component that gives you `:focus-within` behavior. 2 | 3 | ### Table of Contents 4 | 5 | * [Why?](#why) 6 | * [Setup](#setup) 7 | * [API](#api) 8 | * [`` component](#focuswithin-component) 9 | * [withFocusWithin()](#withfocuswithin) 10 | * [Props](#props) 11 | * [Simple Usage](#simple-usage) 12 | * [Event Handling](#event-handling) 13 | * [Nesting](#nesting) 14 | * [Mixed FocusWithin components](#mixed-focuswithin-components) 15 | 16 | ### Why? 17 | 18 | Focus management across children is a pain to manage until browsers implement the `:focus-within` pseudoselector. Use this if you have run into some of these issues: 19 | 20 | * You want to style a container differently based on if the user has one of its child elements focused (simply using a `:focus` pseudoselector on the container will not work). 21 | * You want to know if a user has left a form but not when a user is simply moving between the form elements inside it. 22 | * You want to style an element based on the focus state of two intricately linked elements, but those elements are not near each other on the DOM tree (imagine a button that opens a fixed popup at the root, even though they are physically placed next to each other) 23 | 24 | Note that unlike native DOM `focus` and `blur` events, the `onFocus` and `onBlur` events in React bubble, this means that you can usually get away with those event handlers if you want to simply react to those events, however you will still not be able to apply the `:focus` pseudoselector unless it is the exact element being focused. Using `FocusWithin` can save you time: 25 | 26 | ```jsx 27 | //without FocusWithin 28 | class Form extends React.Component { 29 | state = { 30 | isFocused: false, 31 | } 32 | 33 | render() { 34 | // color the form if either the input or button are focused 35 | return ( 36 |
this.setState({ isFocused: true })} 39 | onBlur={() => this.setState({ isFocused: false })} 40 | > 41 | 42 | 43 |
44 | ) 45 | } 46 | } 47 | 48 | // with FocusWithin 49 | const Form = () => ( 50 | 51 | {({ isFocused, focusProps }) => ( 52 |
53 | 54 | 55 |
56 | )} 57 |
58 | ) 59 | 60 | // works very well with CSS-in-JS 61 | const StyledForm = withFocusWithin(styled.div` 62 | background: ${props => (props.isFocused ? focusedBackgroundColor : 'none')}; 63 | `) 64 | 65 | const Form = () => ( 66 | 67 | 68 | 69 | 70 | ) 71 | ``` 72 | 73 | ### Setup 74 | 75 | ``` 76 | npm install react-focus-within 77 | ``` 78 | 79 | ```js 80 | // component 81 | import FocusWithin from 'react-focus-within' 82 | import { FocusWithin } from 'react-focus-within' 83 | 84 | // withFocusWithin() higher-order component 85 | import { withFocusWithin } from 'react-focus-within' 86 | ``` 87 | 88 | ### API 89 | 90 | #### `` component 91 | `FocusWithin` expects `children` to be a function that is passed an object containing `focusProps` and `isFocused`. Spread `focusProps` over all children that you want to manage (i.e. any focusable element inside it that can contribute to the focus state). The `isFocused` boolean will tell you if the user has any of these children focused. 92 | 93 | Note that `isFocused` is guaranteed to be stable, meaning that if focus is transitioning from one element to another from inside a managed child, `isFocused` will not be set to `false` and then `true` consecutively. This can be very useful if you are rendering some elements conditionally based on `isFocused`, which ensures that React does not unmount those components needlessly, causing state to be lost. 94 | 95 | ```jsx 96 | import { FocusWithin } from 'react-focus-within' 97 | 98 | // the form container will be highlighted red if either the input or the button are focused 99 | const Form = () => ( 100 | 101 | {({ focusProps, isFocused }) => ( 102 |
110 |
111 | 112 | 113 |
114 |
115 | )} 116 |
117 | ) 118 | ``` 119 | 120 | #### withFocusWithin() 121 | `FocusWithin` can also be used as a higher order component, wrapping a container such that it reacts to all of its children's focus events and it will receive a prop called `isFocused` when anything in its React subtree is focused (this includes portals in React 16). 122 | 123 | `withFocusWithin(Component) => ReactComponent` - use as a quick wrapper around a container component, the container element will receive an `isFocused` prop if any of its children are focused. The `isFocused` prop will not be passed in if you are wrapping a native DOM component, since it does not understand `isFocused` as an attribute. 124 | 125 | `FocusWithin.wrapComponent` - this is exactly the same as `withFocusWithin` 126 | 127 | When combined with CSS-in-JS constructs, this can lead to very awesome and convenient styling: 128 | 129 | ```jsx 130 | import { withFocusWithin } from 'react-focus-within' 131 | import styled from 'styled-components' 132 | 133 | const FormSection = withFocusWithin(styled.div` 134 | background: ${props => (props.isFocused ? props.focusedColor || 'gray' : 'none')}; 135 | `) 136 | 137 | const BigForm = () => ( 138 |
139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 |
152 | ) 153 | ``` 154 | 155 | #### Props 156 | Both `FocusWithin` and `withFocusWithin` have the following props: 157 | * `onFocus: (event) => void` - called when focus moves from outside into a managed child. Not called when moving between children. 158 | * `onBlur: (event) => void` - called when focus moves from inside a managed child to outside. Not called when moving between children. 159 | * `children: (renderProps) => JSX.Element` - pass in a function as the child of `FocusWithin`. The shape of renderProps is this: 160 | 161 | ```ts 162 | type renderProps = { 163 | focusProps: { 164 | onBlur: Function 165 | onFocus: Function 166 | } 167 | getFocusProps

({originalProps: P}): { 168 | onBlur: Function 169 | onFocus: Function 170 | onMouseDown: Function 171 | } & P 172 | isFocused: boolean 173 | } 174 | ``` 175 | 176 | > ℹ️ You can use `getFocusProps` if you plan on implementing other effects for the following events: `onBlur`, `onFocus`, and `onMouseDown`. By passing those into `getFocusProps` it will call your event handlers first before its own. You can prevent default behavior of `FocusWithin` handlers by setting `event.focusWithinDefaultPrevented = true` or returning `false` in the event handler itself. `focusProps` is just a shorthand that calls `getFocusProps` with an empty object. 177 | 178 | > ⚠️ If you are wrapping the event handlers in `focusProps` before applying it to managed children, make sure to pass the native `event` object back to the original `onBlur` and `onFocus` events. `FocusWithin` relies on this to determine if an event was emitted from a native DOM element or a nested `FocusWithin` element. 179 | 180 | ### Event Handling 181 | 182 | Both `FocusWithin` and `withFocusWithin` emit `onFocus` and `onBlur` events when the user enters or leaves their managed children; they will not emit events when a user goes from one managed child to another. 183 | **You will not need this much power most of the time unless you need precise timing and frequency of `onFocus` and `onBlur` event emissions.** 184 | 185 | ```jsx 186 | import { FocusWithin } from 'react-focus-within' 187 | 188 | // the form container will only emit onFocus and onBlur if they completely leave the form 189 | // it will not emit either events if they are moving focus between the input and the button 190 | // which is different than the default React behavior 191 | const Form = () => ( 192 | console.log('Someone is trying to enter things into me!')} 194 | onBlur={() => console.log('Someone left the form, better validate it!')} 195 | > 196 | {({ focusProps, isFocused }) => ( 197 |

202 |
203 | 204 | 205 |
206 |
207 | )} 208 |
209 | ) 210 | ``` 211 | 212 | ### Nesting 213 | 214 | Because `FocusWithin` itself will emit `onFocus` and `onBlur` events, you can nest multiple `FocusWithin`s. This can be handy when you want to segregate focus states in a composite UI. 215 | 216 | ```jsx 217 | import { FocusWithin } from 'react-focus-within' 218 | import Form from 'example-above' 219 | 220 | // if the user is inside the second form, the overall container will have a background, 221 | // but only the second form will have a red border 222 | const BigForm = () => ( 223 | 224 | {({ focusProps, isFocused }) => ( 225 |
231 |
232 | 233 | 234 |
235 | )} 236 |
237 | ) 238 | ``` 239 | 240 | ### Mixed FocusWithin components 241 | Currently, mixing managed `FocusWithin`s and other managed component types is not supported. 242 | 243 | **Why is this?** This is due to how native or passthrough `onBlur` and `onFocus` events are triggered immediately by React, whereas the `onBlur` and `onFocus` events triggered by other `FocusWithin` components are delayed by a `setTimeout` to determine if focus actually has changed inside it, which can lead to out-of-order event triggering when the two are mixed. **Again, you should not be encountering this in common usage.** 244 | 245 | ```jsx 246 | const MixedForm = () => ( 247 | 248 | {({ focusProps, isFocused }) => ( 249 |
254 | {/* this will not work correctly */} 255 | 256 | 257 | 258 | 259 | {/* these will work */} 260 | 261 | 262 | 263 | 264 | {/* these will work too */} 265 | 266 | 267 | 268 |
269 | )} 270 |
271 | ) 272 | ``` 273 | 274 | You should not run into this problem most of the time; you can just spread `focusProps` to the container that you want to style since `onFocus` and `onBlur` will bubble up to it. 275 | 276 | If you still need to individually manage each child, you will have to wrap the non-`FocusWithin` managed children inside one. The module exports an HOC function called `withFocusWithin` and a static method in `FocusWithin` called `wrapComponent` (they are the same) to help with that: 277 | 278 | ```jsx 279 | const WrappedNativeInput = FocusWithin.wrapComponent('input') // same as withFocusWithin('input') 280 | const WrappedOtherComponent = FocusWithin.wrapComponent(OtherComponent) // same as withFocusWithin(OtherComponent) 281 | 282 | const OkayMixedForm = () => ( 283 | 284 | {({ focusProps, isFocused }) => ( 285 |
290 | 291 | 292 | 293 | 294 | {/* equivalent to: */} 295 | 296 | {({ focusProps }) => } 297 | {({ focusProps }) => } 298 |
299 | )} 300 |
301 | ) 302 | ``` 303 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-focus-within", 3 | "version": "2.0.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/react": { 8 | "version": "16.0.40", 9 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/@types/react/-/react-16.0.40.tgz", 10 | "integrity": "sha1-yqvCKWiG9Atn9vyA8PNGRHZGHfk=" 11 | }, 12 | "ansi-regex": { 13 | "version": "2.1.1", 14 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/ansi-regex/-/ansi-regex-2.1.1.tgz", 15 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 16 | "dev": true 17 | }, 18 | "ansi-styles": { 19 | "version": "2.2.1", 20 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/ansi-styles/-/ansi-styles-2.2.1.tgz", 21 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 22 | "dev": true 23 | }, 24 | "anymatch": { 25 | "version": "1.3.2", 26 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/anymatch/-/anymatch-1.3.2.tgz", 27 | "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", 28 | "dev": true, 29 | "optional": true, 30 | "requires": { 31 | "micromatch": "^2.1.5", 32 | "normalize-path": "^2.0.0" 33 | } 34 | }, 35 | "arr-diff": { 36 | "version": "2.0.0", 37 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/arr-diff/-/arr-diff-2.0.0.tgz", 38 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 39 | "dev": true, 40 | "optional": true, 41 | "requires": { 42 | "arr-flatten": "^1.0.1" 43 | } 44 | }, 45 | "arr-flatten": { 46 | "version": "1.1.0", 47 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/arr-flatten/-/arr-flatten-1.1.0.tgz", 48 | "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", 49 | "dev": true, 50 | "optional": true 51 | }, 52 | "array-unique": { 53 | "version": "0.2.1", 54 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/array-unique/-/array-unique-0.2.1.tgz", 55 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 56 | "dev": true, 57 | "optional": true 58 | }, 59 | "asap": { 60 | "version": "2.0.6", 61 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/asap/-/asap-2.0.6.tgz", 62 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 63 | }, 64 | "async-each": { 65 | "version": "1.0.1", 66 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/async-each/-/async-each-1.0.1.tgz", 67 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 68 | "dev": true, 69 | "optional": true 70 | }, 71 | "babel-cli": { 72 | "version": "6.26.0", 73 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-cli/-/babel-cli-6.26.0.tgz", 74 | "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", 75 | "dev": true, 76 | "requires": { 77 | "babel-core": "^6.26.0", 78 | "babel-polyfill": "^6.26.0", 79 | "babel-register": "^6.26.0", 80 | "babel-runtime": "^6.26.0", 81 | "chokidar": "^1.6.1", 82 | "commander": "^2.11.0", 83 | "convert-source-map": "^1.5.0", 84 | "fs-readdir-recursive": "^1.0.0", 85 | "glob": "^7.1.2", 86 | "lodash": "^4.17.4", 87 | "output-file-sync": "^1.1.2", 88 | "path-is-absolute": "^1.0.1", 89 | "slash": "^1.0.0", 90 | "source-map": "^0.5.6", 91 | "v8flags": "^2.1.1" 92 | } 93 | }, 94 | "babel-code-frame": { 95 | "version": "6.26.0", 96 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 97 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 98 | "dev": true, 99 | "requires": { 100 | "chalk": "^1.1.3", 101 | "esutils": "^2.0.2", 102 | "js-tokens": "^3.0.2" 103 | } 104 | }, 105 | "babel-core": { 106 | "version": "6.26.0", 107 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-core/-/babel-core-6.26.0.tgz", 108 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 109 | "dev": true, 110 | "requires": { 111 | "babel-code-frame": "^6.26.0", 112 | "babel-generator": "^6.26.0", 113 | "babel-helpers": "^6.24.1", 114 | "babel-messages": "^6.23.0", 115 | "babel-register": "^6.26.0", 116 | "babel-runtime": "^6.26.0", 117 | "babel-template": "^6.26.0", 118 | "babel-traverse": "^6.26.0", 119 | "babel-types": "^6.26.0", 120 | "babylon": "^6.18.0", 121 | "convert-source-map": "^1.5.0", 122 | "debug": "^2.6.8", 123 | "json5": "^0.5.1", 124 | "lodash": "^4.17.4", 125 | "minimatch": "^3.0.4", 126 | "path-is-absolute": "^1.0.1", 127 | "private": "^0.1.7", 128 | "slash": "^1.0.0", 129 | "source-map": "^0.5.6" 130 | } 131 | }, 132 | "babel-generator": { 133 | "version": "6.26.1", 134 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-generator/-/babel-generator-6.26.1.tgz", 135 | "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", 136 | "dev": true, 137 | "requires": { 138 | "babel-messages": "^6.23.0", 139 | "babel-runtime": "^6.26.0", 140 | "babel-types": "^6.26.0", 141 | "detect-indent": "^4.0.0", 142 | "jsesc": "^1.3.0", 143 | "lodash": "^4.17.4", 144 | "source-map": "^0.5.7", 145 | "trim-right": "^1.0.1" 146 | } 147 | }, 148 | "babel-helper-bindify-decorators": { 149 | "version": "6.24.1", 150 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", 151 | "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", 152 | "dev": true, 153 | "requires": { 154 | "babel-runtime": "^6.22.0", 155 | "babel-traverse": "^6.24.1", 156 | "babel-types": "^6.24.1" 157 | } 158 | }, 159 | "babel-helper-builder-binary-assignment-operator-visitor": { 160 | "version": "6.24.1", 161 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 162 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 163 | "dev": true, 164 | "requires": { 165 | "babel-helper-explode-assignable-expression": "^6.24.1", 166 | "babel-runtime": "^6.22.0", 167 | "babel-types": "^6.24.1" 168 | } 169 | }, 170 | "babel-helper-builder-react-jsx": { 171 | "version": "6.26.0", 172 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", 173 | "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", 174 | "dev": true, 175 | "requires": { 176 | "babel-runtime": "^6.26.0", 177 | "babel-types": "^6.26.0", 178 | "esutils": "^2.0.2" 179 | } 180 | }, 181 | "babel-helper-call-delegate": { 182 | "version": "6.24.1", 183 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 184 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 185 | "dev": true, 186 | "requires": { 187 | "babel-helper-hoist-variables": "^6.24.1", 188 | "babel-runtime": "^6.22.0", 189 | "babel-traverse": "^6.24.1", 190 | "babel-types": "^6.24.1" 191 | } 192 | }, 193 | "babel-helper-define-map": { 194 | "version": "6.26.0", 195 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", 196 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", 197 | "dev": true, 198 | "requires": { 199 | "babel-helper-function-name": "^6.24.1", 200 | "babel-runtime": "^6.26.0", 201 | "babel-types": "^6.26.0", 202 | "lodash": "^4.17.4" 203 | } 204 | }, 205 | "babel-helper-explode-assignable-expression": { 206 | "version": "6.24.1", 207 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 208 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 209 | "dev": true, 210 | "requires": { 211 | "babel-runtime": "^6.22.0", 212 | "babel-traverse": "^6.24.1", 213 | "babel-types": "^6.24.1" 214 | } 215 | }, 216 | "babel-helper-explode-class": { 217 | "version": "6.24.1", 218 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", 219 | "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", 220 | "dev": true, 221 | "requires": { 222 | "babel-helper-bindify-decorators": "^6.24.1", 223 | "babel-runtime": "^6.22.0", 224 | "babel-traverse": "^6.24.1", 225 | "babel-types": "^6.24.1" 226 | } 227 | }, 228 | "babel-helper-function-name": { 229 | "version": "6.24.1", 230 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 231 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 232 | "dev": true, 233 | "requires": { 234 | "babel-helper-get-function-arity": "^6.24.1", 235 | "babel-runtime": "^6.22.0", 236 | "babel-template": "^6.24.1", 237 | "babel-traverse": "^6.24.1", 238 | "babel-types": "^6.24.1" 239 | } 240 | }, 241 | "babel-helper-get-function-arity": { 242 | "version": "6.24.1", 243 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 244 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 245 | "dev": true, 246 | "requires": { 247 | "babel-runtime": "^6.22.0", 248 | "babel-types": "^6.24.1" 249 | } 250 | }, 251 | "babel-helper-hoist-variables": { 252 | "version": "6.24.1", 253 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 254 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 255 | "dev": true, 256 | "requires": { 257 | "babel-runtime": "^6.22.0", 258 | "babel-types": "^6.24.1" 259 | } 260 | }, 261 | "babel-helper-optimise-call-expression": { 262 | "version": "6.24.1", 263 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 264 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", 265 | "dev": true, 266 | "requires": { 267 | "babel-runtime": "^6.22.0", 268 | "babel-types": "^6.24.1" 269 | } 270 | }, 271 | "babel-helper-regex": { 272 | "version": "6.26.0", 273 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", 274 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", 275 | "dev": true, 276 | "requires": { 277 | "babel-runtime": "^6.26.0", 278 | "babel-types": "^6.26.0", 279 | "lodash": "^4.17.4" 280 | } 281 | }, 282 | "babel-helper-remap-async-to-generator": { 283 | "version": "6.24.1", 284 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 285 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 286 | "dev": true, 287 | "requires": { 288 | "babel-helper-function-name": "^6.24.1", 289 | "babel-runtime": "^6.22.0", 290 | "babel-template": "^6.24.1", 291 | "babel-traverse": "^6.24.1", 292 | "babel-types": "^6.24.1" 293 | } 294 | }, 295 | "babel-helper-replace-supers": { 296 | "version": "6.24.1", 297 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 298 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", 299 | "dev": true, 300 | "requires": { 301 | "babel-helper-optimise-call-expression": "^6.24.1", 302 | "babel-messages": "^6.23.0", 303 | "babel-runtime": "^6.22.0", 304 | "babel-template": "^6.24.1", 305 | "babel-traverse": "^6.24.1", 306 | "babel-types": "^6.24.1" 307 | } 308 | }, 309 | "babel-helpers": { 310 | "version": "6.24.1", 311 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-helpers/-/babel-helpers-6.24.1.tgz", 312 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 313 | "dev": true, 314 | "requires": { 315 | "babel-runtime": "^6.22.0", 316 | "babel-template": "^6.24.1" 317 | } 318 | }, 319 | "babel-messages": { 320 | "version": "6.23.0", 321 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-messages/-/babel-messages-6.23.0.tgz", 322 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 323 | "dev": true, 324 | "requires": { 325 | "babel-runtime": "^6.22.0" 326 | } 327 | }, 328 | "babel-plugin-check-es2015-constants": { 329 | "version": "6.22.0", 330 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 331 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 332 | "dev": true, 333 | "requires": { 334 | "babel-runtime": "^6.22.0" 335 | } 336 | }, 337 | "babel-plugin-syntax-async-functions": { 338 | "version": "6.13.0", 339 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 340 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 341 | "dev": true 342 | }, 343 | "babel-plugin-syntax-async-generators": { 344 | "version": "6.13.0", 345 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", 346 | "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", 347 | "dev": true 348 | }, 349 | "babel-plugin-syntax-class-properties": { 350 | "version": "6.13.0", 351 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", 352 | "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", 353 | "dev": true 354 | }, 355 | "babel-plugin-syntax-decorators": { 356 | "version": "6.13.0", 357 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", 358 | "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", 359 | "dev": true 360 | }, 361 | "babel-plugin-syntax-dynamic-import": { 362 | "version": "6.18.0", 363 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", 364 | "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", 365 | "dev": true 366 | }, 367 | "babel-plugin-syntax-exponentiation-operator": { 368 | "version": "6.13.0", 369 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 370 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 371 | "dev": true 372 | }, 373 | "babel-plugin-syntax-flow": { 374 | "version": "6.18.0", 375 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", 376 | "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", 377 | "dev": true 378 | }, 379 | "babel-plugin-syntax-jsx": { 380 | "version": "6.18.0", 381 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", 382 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", 383 | "dev": true 384 | }, 385 | "babel-plugin-syntax-object-rest-spread": { 386 | "version": "6.13.0", 387 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", 388 | "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", 389 | "dev": true 390 | }, 391 | "babel-plugin-syntax-trailing-function-commas": { 392 | "version": "6.22.0", 393 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 394 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 395 | "dev": true 396 | }, 397 | "babel-plugin-transform-async-generator-functions": { 398 | "version": "6.24.1", 399 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", 400 | "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", 401 | "dev": true, 402 | "requires": { 403 | "babel-helper-remap-async-to-generator": "^6.24.1", 404 | "babel-plugin-syntax-async-generators": "^6.5.0", 405 | "babel-runtime": "^6.22.0" 406 | } 407 | }, 408 | "babel-plugin-transform-async-to-generator": { 409 | "version": "6.24.1", 410 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 411 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 412 | "dev": true, 413 | "requires": { 414 | "babel-helper-remap-async-to-generator": "^6.24.1", 415 | "babel-plugin-syntax-async-functions": "^6.8.0", 416 | "babel-runtime": "^6.22.0" 417 | } 418 | }, 419 | "babel-plugin-transform-class-properties": { 420 | "version": "6.24.1", 421 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", 422 | "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", 423 | "dev": true, 424 | "requires": { 425 | "babel-helper-function-name": "^6.24.1", 426 | "babel-plugin-syntax-class-properties": "^6.8.0", 427 | "babel-runtime": "^6.22.0", 428 | "babel-template": "^6.24.1" 429 | } 430 | }, 431 | "babel-plugin-transform-decorators": { 432 | "version": "6.24.1", 433 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", 434 | "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", 435 | "dev": true, 436 | "requires": { 437 | "babel-helper-explode-class": "^6.24.1", 438 | "babel-plugin-syntax-decorators": "^6.13.0", 439 | "babel-runtime": "^6.22.0", 440 | "babel-template": "^6.24.1", 441 | "babel-types": "^6.24.1" 442 | } 443 | }, 444 | "babel-plugin-transform-es2015-arrow-functions": { 445 | "version": "6.22.0", 446 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 447 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", 448 | "dev": true, 449 | "requires": { 450 | "babel-runtime": "^6.22.0" 451 | } 452 | }, 453 | "babel-plugin-transform-es2015-block-scoped-functions": { 454 | "version": "6.22.0", 455 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 456 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", 457 | "dev": true, 458 | "requires": { 459 | "babel-runtime": "^6.22.0" 460 | } 461 | }, 462 | "babel-plugin-transform-es2015-block-scoping": { 463 | "version": "6.26.0", 464 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", 465 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", 466 | "dev": true, 467 | "requires": { 468 | "babel-runtime": "^6.26.0", 469 | "babel-template": "^6.26.0", 470 | "babel-traverse": "^6.26.0", 471 | "babel-types": "^6.26.0", 472 | "lodash": "^4.17.4" 473 | } 474 | }, 475 | "babel-plugin-transform-es2015-classes": { 476 | "version": "6.24.1", 477 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 478 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", 479 | "dev": true, 480 | "requires": { 481 | "babel-helper-define-map": "^6.24.1", 482 | "babel-helper-function-name": "^6.24.1", 483 | "babel-helper-optimise-call-expression": "^6.24.1", 484 | "babel-helper-replace-supers": "^6.24.1", 485 | "babel-messages": "^6.23.0", 486 | "babel-runtime": "^6.22.0", 487 | "babel-template": "^6.24.1", 488 | "babel-traverse": "^6.24.1", 489 | "babel-types": "^6.24.1" 490 | } 491 | }, 492 | "babel-plugin-transform-es2015-computed-properties": { 493 | "version": "6.24.1", 494 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 495 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", 496 | "dev": true, 497 | "requires": { 498 | "babel-runtime": "^6.22.0", 499 | "babel-template": "^6.24.1" 500 | } 501 | }, 502 | "babel-plugin-transform-es2015-destructuring": { 503 | "version": "6.23.0", 504 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 505 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 506 | "dev": true, 507 | "requires": { 508 | "babel-runtime": "^6.22.0" 509 | } 510 | }, 511 | "babel-plugin-transform-es2015-duplicate-keys": { 512 | "version": "6.24.1", 513 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 514 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", 515 | "dev": true, 516 | "requires": { 517 | "babel-runtime": "^6.22.0", 518 | "babel-types": "^6.24.1" 519 | } 520 | }, 521 | "babel-plugin-transform-es2015-for-of": { 522 | "version": "6.23.0", 523 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 524 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", 525 | "dev": true, 526 | "requires": { 527 | "babel-runtime": "^6.22.0" 528 | } 529 | }, 530 | "babel-plugin-transform-es2015-function-name": { 531 | "version": "6.24.1", 532 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 533 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 534 | "dev": true, 535 | "requires": { 536 | "babel-helper-function-name": "^6.24.1", 537 | "babel-runtime": "^6.22.0", 538 | "babel-types": "^6.24.1" 539 | } 540 | }, 541 | "babel-plugin-transform-es2015-literals": { 542 | "version": "6.22.0", 543 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 544 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", 545 | "dev": true, 546 | "requires": { 547 | "babel-runtime": "^6.22.0" 548 | } 549 | }, 550 | "babel-plugin-transform-es2015-modules-amd": { 551 | "version": "6.24.1", 552 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 553 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", 554 | "dev": true, 555 | "requires": { 556 | "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", 557 | "babel-runtime": "^6.22.0", 558 | "babel-template": "^6.24.1" 559 | } 560 | }, 561 | "babel-plugin-transform-es2015-modules-commonjs": { 562 | "version": "6.26.0", 563 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", 564 | "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", 565 | "dev": true, 566 | "requires": { 567 | "babel-plugin-transform-strict-mode": "^6.24.1", 568 | "babel-runtime": "^6.26.0", 569 | "babel-template": "^6.26.0", 570 | "babel-types": "^6.26.0" 571 | } 572 | }, 573 | "babel-plugin-transform-es2015-modules-systemjs": { 574 | "version": "6.24.1", 575 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 576 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", 577 | "dev": true, 578 | "requires": { 579 | "babel-helper-hoist-variables": "^6.24.1", 580 | "babel-runtime": "^6.22.0", 581 | "babel-template": "^6.24.1" 582 | } 583 | }, 584 | "babel-plugin-transform-es2015-modules-umd": { 585 | "version": "6.24.1", 586 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 587 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", 588 | "dev": true, 589 | "requires": { 590 | "babel-plugin-transform-es2015-modules-amd": "^6.24.1", 591 | "babel-runtime": "^6.22.0", 592 | "babel-template": "^6.24.1" 593 | } 594 | }, 595 | "babel-plugin-transform-es2015-object-super": { 596 | "version": "6.24.1", 597 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 598 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", 599 | "dev": true, 600 | "requires": { 601 | "babel-helper-replace-supers": "^6.24.1", 602 | "babel-runtime": "^6.22.0" 603 | } 604 | }, 605 | "babel-plugin-transform-es2015-parameters": { 606 | "version": "6.24.1", 607 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 608 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 609 | "dev": true, 610 | "requires": { 611 | "babel-helper-call-delegate": "^6.24.1", 612 | "babel-helper-get-function-arity": "^6.24.1", 613 | "babel-runtime": "^6.22.0", 614 | "babel-template": "^6.24.1", 615 | "babel-traverse": "^6.24.1", 616 | "babel-types": "^6.24.1" 617 | } 618 | }, 619 | "babel-plugin-transform-es2015-shorthand-properties": { 620 | "version": "6.24.1", 621 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 622 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", 623 | "dev": true, 624 | "requires": { 625 | "babel-runtime": "^6.22.0", 626 | "babel-types": "^6.24.1" 627 | } 628 | }, 629 | "babel-plugin-transform-es2015-spread": { 630 | "version": "6.22.0", 631 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 632 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 633 | "dev": true, 634 | "requires": { 635 | "babel-runtime": "^6.22.0" 636 | } 637 | }, 638 | "babel-plugin-transform-es2015-sticky-regex": { 639 | "version": "6.24.1", 640 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 641 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 642 | "dev": true, 643 | "requires": { 644 | "babel-helper-regex": "^6.24.1", 645 | "babel-runtime": "^6.22.0", 646 | "babel-types": "^6.24.1" 647 | } 648 | }, 649 | "babel-plugin-transform-es2015-template-literals": { 650 | "version": "6.22.0", 651 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 652 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", 653 | "dev": true, 654 | "requires": { 655 | "babel-runtime": "^6.22.0" 656 | } 657 | }, 658 | "babel-plugin-transform-es2015-typeof-symbol": { 659 | "version": "6.23.0", 660 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 661 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", 662 | "dev": true, 663 | "requires": { 664 | "babel-runtime": "^6.22.0" 665 | } 666 | }, 667 | "babel-plugin-transform-es2015-unicode-regex": { 668 | "version": "6.24.1", 669 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 670 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 671 | "dev": true, 672 | "requires": { 673 | "babel-helper-regex": "^6.24.1", 674 | "babel-runtime": "^6.22.0", 675 | "regexpu-core": "^2.0.0" 676 | } 677 | }, 678 | "babel-plugin-transform-exponentiation-operator": { 679 | "version": "6.24.1", 680 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 681 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 682 | "dev": true, 683 | "requires": { 684 | "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", 685 | "babel-plugin-syntax-exponentiation-operator": "^6.8.0", 686 | "babel-runtime": "^6.22.0" 687 | } 688 | }, 689 | "babel-plugin-transform-flow-strip-types": { 690 | "version": "6.22.0", 691 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", 692 | "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", 693 | "dev": true, 694 | "requires": { 695 | "babel-plugin-syntax-flow": "^6.18.0", 696 | "babel-runtime": "^6.22.0" 697 | } 698 | }, 699 | "babel-plugin-transform-object-rest-spread": { 700 | "version": "6.26.0", 701 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", 702 | "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", 703 | "dev": true, 704 | "requires": { 705 | "babel-plugin-syntax-object-rest-spread": "^6.8.0", 706 | "babel-runtime": "^6.26.0" 707 | } 708 | }, 709 | "babel-plugin-transform-react-display-name": { 710 | "version": "6.25.0", 711 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", 712 | "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", 713 | "dev": true, 714 | "requires": { 715 | "babel-runtime": "^6.22.0" 716 | } 717 | }, 718 | "babel-plugin-transform-react-jsx": { 719 | "version": "6.24.1", 720 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", 721 | "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", 722 | "dev": true, 723 | "requires": { 724 | "babel-helper-builder-react-jsx": "^6.24.1", 725 | "babel-plugin-syntax-jsx": "^6.8.0", 726 | "babel-runtime": "^6.22.0" 727 | } 728 | }, 729 | "babel-plugin-transform-react-jsx-self": { 730 | "version": "6.22.0", 731 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", 732 | "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", 733 | "dev": true, 734 | "requires": { 735 | "babel-plugin-syntax-jsx": "^6.8.0", 736 | "babel-runtime": "^6.22.0" 737 | } 738 | }, 739 | "babel-plugin-transform-react-jsx-source": { 740 | "version": "6.22.0", 741 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", 742 | "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", 743 | "dev": true, 744 | "requires": { 745 | "babel-plugin-syntax-jsx": "^6.8.0", 746 | "babel-runtime": "^6.22.0" 747 | } 748 | }, 749 | "babel-plugin-transform-regenerator": { 750 | "version": "6.26.0", 751 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", 752 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", 753 | "dev": true, 754 | "requires": { 755 | "regenerator-transform": "^0.10.0" 756 | } 757 | }, 758 | "babel-plugin-transform-strict-mode": { 759 | "version": "6.24.1", 760 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 761 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 762 | "dev": true, 763 | "requires": { 764 | "babel-runtime": "^6.22.0", 765 | "babel-types": "^6.24.1" 766 | } 767 | }, 768 | "babel-polyfill": { 769 | "version": "6.26.0", 770 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-polyfill/-/babel-polyfill-6.26.0.tgz", 771 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", 772 | "dev": true, 773 | "requires": { 774 | "babel-runtime": "^6.26.0", 775 | "core-js": "^2.5.0", 776 | "regenerator-runtime": "^0.10.5" 777 | }, 778 | "dependencies": { 779 | "regenerator-runtime": { 780 | "version": "0.10.5", 781 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 782 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", 783 | "dev": true 784 | } 785 | } 786 | }, 787 | "babel-preset-env": { 788 | "version": "1.6.1", 789 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-preset-env/-/babel-preset-env-1.6.1.tgz", 790 | "integrity": "sha1-oYtWTMm5r99KrleuPBsNmRiOb0g=", 791 | "dev": true, 792 | "requires": { 793 | "babel-plugin-check-es2015-constants": "^6.22.0", 794 | "babel-plugin-syntax-trailing-function-commas": "^6.22.0", 795 | "babel-plugin-transform-async-to-generator": "^6.22.0", 796 | "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", 797 | "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", 798 | "babel-plugin-transform-es2015-block-scoping": "^6.23.0", 799 | "babel-plugin-transform-es2015-classes": "^6.23.0", 800 | "babel-plugin-transform-es2015-computed-properties": "^6.22.0", 801 | "babel-plugin-transform-es2015-destructuring": "^6.23.0", 802 | "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", 803 | "babel-plugin-transform-es2015-for-of": "^6.23.0", 804 | "babel-plugin-transform-es2015-function-name": "^6.22.0", 805 | "babel-plugin-transform-es2015-literals": "^6.22.0", 806 | "babel-plugin-transform-es2015-modules-amd": "^6.22.0", 807 | "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", 808 | "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", 809 | "babel-plugin-transform-es2015-modules-umd": "^6.23.0", 810 | "babel-plugin-transform-es2015-object-super": "^6.22.0", 811 | "babel-plugin-transform-es2015-parameters": "^6.23.0", 812 | "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", 813 | "babel-plugin-transform-es2015-spread": "^6.22.0", 814 | "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", 815 | "babel-plugin-transform-es2015-template-literals": "^6.22.0", 816 | "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", 817 | "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", 818 | "babel-plugin-transform-exponentiation-operator": "^6.22.0", 819 | "babel-plugin-transform-regenerator": "^6.22.0", 820 | "browserslist": "^2.1.2", 821 | "invariant": "^2.2.2", 822 | "semver": "^5.3.0" 823 | } 824 | }, 825 | "babel-preset-flow": { 826 | "version": "6.23.0", 827 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", 828 | "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", 829 | "dev": true, 830 | "requires": { 831 | "babel-plugin-transform-flow-strip-types": "^6.22.0" 832 | } 833 | }, 834 | "babel-preset-react": { 835 | "version": "6.24.1", 836 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-preset-react/-/babel-preset-react-6.24.1.tgz", 837 | "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", 838 | "dev": true, 839 | "requires": { 840 | "babel-plugin-syntax-jsx": "^6.3.13", 841 | "babel-plugin-transform-react-display-name": "^6.23.0", 842 | "babel-plugin-transform-react-jsx": "^6.24.1", 843 | "babel-plugin-transform-react-jsx-self": "^6.22.0", 844 | "babel-plugin-transform-react-jsx-source": "^6.22.0", 845 | "babel-preset-flow": "^6.23.0" 846 | } 847 | }, 848 | "babel-preset-stage-2": { 849 | "version": "6.24.1", 850 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", 851 | "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", 852 | "dev": true, 853 | "requires": { 854 | "babel-plugin-syntax-dynamic-import": "^6.18.0", 855 | "babel-plugin-transform-class-properties": "^6.24.1", 856 | "babel-plugin-transform-decorators": "^6.24.1", 857 | "babel-preset-stage-3": "^6.24.1" 858 | } 859 | }, 860 | "babel-preset-stage-3": { 861 | "version": "6.24.1", 862 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", 863 | "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", 864 | "dev": true, 865 | "requires": { 866 | "babel-plugin-syntax-trailing-function-commas": "^6.22.0", 867 | "babel-plugin-transform-async-generator-functions": "^6.24.1", 868 | "babel-plugin-transform-async-to-generator": "^6.24.1", 869 | "babel-plugin-transform-exponentiation-operator": "^6.24.1", 870 | "babel-plugin-transform-object-rest-spread": "^6.22.0" 871 | } 872 | }, 873 | "babel-register": { 874 | "version": "6.26.0", 875 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-register/-/babel-register-6.26.0.tgz", 876 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 877 | "dev": true, 878 | "requires": { 879 | "babel-core": "^6.26.0", 880 | "babel-runtime": "^6.26.0", 881 | "core-js": "^2.5.0", 882 | "home-or-tmp": "^2.0.0", 883 | "lodash": "^4.17.4", 884 | "mkdirp": "^0.5.1", 885 | "source-map-support": "^0.4.15" 886 | } 887 | }, 888 | "babel-runtime": { 889 | "version": "6.26.0", 890 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-runtime/-/babel-runtime-6.26.0.tgz", 891 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 892 | "dev": true, 893 | "requires": { 894 | "core-js": "^2.4.0", 895 | "regenerator-runtime": "^0.11.0" 896 | } 897 | }, 898 | "babel-template": { 899 | "version": "6.26.0", 900 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-template/-/babel-template-6.26.0.tgz", 901 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 902 | "dev": true, 903 | "requires": { 904 | "babel-runtime": "^6.26.0", 905 | "babel-traverse": "^6.26.0", 906 | "babel-types": "^6.26.0", 907 | "babylon": "^6.18.0", 908 | "lodash": "^4.17.4" 909 | } 910 | }, 911 | "babel-traverse": { 912 | "version": "6.26.0", 913 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-traverse/-/babel-traverse-6.26.0.tgz", 914 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 915 | "dev": true, 916 | "requires": { 917 | "babel-code-frame": "^6.26.0", 918 | "babel-messages": "^6.23.0", 919 | "babel-runtime": "^6.26.0", 920 | "babel-types": "^6.26.0", 921 | "babylon": "^6.18.0", 922 | "debug": "^2.6.8", 923 | "globals": "^9.18.0", 924 | "invariant": "^2.2.2", 925 | "lodash": "^4.17.4" 926 | } 927 | }, 928 | "babel-types": { 929 | "version": "6.26.0", 930 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babel-types/-/babel-types-6.26.0.tgz", 931 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 932 | "dev": true, 933 | "requires": { 934 | "babel-runtime": "^6.26.0", 935 | "esutils": "^2.0.2", 936 | "lodash": "^4.17.4", 937 | "to-fast-properties": "^1.0.3" 938 | } 939 | }, 940 | "babylon": { 941 | "version": "6.18.0", 942 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/babylon/-/babylon-6.18.0.tgz", 943 | "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", 944 | "dev": true 945 | }, 946 | "balanced-match": { 947 | "version": "1.0.0", 948 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/balanced-match/-/balanced-match-1.0.0.tgz", 949 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 950 | "dev": true 951 | }, 952 | "binary-extensions": { 953 | "version": "1.11.0", 954 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/binary-extensions/-/binary-extensions-1.11.0.tgz", 955 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", 956 | "dev": true, 957 | "optional": true 958 | }, 959 | "brace-expansion": { 960 | "version": "1.1.11", 961 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/brace-expansion/-/brace-expansion-1.1.11.tgz", 962 | "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", 963 | "dev": true, 964 | "requires": { 965 | "balanced-match": "^1.0.0", 966 | "concat-map": "0.0.1" 967 | } 968 | }, 969 | "braces": { 970 | "version": "1.8.5", 971 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/braces/-/braces-1.8.5.tgz", 972 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 973 | "dev": true, 974 | "optional": true, 975 | "requires": { 976 | "expand-range": "^1.8.1", 977 | "preserve": "^0.2.0", 978 | "repeat-element": "^1.1.2" 979 | } 980 | }, 981 | "browserslist": { 982 | "version": "2.11.3", 983 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/browserslist/-/browserslist-2.11.3.tgz", 984 | "integrity": "sha1-/jYWeu0bvN5IJ+v+cTR6LMcLmbI=", 985 | "dev": true, 986 | "requires": { 987 | "caniuse-lite": "^1.0.30000792", 988 | "electron-to-chromium": "^1.3.30" 989 | } 990 | }, 991 | "caniuse-lite": { 992 | "version": "1.0.30000815", 993 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz", 994 | "integrity": "sha1-OkJY5oUDYhha2xGw11SkhALTW/Y=", 995 | "dev": true 996 | }, 997 | "chalk": { 998 | "version": "1.1.3", 999 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/chalk/-/chalk-1.1.3.tgz", 1000 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1001 | "dev": true, 1002 | "requires": { 1003 | "ansi-styles": "^2.2.1", 1004 | "escape-string-regexp": "^1.0.2", 1005 | "has-ansi": "^2.0.0", 1006 | "strip-ansi": "^3.0.0", 1007 | "supports-color": "^2.0.0" 1008 | } 1009 | }, 1010 | "chokidar": { 1011 | "version": "1.7.0", 1012 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/chokidar/-/chokidar-1.7.0.tgz", 1013 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 1014 | "dev": true, 1015 | "optional": true, 1016 | "requires": { 1017 | "anymatch": "^1.3.0", 1018 | "async-each": "^1.0.0", 1019 | "fsevents": "^1.0.0", 1020 | "glob-parent": "^2.0.0", 1021 | "inherits": "^2.0.1", 1022 | "is-binary-path": "^1.0.0", 1023 | "is-glob": "^2.0.0", 1024 | "path-is-absolute": "^1.0.0", 1025 | "readdirp": "^2.0.0" 1026 | } 1027 | }, 1028 | "commander": { 1029 | "version": "2.15.0", 1030 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/commander/-/commander-2.15.0.tgz", 1031 | "integrity": "sha1-rSojocOwNuOSRpuAEs7GsztMEyI=", 1032 | "dev": true 1033 | }, 1034 | "concat-map": { 1035 | "version": "0.0.1", 1036 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/concat-map/-/concat-map-0.0.1.tgz", 1037 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1038 | "dev": true 1039 | }, 1040 | "convert-source-map": { 1041 | "version": "1.5.1", 1042 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/convert-source-map/-/convert-source-map-1.5.1.tgz", 1043 | "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", 1044 | "dev": true 1045 | }, 1046 | "core-js": { 1047 | "version": "2.5.3", 1048 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/core-js/-/core-js-2.5.3.tgz", 1049 | "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", 1050 | "dev": true 1051 | }, 1052 | "core-util-is": { 1053 | "version": "1.0.2", 1054 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/core-util-is/-/core-util-is-1.0.2.tgz", 1055 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1056 | "dev": true, 1057 | "optional": true 1058 | }, 1059 | "debug": { 1060 | "version": "2.6.9", 1061 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/debug/-/debug-2.6.9.tgz", 1062 | "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 1063 | "dev": true, 1064 | "requires": { 1065 | "ms": "2.0.0" 1066 | } 1067 | }, 1068 | "detect-indent": { 1069 | "version": "4.0.0", 1070 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/detect-indent/-/detect-indent-4.0.0.tgz", 1071 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 1072 | "dev": true, 1073 | "requires": { 1074 | "repeating": "^2.0.0" 1075 | } 1076 | }, 1077 | "electron-to-chromium": { 1078 | "version": "1.3.39", 1079 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/electron-to-chromium/-/electron-to-chromium-1.3.39.tgz", 1080 | "integrity": "sha1-16RpZAnKCZXidQFW2mEsIhr62E0=", 1081 | "dev": true 1082 | }, 1083 | "encoding": { 1084 | "version": "0.1.12", 1085 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/encoding/-/encoding-0.1.12.tgz", 1086 | "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", 1087 | "requires": { 1088 | "iconv-lite": "~0.4.13" 1089 | } 1090 | }, 1091 | "escape-string-regexp": { 1092 | "version": "1.0.5", 1093 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1094 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1095 | "dev": true 1096 | }, 1097 | "esutils": { 1098 | "version": "2.0.2", 1099 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/esutils/-/esutils-2.0.2.tgz", 1100 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1101 | "dev": true 1102 | }, 1103 | "expand-brackets": { 1104 | "version": "0.1.5", 1105 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/expand-brackets/-/expand-brackets-0.1.5.tgz", 1106 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 1107 | "dev": true, 1108 | "optional": true, 1109 | "requires": { 1110 | "is-posix-bracket": "^0.1.0" 1111 | } 1112 | }, 1113 | "expand-range": { 1114 | "version": "1.8.2", 1115 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/expand-range/-/expand-range-1.8.2.tgz", 1116 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 1117 | "dev": true, 1118 | "optional": true, 1119 | "requires": { 1120 | "fill-range": "^2.1.0" 1121 | } 1122 | }, 1123 | "extglob": { 1124 | "version": "0.3.2", 1125 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/extglob/-/extglob-0.3.2.tgz", 1126 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 1127 | "dev": true, 1128 | "optional": true, 1129 | "requires": { 1130 | "is-extglob": "^1.0.0" 1131 | } 1132 | }, 1133 | "fbjs": { 1134 | "version": "0.8.16", 1135 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/fbjs/-/fbjs-0.8.16.tgz", 1136 | "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", 1137 | "requires": { 1138 | "core-js": "^1.0.0", 1139 | "isomorphic-fetch": "^2.1.1", 1140 | "loose-envify": "^1.0.0", 1141 | "object-assign": "^4.1.0", 1142 | "promise": "^7.1.1", 1143 | "setimmediate": "^1.0.5", 1144 | "ua-parser-js": "^0.7.9" 1145 | }, 1146 | "dependencies": { 1147 | "core-js": { 1148 | "version": "1.2.7", 1149 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/core-js/-/core-js-1.2.7.tgz", 1150 | "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" 1151 | } 1152 | } 1153 | }, 1154 | "filename-regex": { 1155 | "version": "2.0.1", 1156 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/filename-regex/-/filename-regex-2.0.1.tgz", 1157 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 1158 | "dev": true, 1159 | "optional": true 1160 | }, 1161 | "fill-range": { 1162 | "version": "2.2.4", 1163 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", 1164 | "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", 1165 | "dev": true, 1166 | "optional": true, 1167 | "requires": { 1168 | "is-number": "^2.1.0", 1169 | "isobject": "^2.0.0", 1170 | "randomatic": "^3.0.0", 1171 | "repeat-element": "^1.1.2", 1172 | "repeat-string": "^1.5.2" 1173 | } 1174 | }, 1175 | "for-in": { 1176 | "version": "1.0.2", 1177 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/for-in/-/for-in-1.0.2.tgz", 1178 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1179 | "dev": true, 1180 | "optional": true 1181 | }, 1182 | "for-own": { 1183 | "version": "0.1.5", 1184 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/for-own/-/for-own-0.1.5.tgz", 1185 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 1186 | "dev": true, 1187 | "optional": true, 1188 | "requires": { 1189 | "for-in": "^1.0.1" 1190 | } 1191 | }, 1192 | "fs-readdir-recursive": { 1193 | "version": "1.1.0", 1194 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", 1195 | "integrity": "sha1-4y/AMKLM7kSmtTcTCNpUvgs5fSc=", 1196 | "dev": true 1197 | }, 1198 | "fs.realpath": { 1199 | "version": "1.0.0", 1200 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/fs.realpath/-/fs.realpath-1.0.0.tgz", 1201 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1202 | "dev": true 1203 | }, 1204 | "fsevents": { 1205 | "version": "1.1.3", 1206 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/fsevents/-/fsevents-1.1.3.tgz", 1207 | "integrity": "sha1-EfgjGPX+e7LNIpZaEI6TBiCCFtg=", 1208 | "dev": true, 1209 | "optional": true, 1210 | "requires": { 1211 | "nan": "^2.3.0", 1212 | "node-pre-gyp": "^0.6.39" 1213 | }, 1214 | "dependencies": { 1215 | "abbrev": { 1216 | "version": "1.1.0", 1217 | "bundled": true, 1218 | "dev": true, 1219 | "optional": true 1220 | }, 1221 | "ajv": { 1222 | "version": "4.11.8", 1223 | "bundled": true, 1224 | "dev": true, 1225 | "optional": true, 1226 | "requires": { 1227 | "co": "^4.6.0", 1228 | "json-stable-stringify": "^1.0.1" 1229 | } 1230 | }, 1231 | "ansi-regex": { 1232 | "version": "2.1.1", 1233 | "bundled": true, 1234 | "dev": true, 1235 | "optional": true 1236 | }, 1237 | "aproba": { 1238 | "version": "1.1.1", 1239 | "bundled": true, 1240 | "dev": true, 1241 | "optional": true 1242 | }, 1243 | "are-we-there-yet": { 1244 | "version": "1.1.4", 1245 | "bundled": true, 1246 | "dev": true, 1247 | "optional": true, 1248 | "requires": { 1249 | "delegates": "^1.0.0", 1250 | "readable-stream": "^2.0.6" 1251 | } 1252 | }, 1253 | "asn1": { 1254 | "version": "0.2.3", 1255 | "bundled": true, 1256 | "dev": true, 1257 | "optional": true 1258 | }, 1259 | "assert-plus": { 1260 | "version": "0.2.0", 1261 | "bundled": true, 1262 | "dev": true, 1263 | "optional": true 1264 | }, 1265 | "asynckit": { 1266 | "version": "0.4.0", 1267 | "bundled": true, 1268 | "dev": true, 1269 | "optional": true 1270 | }, 1271 | "aws-sign2": { 1272 | "version": "0.6.0", 1273 | "bundled": true, 1274 | "dev": true, 1275 | "optional": true 1276 | }, 1277 | "aws4": { 1278 | "version": "1.6.0", 1279 | "bundled": true, 1280 | "dev": true, 1281 | "optional": true 1282 | }, 1283 | "balanced-match": { 1284 | "version": "0.4.2", 1285 | "bundled": true, 1286 | "dev": true, 1287 | "optional": true 1288 | }, 1289 | "bcrypt-pbkdf": { 1290 | "version": "1.0.1", 1291 | "bundled": true, 1292 | "dev": true, 1293 | "optional": true, 1294 | "requires": { 1295 | "tweetnacl": "^0.14.3" 1296 | } 1297 | }, 1298 | "block-stream": { 1299 | "version": "0.0.9", 1300 | "bundled": true, 1301 | "dev": true, 1302 | "optional": true, 1303 | "requires": { 1304 | "inherits": "~2.0.0" 1305 | } 1306 | }, 1307 | "boom": { 1308 | "version": "2.10.1", 1309 | "bundled": true, 1310 | "dev": true, 1311 | "optional": true, 1312 | "requires": { 1313 | "hoek": "2.x.x" 1314 | } 1315 | }, 1316 | "brace-expansion": { 1317 | "version": "1.1.7", 1318 | "bundled": true, 1319 | "dev": true, 1320 | "optional": true, 1321 | "requires": { 1322 | "balanced-match": "^0.4.1", 1323 | "concat-map": "0.0.1" 1324 | } 1325 | }, 1326 | "buffer-shims": { 1327 | "version": "1.0.0", 1328 | "bundled": true, 1329 | "dev": true, 1330 | "optional": true 1331 | }, 1332 | "caseless": { 1333 | "version": "0.12.0", 1334 | "bundled": true, 1335 | "dev": true, 1336 | "optional": true 1337 | }, 1338 | "co": { 1339 | "version": "4.6.0", 1340 | "bundled": true, 1341 | "dev": true, 1342 | "optional": true 1343 | }, 1344 | "code-point-at": { 1345 | "version": "1.1.0", 1346 | "bundled": true, 1347 | "dev": true, 1348 | "optional": true 1349 | }, 1350 | "combined-stream": { 1351 | "version": "1.0.5", 1352 | "bundled": true, 1353 | "dev": true, 1354 | "optional": true, 1355 | "requires": { 1356 | "delayed-stream": "~1.0.0" 1357 | } 1358 | }, 1359 | "concat-map": { 1360 | "version": "0.0.1", 1361 | "bundled": true, 1362 | "dev": true, 1363 | "optional": true 1364 | }, 1365 | "console-control-strings": { 1366 | "version": "1.1.0", 1367 | "bundled": true, 1368 | "dev": true, 1369 | "optional": true 1370 | }, 1371 | "core-util-is": { 1372 | "version": "1.0.2", 1373 | "bundled": true, 1374 | "dev": true, 1375 | "optional": true 1376 | }, 1377 | "cryptiles": { 1378 | "version": "2.0.5", 1379 | "bundled": true, 1380 | "dev": true, 1381 | "optional": true, 1382 | "requires": { 1383 | "boom": "2.x.x" 1384 | } 1385 | }, 1386 | "dashdash": { 1387 | "version": "1.14.1", 1388 | "bundled": true, 1389 | "dev": true, 1390 | "optional": true, 1391 | "requires": { 1392 | "assert-plus": "^1.0.0" 1393 | }, 1394 | "dependencies": { 1395 | "assert-plus": { 1396 | "version": "1.0.0", 1397 | "bundled": true, 1398 | "dev": true, 1399 | "optional": true 1400 | } 1401 | } 1402 | }, 1403 | "debug": { 1404 | "version": "2.6.8", 1405 | "bundled": true, 1406 | "dev": true, 1407 | "optional": true, 1408 | "requires": { 1409 | "ms": "2.0.0" 1410 | } 1411 | }, 1412 | "deep-extend": { 1413 | "version": "0.4.2", 1414 | "bundled": true, 1415 | "dev": true, 1416 | "optional": true 1417 | }, 1418 | "delayed-stream": { 1419 | "version": "1.0.0", 1420 | "bundled": true, 1421 | "dev": true, 1422 | "optional": true 1423 | }, 1424 | "delegates": { 1425 | "version": "1.0.0", 1426 | "bundled": true, 1427 | "dev": true, 1428 | "optional": true 1429 | }, 1430 | "detect-libc": { 1431 | "version": "1.0.2", 1432 | "bundled": true, 1433 | "dev": true, 1434 | "optional": true 1435 | }, 1436 | "ecc-jsbn": { 1437 | "version": "0.1.1", 1438 | "bundled": true, 1439 | "dev": true, 1440 | "optional": true, 1441 | "requires": { 1442 | "jsbn": "~0.1.0" 1443 | } 1444 | }, 1445 | "extend": { 1446 | "version": "3.0.1", 1447 | "bundled": true, 1448 | "dev": true, 1449 | "optional": true 1450 | }, 1451 | "extsprintf": { 1452 | "version": "1.0.2", 1453 | "bundled": true, 1454 | "dev": true, 1455 | "optional": true 1456 | }, 1457 | "forever-agent": { 1458 | "version": "0.6.1", 1459 | "bundled": true, 1460 | "dev": true, 1461 | "optional": true 1462 | }, 1463 | "form-data": { 1464 | "version": "2.1.4", 1465 | "bundled": true, 1466 | "dev": true, 1467 | "optional": true, 1468 | "requires": { 1469 | "asynckit": "^0.4.0", 1470 | "combined-stream": "^1.0.5", 1471 | "mime-types": "^2.1.12" 1472 | } 1473 | }, 1474 | "fs.realpath": { 1475 | "version": "1.0.0", 1476 | "bundled": true, 1477 | "dev": true, 1478 | "optional": true 1479 | }, 1480 | "fstream": { 1481 | "version": "1.0.11", 1482 | "bundled": true, 1483 | "dev": true, 1484 | "optional": true, 1485 | "requires": { 1486 | "graceful-fs": "^4.1.2", 1487 | "inherits": "~2.0.0", 1488 | "mkdirp": ">=0.5 0", 1489 | "rimraf": "2" 1490 | } 1491 | }, 1492 | "fstream-ignore": { 1493 | "version": "1.0.5", 1494 | "bundled": true, 1495 | "dev": true, 1496 | "optional": true, 1497 | "requires": { 1498 | "fstream": "^1.0.0", 1499 | "inherits": "2", 1500 | "minimatch": "^3.0.0" 1501 | } 1502 | }, 1503 | "gauge": { 1504 | "version": "2.7.4", 1505 | "bundled": true, 1506 | "dev": true, 1507 | "optional": true, 1508 | "requires": { 1509 | "aproba": "^1.0.3", 1510 | "console-control-strings": "^1.0.0", 1511 | "has-unicode": "^2.0.0", 1512 | "object-assign": "^4.1.0", 1513 | "signal-exit": "^3.0.0", 1514 | "string-width": "^1.0.1", 1515 | "strip-ansi": "^3.0.1", 1516 | "wide-align": "^1.1.0" 1517 | } 1518 | }, 1519 | "getpass": { 1520 | "version": "0.1.7", 1521 | "bundled": true, 1522 | "dev": true, 1523 | "optional": true, 1524 | "requires": { 1525 | "assert-plus": "^1.0.0" 1526 | }, 1527 | "dependencies": { 1528 | "assert-plus": { 1529 | "version": "1.0.0", 1530 | "bundled": true, 1531 | "dev": true, 1532 | "optional": true 1533 | } 1534 | } 1535 | }, 1536 | "glob": { 1537 | "version": "7.1.2", 1538 | "bundled": true, 1539 | "dev": true, 1540 | "optional": true, 1541 | "requires": { 1542 | "fs.realpath": "^1.0.0", 1543 | "inflight": "^1.0.4", 1544 | "inherits": "2", 1545 | "minimatch": "^3.0.4", 1546 | "once": "^1.3.0", 1547 | "path-is-absolute": "^1.0.0" 1548 | } 1549 | }, 1550 | "graceful-fs": { 1551 | "version": "4.1.11", 1552 | "bundled": true, 1553 | "dev": true, 1554 | "optional": true 1555 | }, 1556 | "har-schema": { 1557 | "version": "1.0.5", 1558 | "bundled": true, 1559 | "dev": true, 1560 | "optional": true 1561 | }, 1562 | "har-validator": { 1563 | "version": "4.2.1", 1564 | "bundled": true, 1565 | "dev": true, 1566 | "optional": true, 1567 | "requires": { 1568 | "ajv": "^4.9.1", 1569 | "har-schema": "^1.0.5" 1570 | } 1571 | }, 1572 | "has-unicode": { 1573 | "version": "2.0.1", 1574 | "bundled": true, 1575 | "dev": true, 1576 | "optional": true 1577 | }, 1578 | "hawk": { 1579 | "version": "3.1.3", 1580 | "bundled": true, 1581 | "dev": true, 1582 | "optional": true, 1583 | "requires": { 1584 | "boom": "2.x.x", 1585 | "cryptiles": "2.x.x", 1586 | "hoek": "2.x.x", 1587 | "sntp": "1.x.x" 1588 | } 1589 | }, 1590 | "hoek": { 1591 | "version": "2.16.3", 1592 | "bundled": true, 1593 | "dev": true, 1594 | "optional": true 1595 | }, 1596 | "http-signature": { 1597 | "version": "1.1.1", 1598 | "bundled": true, 1599 | "dev": true, 1600 | "optional": true, 1601 | "requires": { 1602 | "assert-plus": "^0.2.0", 1603 | "jsprim": "^1.2.2", 1604 | "sshpk": "^1.7.0" 1605 | } 1606 | }, 1607 | "inflight": { 1608 | "version": "1.0.6", 1609 | "bundled": true, 1610 | "dev": true, 1611 | "optional": true, 1612 | "requires": { 1613 | "once": "^1.3.0", 1614 | "wrappy": "1" 1615 | } 1616 | }, 1617 | "inherits": { 1618 | "version": "2.0.3", 1619 | "bundled": true, 1620 | "dev": true, 1621 | "optional": true 1622 | }, 1623 | "ini": { 1624 | "version": "1.3.4", 1625 | "bundled": true, 1626 | "dev": true, 1627 | "optional": true 1628 | }, 1629 | "is-fullwidth-code-point": { 1630 | "version": "1.0.0", 1631 | "bundled": true, 1632 | "dev": true, 1633 | "optional": true, 1634 | "requires": { 1635 | "number-is-nan": "^1.0.0" 1636 | } 1637 | }, 1638 | "is-typedarray": { 1639 | "version": "1.0.0", 1640 | "bundled": true, 1641 | "dev": true, 1642 | "optional": true 1643 | }, 1644 | "isarray": { 1645 | "version": "1.0.0", 1646 | "bundled": true, 1647 | "dev": true, 1648 | "optional": true 1649 | }, 1650 | "isstream": { 1651 | "version": "0.1.2", 1652 | "bundled": true, 1653 | "dev": true, 1654 | "optional": true 1655 | }, 1656 | "jodid25519": { 1657 | "version": "1.0.2", 1658 | "bundled": true, 1659 | "dev": true, 1660 | "optional": true, 1661 | "requires": { 1662 | "jsbn": "~0.1.0" 1663 | } 1664 | }, 1665 | "jsbn": { 1666 | "version": "0.1.1", 1667 | "bundled": true, 1668 | "dev": true, 1669 | "optional": true 1670 | }, 1671 | "json-schema": { 1672 | "version": "0.2.3", 1673 | "bundled": true, 1674 | "dev": true, 1675 | "optional": true 1676 | }, 1677 | "json-stable-stringify": { 1678 | "version": "1.0.1", 1679 | "bundled": true, 1680 | "dev": true, 1681 | "optional": true, 1682 | "requires": { 1683 | "jsonify": "~0.0.0" 1684 | } 1685 | }, 1686 | "json-stringify-safe": { 1687 | "version": "5.0.1", 1688 | "bundled": true, 1689 | "dev": true, 1690 | "optional": true 1691 | }, 1692 | "jsonify": { 1693 | "version": "0.0.0", 1694 | "bundled": true, 1695 | "dev": true, 1696 | "optional": true 1697 | }, 1698 | "jsprim": { 1699 | "version": "1.4.0", 1700 | "bundled": true, 1701 | "dev": true, 1702 | "optional": true, 1703 | "requires": { 1704 | "assert-plus": "1.0.0", 1705 | "extsprintf": "1.0.2", 1706 | "json-schema": "0.2.3", 1707 | "verror": "1.3.6" 1708 | }, 1709 | "dependencies": { 1710 | "assert-plus": { 1711 | "version": "1.0.0", 1712 | "bundled": true, 1713 | "dev": true, 1714 | "optional": true 1715 | } 1716 | } 1717 | }, 1718 | "mime-db": { 1719 | "version": "1.27.0", 1720 | "bundled": true, 1721 | "dev": true, 1722 | "optional": true 1723 | }, 1724 | "mime-types": { 1725 | "version": "2.1.15", 1726 | "bundled": true, 1727 | "dev": true, 1728 | "optional": true, 1729 | "requires": { 1730 | "mime-db": "~1.27.0" 1731 | } 1732 | }, 1733 | "minimatch": { 1734 | "version": "3.0.4", 1735 | "bundled": true, 1736 | "dev": true, 1737 | "optional": true, 1738 | "requires": { 1739 | "brace-expansion": "^1.1.7" 1740 | } 1741 | }, 1742 | "minimist": { 1743 | "version": "0.0.8", 1744 | "bundled": true, 1745 | "dev": true, 1746 | "optional": true 1747 | }, 1748 | "mkdirp": { 1749 | "version": "0.5.1", 1750 | "bundled": true, 1751 | "dev": true, 1752 | "optional": true, 1753 | "requires": { 1754 | "minimist": "0.0.8" 1755 | } 1756 | }, 1757 | "ms": { 1758 | "version": "2.0.0", 1759 | "bundled": true, 1760 | "dev": true, 1761 | "optional": true 1762 | }, 1763 | "node-pre-gyp": { 1764 | "version": "0.6.39", 1765 | "bundled": true, 1766 | "dev": true, 1767 | "optional": true, 1768 | "requires": { 1769 | "detect-libc": "^1.0.2", 1770 | "hawk": "3.1.3", 1771 | "mkdirp": "^0.5.1", 1772 | "nopt": "^4.0.1", 1773 | "npmlog": "^4.0.2", 1774 | "rc": "^1.1.7", 1775 | "request": "2.81.0", 1776 | "rimraf": "^2.6.1", 1777 | "semver": "^5.3.0", 1778 | "tar": "^2.2.1", 1779 | "tar-pack": "^3.4.0" 1780 | } 1781 | }, 1782 | "nopt": { 1783 | "version": "4.0.1", 1784 | "bundled": true, 1785 | "dev": true, 1786 | "optional": true, 1787 | "requires": { 1788 | "abbrev": "1", 1789 | "osenv": "^0.1.4" 1790 | } 1791 | }, 1792 | "npmlog": { 1793 | "version": "4.1.0", 1794 | "bundled": true, 1795 | "dev": true, 1796 | "optional": true, 1797 | "requires": { 1798 | "are-we-there-yet": "~1.1.2", 1799 | "console-control-strings": "~1.1.0", 1800 | "gauge": "~2.7.3", 1801 | "set-blocking": "~2.0.0" 1802 | } 1803 | }, 1804 | "number-is-nan": { 1805 | "version": "1.0.1", 1806 | "bundled": true, 1807 | "dev": true, 1808 | "optional": true 1809 | }, 1810 | "oauth-sign": { 1811 | "version": "0.8.2", 1812 | "bundled": true, 1813 | "dev": true, 1814 | "optional": true 1815 | }, 1816 | "object-assign": { 1817 | "version": "4.1.1", 1818 | "bundled": true, 1819 | "dev": true, 1820 | "optional": true 1821 | }, 1822 | "once": { 1823 | "version": "1.4.0", 1824 | "bundled": true, 1825 | "dev": true, 1826 | "optional": true, 1827 | "requires": { 1828 | "wrappy": "1" 1829 | } 1830 | }, 1831 | "os-homedir": { 1832 | "version": "1.0.2", 1833 | "bundled": true, 1834 | "dev": true, 1835 | "optional": true 1836 | }, 1837 | "os-tmpdir": { 1838 | "version": "1.0.2", 1839 | "bundled": true, 1840 | "dev": true, 1841 | "optional": true 1842 | }, 1843 | "osenv": { 1844 | "version": "0.1.4", 1845 | "bundled": true, 1846 | "dev": true, 1847 | "optional": true, 1848 | "requires": { 1849 | "os-homedir": "^1.0.0", 1850 | "os-tmpdir": "^1.0.0" 1851 | } 1852 | }, 1853 | "path-is-absolute": { 1854 | "version": "1.0.1", 1855 | "bundled": true, 1856 | "dev": true, 1857 | "optional": true 1858 | }, 1859 | "performance-now": { 1860 | "version": "0.2.0", 1861 | "bundled": true, 1862 | "dev": true, 1863 | "optional": true 1864 | }, 1865 | "process-nextick-args": { 1866 | "version": "1.0.7", 1867 | "bundled": true, 1868 | "dev": true, 1869 | "optional": true 1870 | }, 1871 | "punycode": { 1872 | "version": "1.4.1", 1873 | "bundled": true, 1874 | "dev": true, 1875 | "optional": true 1876 | }, 1877 | "qs": { 1878 | "version": "6.4.0", 1879 | "bundled": true, 1880 | "dev": true, 1881 | "optional": true 1882 | }, 1883 | "rc": { 1884 | "version": "1.2.1", 1885 | "bundled": true, 1886 | "dev": true, 1887 | "optional": true, 1888 | "requires": { 1889 | "deep-extend": "~0.4.0", 1890 | "ini": "~1.3.0", 1891 | "minimist": "^1.2.0", 1892 | "strip-json-comments": "~2.0.1" 1893 | }, 1894 | "dependencies": { 1895 | "minimist": { 1896 | "version": "1.2.0", 1897 | "bundled": true, 1898 | "dev": true, 1899 | "optional": true 1900 | } 1901 | } 1902 | }, 1903 | "readable-stream": { 1904 | "version": "2.2.9", 1905 | "bundled": true, 1906 | "dev": true, 1907 | "optional": true, 1908 | "requires": { 1909 | "buffer-shims": "~1.0.0", 1910 | "core-util-is": "~1.0.0", 1911 | "inherits": "~2.0.1", 1912 | "isarray": "~1.0.0", 1913 | "process-nextick-args": "~1.0.6", 1914 | "string_decoder": "~1.0.0", 1915 | "util-deprecate": "~1.0.1" 1916 | } 1917 | }, 1918 | "request": { 1919 | "version": "2.81.0", 1920 | "bundled": true, 1921 | "dev": true, 1922 | "optional": true, 1923 | "requires": { 1924 | "aws-sign2": "~0.6.0", 1925 | "aws4": "^1.2.1", 1926 | "caseless": "~0.12.0", 1927 | "combined-stream": "~1.0.5", 1928 | "extend": "~3.0.0", 1929 | "forever-agent": "~0.6.1", 1930 | "form-data": "~2.1.1", 1931 | "har-validator": "~4.2.1", 1932 | "hawk": "~3.1.3", 1933 | "http-signature": "~1.1.0", 1934 | "is-typedarray": "~1.0.0", 1935 | "isstream": "~0.1.2", 1936 | "json-stringify-safe": "~5.0.1", 1937 | "mime-types": "~2.1.7", 1938 | "oauth-sign": "~0.8.1", 1939 | "performance-now": "^0.2.0", 1940 | "qs": "~6.4.0", 1941 | "safe-buffer": "^5.0.1", 1942 | "stringstream": "~0.0.4", 1943 | "tough-cookie": "~2.3.0", 1944 | "tunnel-agent": "^0.6.0", 1945 | "uuid": "^3.0.0" 1946 | } 1947 | }, 1948 | "rimraf": { 1949 | "version": "2.6.1", 1950 | "bundled": true, 1951 | "dev": true, 1952 | "optional": true, 1953 | "requires": { 1954 | "glob": "^7.0.5" 1955 | } 1956 | }, 1957 | "safe-buffer": { 1958 | "version": "5.0.1", 1959 | "bundled": true, 1960 | "dev": true, 1961 | "optional": true 1962 | }, 1963 | "semver": { 1964 | "version": "5.3.0", 1965 | "bundled": true, 1966 | "dev": true, 1967 | "optional": true 1968 | }, 1969 | "set-blocking": { 1970 | "version": "2.0.0", 1971 | "bundled": true, 1972 | "dev": true, 1973 | "optional": true 1974 | }, 1975 | "signal-exit": { 1976 | "version": "3.0.2", 1977 | "bundled": true, 1978 | "dev": true, 1979 | "optional": true 1980 | }, 1981 | "sntp": { 1982 | "version": "1.0.9", 1983 | "bundled": true, 1984 | "dev": true, 1985 | "optional": true, 1986 | "requires": { 1987 | "hoek": "2.x.x" 1988 | } 1989 | }, 1990 | "sshpk": { 1991 | "version": "1.13.0", 1992 | "bundled": true, 1993 | "dev": true, 1994 | "optional": true, 1995 | "requires": { 1996 | "asn1": "~0.2.3", 1997 | "assert-plus": "^1.0.0", 1998 | "bcrypt-pbkdf": "^1.0.0", 1999 | "dashdash": "^1.12.0", 2000 | "ecc-jsbn": "~0.1.1", 2001 | "getpass": "^0.1.1", 2002 | "jodid25519": "^1.0.0", 2003 | "jsbn": "~0.1.0", 2004 | "tweetnacl": "~0.14.0" 2005 | }, 2006 | "dependencies": { 2007 | "assert-plus": { 2008 | "version": "1.0.0", 2009 | "bundled": true, 2010 | "dev": true, 2011 | "optional": true 2012 | } 2013 | } 2014 | }, 2015 | "string-width": { 2016 | "version": "1.0.2", 2017 | "bundled": true, 2018 | "dev": true, 2019 | "optional": true, 2020 | "requires": { 2021 | "code-point-at": "^1.0.0", 2022 | "is-fullwidth-code-point": "^1.0.0", 2023 | "strip-ansi": "^3.0.0" 2024 | } 2025 | }, 2026 | "string_decoder": { 2027 | "version": "1.0.1", 2028 | "bundled": true, 2029 | "dev": true, 2030 | "optional": true, 2031 | "requires": { 2032 | "safe-buffer": "^5.0.1" 2033 | } 2034 | }, 2035 | "stringstream": { 2036 | "version": "0.0.5", 2037 | "bundled": true, 2038 | "dev": true, 2039 | "optional": true 2040 | }, 2041 | "strip-ansi": { 2042 | "version": "3.0.1", 2043 | "bundled": true, 2044 | "dev": true, 2045 | "optional": true, 2046 | "requires": { 2047 | "ansi-regex": "^2.0.0" 2048 | } 2049 | }, 2050 | "strip-json-comments": { 2051 | "version": "2.0.1", 2052 | "bundled": true, 2053 | "dev": true, 2054 | "optional": true 2055 | }, 2056 | "tar": { 2057 | "version": "2.2.1", 2058 | "bundled": true, 2059 | "dev": true, 2060 | "optional": true, 2061 | "requires": { 2062 | "block-stream": "*", 2063 | "fstream": "^1.0.2", 2064 | "inherits": "2" 2065 | } 2066 | }, 2067 | "tar-pack": { 2068 | "version": "3.4.0", 2069 | "bundled": true, 2070 | "dev": true, 2071 | "optional": true, 2072 | "requires": { 2073 | "debug": "^2.2.0", 2074 | "fstream": "^1.0.10", 2075 | "fstream-ignore": "^1.0.5", 2076 | "once": "^1.3.3", 2077 | "readable-stream": "^2.1.4", 2078 | "rimraf": "^2.5.1", 2079 | "tar": "^2.2.1", 2080 | "uid-number": "^0.0.6" 2081 | } 2082 | }, 2083 | "tough-cookie": { 2084 | "version": "2.3.2", 2085 | "bundled": true, 2086 | "dev": true, 2087 | "optional": true, 2088 | "requires": { 2089 | "punycode": "^1.4.1" 2090 | } 2091 | }, 2092 | "tunnel-agent": { 2093 | "version": "0.6.0", 2094 | "bundled": true, 2095 | "dev": true, 2096 | "optional": true, 2097 | "requires": { 2098 | "safe-buffer": "^5.0.1" 2099 | } 2100 | }, 2101 | "tweetnacl": { 2102 | "version": "0.14.5", 2103 | "bundled": true, 2104 | "dev": true, 2105 | "optional": true 2106 | }, 2107 | "uid-number": { 2108 | "version": "0.0.6", 2109 | "bundled": true, 2110 | "dev": true, 2111 | "optional": true 2112 | }, 2113 | "util-deprecate": { 2114 | "version": "1.0.2", 2115 | "bundled": true, 2116 | "dev": true, 2117 | "optional": true 2118 | }, 2119 | "uuid": { 2120 | "version": "3.0.1", 2121 | "bundled": true, 2122 | "dev": true, 2123 | "optional": true 2124 | }, 2125 | "verror": { 2126 | "version": "1.3.6", 2127 | "bundled": true, 2128 | "dev": true, 2129 | "optional": true, 2130 | "requires": { 2131 | "extsprintf": "1.0.2" 2132 | } 2133 | }, 2134 | "wide-align": { 2135 | "version": "1.1.2", 2136 | "bundled": true, 2137 | "dev": true, 2138 | "optional": true, 2139 | "requires": { 2140 | "string-width": "^1.0.2" 2141 | } 2142 | }, 2143 | "wrappy": { 2144 | "version": "1.0.2", 2145 | "bundled": true, 2146 | "dev": true, 2147 | "optional": true 2148 | } 2149 | } 2150 | }, 2151 | "glob": { 2152 | "version": "7.1.2", 2153 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/glob/-/glob-7.1.2.tgz", 2154 | "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", 2155 | "dev": true, 2156 | "requires": { 2157 | "fs.realpath": "^1.0.0", 2158 | "inflight": "^1.0.4", 2159 | "inherits": "2", 2160 | "minimatch": "^3.0.4", 2161 | "once": "^1.3.0", 2162 | "path-is-absolute": "^1.0.0" 2163 | } 2164 | }, 2165 | "glob-base": { 2166 | "version": "0.3.0", 2167 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/glob-base/-/glob-base-0.3.0.tgz", 2168 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 2169 | "dev": true, 2170 | "optional": true, 2171 | "requires": { 2172 | "glob-parent": "^2.0.0", 2173 | "is-glob": "^2.0.0" 2174 | } 2175 | }, 2176 | "glob-parent": { 2177 | "version": "2.0.0", 2178 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/glob-parent/-/glob-parent-2.0.0.tgz", 2179 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 2180 | "dev": true, 2181 | "optional": true, 2182 | "requires": { 2183 | "is-glob": "^2.0.0" 2184 | } 2185 | }, 2186 | "globals": { 2187 | "version": "9.18.0", 2188 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/globals/-/globals-9.18.0.tgz", 2189 | "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", 2190 | "dev": true 2191 | }, 2192 | "graceful-fs": { 2193 | "version": "4.1.11", 2194 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/graceful-fs/-/graceful-fs-4.1.11.tgz", 2195 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 2196 | "dev": true 2197 | }, 2198 | "has-ansi": { 2199 | "version": "2.0.0", 2200 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/has-ansi/-/has-ansi-2.0.0.tgz", 2201 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 2202 | "dev": true, 2203 | "requires": { 2204 | "ansi-regex": "^2.0.0" 2205 | } 2206 | }, 2207 | "home-or-tmp": { 2208 | "version": "2.0.0", 2209 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 2210 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 2211 | "dev": true, 2212 | "requires": { 2213 | "os-homedir": "^1.0.0", 2214 | "os-tmpdir": "^1.0.1" 2215 | } 2216 | }, 2217 | "iconv-lite": { 2218 | "version": "0.4.19", 2219 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/iconv-lite/-/iconv-lite-0.4.19.tgz", 2220 | "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" 2221 | }, 2222 | "inflight": { 2223 | "version": "1.0.6", 2224 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/inflight/-/inflight-1.0.6.tgz", 2225 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2226 | "dev": true, 2227 | "requires": { 2228 | "once": "^1.3.0", 2229 | "wrappy": "1" 2230 | } 2231 | }, 2232 | "inherits": { 2233 | "version": "2.0.3", 2234 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/inherits/-/inherits-2.0.3.tgz", 2235 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2236 | "dev": true 2237 | }, 2238 | "invariant": { 2239 | "version": "2.2.4", 2240 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/invariant/-/invariant-2.2.4.tgz", 2241 | "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", 2242 | "dev": true, 2243 | "requires": { 2244 | "loose-envify": "^1.0.0" 2245 | } 2246 | }, 2247 | "is-binary-path": { 2248 | "version": "1.0.1", 2249 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-binary-path/-/is-binary-path-1.0.1.tgz", 2250 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 2251 | "dev": true, 2252 | "optional": true, 2253 | "requires": { 2254 | "binary-extensions": "^1.0.0" 2255 | } 2256 | }, 2257 | "is-buffer": { 2258 | "version": "1.1.6", 2259 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-buffer/-/is-buffer-1.1.6.tgz", 2260 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 2261 | "dev": true, 2262 | "optional": true 2263 | }, 2264 | "is-dotfile": { 2265 | "version": "1.0.3", 2266 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-dotfile/-/is-dotfile-1.0.3.tgz", 2267 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 2268 | "dev": true, 2269 | "optional": true 2270 | }, 2271 | "is-equal-shallow": { 2272 | "version": "0.1.3", 2273 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 2274 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 2275 | "dev": true, 2276 | "optional": true, 2277 | "requires": { 2278 | "is-primitive": "^2.0.0" 2279 | } 2280 | }, 2281 | "is-extendable": { 2282 | "version": "0.1.1", 2283 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-extendable/-/is-extendable-0.1.1.tgz", 2284 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2285 | "dev": true, 2286 | "optional": true 2287 | }, 2288 | "is-extglob": { 2289 | "version": "1.0.0", 2290 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-extglob/-/is-extglob-1.0.0.tgz", 2291 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 2292 | "dev": true, 2293 | "optional": true 2294 | }, 2295 | "is-finite": { 2296 | "version": "1.0.2", 2297 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-finite/-/is-finite-1.0.2.tgz", 2298 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 2299 | "dev": true, 2300 | "requires": { 2301 | "number-is-nan": "^1.0.0" 2302 | } 2303 | }, 2304 | "is-glob": { 2305 | "version": "2.0.1", 2306 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-glob/-/is-glob-2.0.1.tgz", 2307 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 2308 | "dev": true, 2309 | "optional": true, 2310 | "requires": { 2311 | "is-extglob": "^1.0.0" 2312 | } 2313 | }, 2314 | "is-number": { 2315 | "version": "2.1.0", 2316 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 2317 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 2318 | "dev": true, 2319 | "optional": true, 2320 | "requires": { 2321 | "kind-of": "^3.0.2" 2322 | } 2323 | }, 2324 | "is-posix-bracket": { 2325 | "version": "0.1.1", 2326 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 2327 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 2328 | "dev": true, 2329 | "optional": true 2330 | }, 2331 | "is-primitive": { 2332 | "version": "2.0.0", 2333 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-primitive/-/is-primitive-2.0.0.tgz", 2334 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 2335 | "dev": true, 2336 | "optional": true 2337 | }, 2338 | "is-stream": { 2339 | "version": "1.1.0", 2340 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/is-stream/-/is-stream-1.1.0.tgz", 2341 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 2342 | }, 2343 | "isarray": { 2344 | "version": "1.0.0", 2345 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/isarray/-/isarray-1.0.0.tgz", 2346 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2347 | "dev": true, 2348 | "optional": true 2349 | }, 2350 | "isobject": { 2351 | "version": "2.1.0", 2352 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 2353 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 2354 | "dev": true, 2355 | "optional": true, 2356 | "requires": { 2357 | "isarray": "1.0.0" 2358 | } 2359 | }, 2360 | "isomorphic-fetch": { 2361 | "version": "2.2.1", 2362 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", 2363 | "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", 2364 | "requires": { 2365 | "node-fetch": "^1.0.1", 2366 | "whatwg-fetch": ">=0.10.0" 2367 | } 2368 | }, 2369 | "js-tokens": { 2370 | "version": "3.0.2", 2371 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/js-tokens/-/js-tokens-3.0.2.tgz", 2372 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" 2373 | }, 2374 | "jsesc": { 2375 | "version": "1.3.0", 2376 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/jsesc/-/jsesc-1.3.0.tgz", 2377 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 2378 | "dev": true 2379 | }, 2380 | "json5": { 2381 | "version": "0.5.1", 2382 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/json5/-/json5-0.5.1.tgz", 2383 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 2384 | "dev": true 2385 | }, 2386 | "kind-of": { 2387 | "version": "3.2.2", 2388 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/kind-of/-/kind-of-3.2.2.tgz", 2389 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2390 | "dev": true, 2391 | "optional": true, 2392 | "requires": { 2393 | "is-buffer": "^1.1.5" 2394 | } 2395 | }, 2396 | "lodash": { 2397 | "version": "4.17.15", 2398 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 2399 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 2400 | "dev": true 2401 | }, 2402 | "loose-envify": { 2403 | "version": "1.3.1", 2404 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/loose-envify/-/loose-envify-1.3.1.tgz", 2405 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 2406 | "requires": { 2407 | "js-tokens": "^3.0.0" 2408 | } 2409 | }, 2410 | "math-random": { 2411 | "version": "1.0.4", 2412 | "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", 2413 | "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", 2414 | "dev": true, 2415 | "optional": true 2416 | }, 2417 | "micromatch": { 2418 | "version": "2.3.11", 2419 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/micromatch/-/micromatch-2.3.11.tgz", 2420 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 2421 | "dev": true, 2422 | "optional": true, 2423 | "requires": { 2424 | "arr-diff": "^2.0.0", 2425 | "array-unique": "^0.2.1", 2426 | "braces": "^1.8.2", 2427 | "expand-brackets": "^0.1.4", 2428 | "extglob": "^0.3.1", 2429 | "filename-regex": "^2.0.0", 2430 | "is-extglob": "^1.0.0", 2431 | "is-glob": "^2.0.1", 2432 | "kind-of": "^3.0.2", 2433 | "normalize-path": "^2.0.1", 2434 | "object.omit": "^2.0.0", 2435 | "parse-glob": "^3.0.4", 2436 | "regex-cache": "^0.4.2" 2437 | } 2438 | }, 2439 | "minimatch": { 2440 | "version": "3.0.4", 2441 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/minimatch/-/minimatch-3.0.4.tgz", 2442 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 2443 | "dev": true, 2444 | "requires": { 2445 | "brace-expansion": "^1.1.7" 2446 | } 2447 | }, 2448 | "minimist": { 2449 | "version": "1.2.5", 2450 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2451 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2452 | "dev": true 2453 | }, 2454 | "mkdirp": { 2455 | "version": "0.5.5", 2456 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2457 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2458 | "dev": true, 2459 | "requires": { 2460 | "minimist": "^1.2.5" 2461 | } 2462 | }, 2463 | "ms": { 2464 | "version": "2.0.0", 2465 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/ms/-/ms-2.0.0.tgz", 2466 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2467 | "dev": true 2468 | }, 2469 | "nan": { 2470 | "version": "2.10.0", 2471 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/nan/-/nan-2.10.0.tgz", 2472 | "integrity": "sha1-ltDNYQ69WNS03pzAxoKM2pnHVI8=", 2473 | "dev": true, 2474 | "optional": true 2475 | }, 2476 | "node-fetch": { 2477 | "version": "1.7.3", 2478 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/node-fetch/-/node-fetch-1.7.3.tgz", 2479 | "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", 2480 | "requires": { 2481 | "encoding": "^0.1.11", 2482 | "is-stream": "^1.0.1" 2483 | } 2484 | }, 2485 | "normalize-path": { 2486 | "version": "2.1.1", 2487 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/normalize-path/-/normalize-path-2.1.1.tgz", 2488 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2489 | "dev": true, 2490 | "optional": true, 2491 | "requires": { 2492 | "remove-trailing-separator": "^1.0.1" 2493 | } 2494 | }, 2495 | "number-is-nan": { 2496 | "version": "1.0.1", 2497 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/number-is-nan/-/number-is-nan-1.0.1.tgz", 2498 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2499 | "dev": true 2500 | }, 2501 | "object-assign": { 2502 | "version": "4.1.1", 2503 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/object-assign/-/object-assign-4.1.1.tgz", 2504 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2505 | }, 2506 | "object.omit": { 2507 | "version": "2.0.1", 2508 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/object.omit/-/object.omit-2.0.1.tgz", 2509 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2510 | "dev": true, 2511 | "optional": true, 2512 | "requires": { 2513 | "for-own": "^0.1.4", 2514 | "is-extendable": "^0.1.1" 2515 | } 2516 | }, 2517 | "once": { 2518 | "version": "1.4.0", 2519 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/once/-/once-1.4.0.tgz", 2520 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2521 | "dev": true, 2522 | "requires": { 2523 | "wrappy": "1" 2524 | } 2525 | }, 2526 | "os-homedir": { 2527 | "version": "1.0.2", 2528 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/os-homedir/-/os-homedir-1.0.2.tgz", 2529 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2530 | "dev": true 2531 | }, 2532 | "os-tmpdir": { 2533 | "version": "1.0.2", 2534 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2535 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2536 | "dev": true 2537 | }, 2538 | "output-file-sync": { 2539 | "version": "1.1.2", 2540 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/output-file-sync/-/output-file-sync-1.1.2.tgz", 2541 | "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", 2542 | "dev": true, 2543 | "requires": { 2544 | "graceful-fs": "^4.1.4", 2545 | "mkdirp": "^0.5.1", 2546 | "object-assign": "^4.1.0" 2547 | } 2548 | }, 2549 | "parse-glob": { 2550 | "version": "3.0.4", 2551 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/parse-glob/-/parse-glob-3.0.4.tgz", 2552 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2553 | "dev": true, 2554 | "optional": true, 2555 | "requires": { 2556 | "glob-base": "^0.3.0", 2557 | "is-dotfile": "^1.0.0", 2558 | "is-extglob": "^1.0.0", 2559 | "is-glob": "^2.0.0" 2560 | } 2561 | }, 2562 | "path-is-absolute": { 2563 | "version": "1.0.1", 2564 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2565 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2566 | "dev": true 2567 | }, 2568 | "preserve": { 2569 | "version": "0.2.0", 2570 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/preserve/-/preserve-0.2.0.tgz", 2571 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2572 | "dev": true, 2573 | "optional": true 2574 | }, 2575 | "private": { 2576 | "version": "0.1.8", 2577 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/private/-/private-0.1.8.tgz", 2578 | "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", 2579 | "dev": true 2580 | }, 2581 | "process-nextick-args": { 2582 | "version": "2.0.0", 2583 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2584 | "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", 2585 | "dev": true, 2586 | "optional": true 2587 | }, 2588 | "promise": { 2589 | "version": "7.3.1", 2590 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/promise/-/promise-7.3.1.tgz", 2591 | "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", 2592 | "requires": { 2593 | "asap": "~2.0.3" 2594 | } 2595 | }, 2596 | "prop-types": { 2597 | "version": "15.6.1", 2598 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/prop-types/-/prop-types-15.6.1.tgz", 2599 | "integrity": "sha1-NmREU1ZCVd3aORGR+zoSXL32VMo=", 2600 | "requires": { 2601 | "fbjs": "^0.8.16", 2602 | "loose-envify": "^1.3.1", 2603 | "object-assign": "^4.1.1" 2604 | } 2605 | }, 2606 | "randomatic": { 2607 | "version": "3.1.1", 2608 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", 2609 | "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", 2610 | "dev": true, 2611 | "optional": true, 2612 | "requires": { 2613 | "is-number": "^4.0.0", 2614 | "kind-of": "^6.0.0", 2615 | "math-random": "^1.0.1" 2616 | }, 2617 | "dependencies": { 2618 | "is-number": { 2619 | "version": "4.0.0", 2620 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 2621 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", 2622 | "dev": true, 2623 | "optional": true 2624 | }, 2625 | "kind-of": { 2626 | "version": "6.0.3", 2627 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2628 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2629 | "dev": true, 2630 | "optional": true 2631 | } 2632 | } 2633 | }, 2634 | "readable-stream": { 2635 | "version": "2.3.5", 2636 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/readable-stream/-/readable-stream-2.3.5.tgz", 2637 | "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", 2638 | "dev": true, 2639 | "optional": true, 2640 | "requires": { 2641 | "core-util-is": "~1.0.0", 2642 | "inherits": "~2.0.3", 2643 | "isarray": "~1.0.0", 2644 | "process-nextick-args": "~2.0.0", 2645 | "safe-buffer": "~5.1.1", 2646 | "string_decoder": "~1.0.3", 2647 | "util-deprecate": "~1.0.1" 2648 | } 2649 | }, 2650 | "readdirp": { 2651 | "version": "2.1.0", 2652 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/readdirp/-/readdirp-2.1.0.tgz", 2653 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2654 | "dev": true, 2655 | "optional": true, 2656 | "requires": { 2657 | "graceful-fs": "^4.1.2", 2658 | "minimatch": "^3.0.2", 2659 | "readable-stream": "^2.0.2", 2660 | "set-immediate-shim": "^1.0.1" 2661 | } 2662 | }, 2663 | "regenerate": { 2664 | "version": "1.3.3", 2665 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regenerate/-/regenerate-1.3.3.tgz", 2666 | "integrity": "sha1-DDNtOYBVPXVcObWGrjsgqknIK38=", 2667 | "dev": true 2668 | }, 2669 | "regenerator-runtime": { 2670 | "version": "0.11.1", 2671 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 2672 | "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", 2673 | "dev": true 2674 | }, 2675 | "regenerator-transform": { 2676 | "version": "0.10.1", 2677 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regenerator-transform/-/regenerator-transform-0.10.1.tgz", 2678 | "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", 2679 | "dev": true, 2680 | "requires": { 2681 | "babel-runtime": "^6.18.0", 2682 | "babel-types": "^6.19.0", 2683 | "private": "^0.1.6" 2684 | } 2685 | }, 2686 | "regex-cache": { 2687 | "version": "0.4.4", 2688 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regex-cache/-/regex-cache-0.4.4.tgz", 2689 | "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", 2690 | "dev": true, 2691 | "optional": true, 2692 | "requires": { 2693 | "is-equal-shallow": "^0.1.3" 2694 | } 2695 | }, 2696 | "regexpu-core": { 2697 | "version": "2.0.0", 2698 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regexpu-core/-/regexpu-core-2.0.0.tgz", 2699 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 2700 | "dev": true, 2701 | "requires": { 2702 | "regenerate": "^1.2.1", 2703 | "regjsgen": "^0.2.0", 2704 | "regjsparser": "^0.1.4" 2705 | } 2706 | }, 2707 | "regjsgen": { 2708 | "version": "0.2.0", 2709 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regjsgen/-/regjsgen-0.2.0.tgz", 2710 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 2711 | "dev": true 2712 | }, 2713 | "regjsparser": { 2714 | "version": "0.1.5", 2715 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/regjsparser/-/regjsparser-0.1.5.tgz", 2716 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 2717 | "dev": true, 2718 | "requires": { 2719 | "jsesc": "~0.5.0" 2720 | }, 2721 | "dependencies": { 2722 | "jsesc": { 2723 | "version": "0.5.0", 2724 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/jsesc/-/jsesc-0.5.0.tgz", 2725 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 2726 | "dev": true 2727 | } 2728 | } 2729 | }, 2730 | "remove-trailing-separator": { 2731 | "version": "1.1.0", 2732 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2733 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2734 | "dev": true, 2735 | "optional": true 2736 | }, 2737 | "repeat-element": { 2738 | "version": "1.1.2", 2739 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/repeat-element/-/repeat-element-1.1.2.tgz", 2740 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2741 | "dev": true, 2742 | "optional": true 2743 | }, 2744 | "repeat-string": { 2745 | "version": "1.6.1", 2746 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2747 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2748 | "dev": true, 2749 | "optional": true 2750 | }, 2751 | "repeating": { 2752 | "version": "2.0.1", 2753 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/repeating/-/repeating-2.0.1.tgz", 2754 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 2755 | "dev": true, 2756 | "requires": { 2757 | "is-finite": "^1.0.0" 2758 | } 2759 | }, 2760 | "safe-buffer": { 2761 | "version": "5.1.1", 2762 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/safe-buffer/-/safe-buffer-5.1.1.tgz", 2763 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", 2764 | "dev": true, 2765 | "optional": true 2766 | }, 2767 | "semver": { 2768 | "version": "5.5.0", 2769 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/semver/-/semver-5.5.0.tgz", 2770 | "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", 2771 | "dev": true 2772 | }, 2773 | "set-immediate-shim": { 2774 | "version": "1.0.1", 2775 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2776 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 2777 | "dev": true, 2778 | "optional": true 2779 | }, 2780 | "setimmediate": { 2781 | "version": "1.0.5", 2782 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/setimmediate/-/setimmediate-1.0.5.tgz", 2783 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 2784 | }, 2785 | "slash": { 2786 | "version": "1.0.0", 2787 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/slash/-/slash-1.0.0.tgz", 2788 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 2789 | "dev": true 2790 | }, 2791 | "source-map": { 2792 | "version": "0.5.7", 2793 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/source-map/-/source-map-0.5.7.tgz", 2794 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2795 | "dev": true 2796 | }, 2797 | "source-map-support": { 2798 | "version": "0.4.18", 2799 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/source-map-support/-/source-map-support-0.4.18.tgz", 2800 | "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", 2801 | "dev": true, 2802 | "requires": { 2803 | "source-map": "^0.5.6" 2804 | } 2805 | }, 2806 | "string_decoder": { 2807 | "version": "1.0.3", 2808 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/string_decoder/-/string_decoder-1.0.3.tgz", 2809 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 2810 | "dev": true, 2811 | "optional": true, 2812 | "requires": { 2813 | "safe-buffer": "~5.1.0" 2814 | } 2815 | }, 2816 | "strip-ansi": { 2817 | "version": "3.0.1", 2818 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/strip-ansi/-/strip-ansi-3.0.1.tgz", 2819 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2820 | "dev": true, 2821 | "requires": { 2822 | "ansi-regex": "^2.0.0" 2823 | } 2824 | }, 2825 | "supports-color": { 2826 | "version": "2.0.0", 2827 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/supports-color/-/supports-color-2.0.0.tgz", 2828 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2829 | "dev": true 2830 | }, 2831 | "to-fast-properties": { 2832 | "version": "1.0.3", 2833 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 2834 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 2835 | "dev": true 2836 | }, 2837 | "trim-right": { 2838 | "version": "1.0.1", 2839 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/trim-right/-/trim-right-1.0.1.tgz", 2840 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 2841 | "dev": true 2842 | }, 2843 | "ua-parser-js": { 2844 | "version": "0.7.17", 2845 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/ua-parser-js/-/ua-parser-js-0.7.17.tgz", 2846 | "integrity": "sha1-6exflJi57JEOeuOsYmqAXE0J7Kw=" 2847 | }, 2848 | "user-home": { 2849 | "version": "1.1.1", 2850 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/user-home/-/user-home-1.1.1.tgz", 2851 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 2852 | "dev": true 2853 | }, 2854 | "util-deprecate": { 2855 | "version": "1.0.2", 2856 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/util-deprecate/-/util-deprecate-1.0.2.tgz", 2857 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2858 | "dev": true, 2859 | "optional": true 2860 | }, 2861 | "v8flags": { 2862 | "version": "2.1.1", 2863 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/v8flags/-/v8flags-2.1.1.tgz", 2864 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 2865 | "dev": true, 2866 | "requires": { 2867 | "user-home": "^1.1.1" 2868 | } 2869 | }, 2870 | "whatwg-fetch": { 2871 | "version": "2.0.3", 2872 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", 2873 | "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" 2874 | }, 2875 | "wrappy": { 2876 | "version": "1.0.2", 2877 | "resolved": "https://widen.jfrog.io/widen/api/npm/npm-virtual/wrappy/-/wrappy-1.0.2.tgz", 2878 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2879 | "dev": true 2880 | } 2881 | } 2882 | } 2883 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-focus-within", 3 | "version": "2.0.2", 4 | "description": "A React-based \"polyfill\" for a focus-within-like experience.", 5 | "main": "lib/index", 6 | "types": "lib/index.d.ts", 7 | "module": "lib/index.esm.js", 8 | "sideEffects": false, 9 | "scripts": { 10 | "clean": "rm -rf lib && mkdir lib", 11 | "create-transpiled": "babel --no-babelrc src/index.js -o lib/index.js --source-maps --presets=env,stage-2,react", 12 | "create-module": "babel src/index.js -o lib/index.esm.js --source-maps", 13 | "create-types": "cp src/index.d.ts lib/index.d.ts", 14 | "build": "npm run clean && npm run create-transpiled && npm run create-module && npm run create-types", 15 | "prepublishOnly": "npm run build" 16 | }, 17 | "publishConfig": { 18 | "registry": "https://registry.npmjs.org" 19 | }, 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/ferdaber/react-focus-within" 23 | }, 24 | "keywords": [ 25 | "react", 26 | "focus", 27 | "within" 28 | ], 29 | "author": "Ferdy Budhidharma", 30 | "license": "ISC", 31 | "devDependencies": { 32 | "babel-cli": "^6.26.0", 33 | "babel-preset-env": "^1.6.1", 34 | "babel-preset-react": "^6.24.1", 35 | "babel-preset-stage-2": "^6.24.1" 36 | }, 37 | "peerDependencies": { 38 | "react": "^15.0.0 || ^16.0.0" 39 | }, 40 | "dependencies": { 41 | "@types/react": "^15.0.0 || ^16.0.0", 42 | "prop-types": "^15.6.1" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | import { ComponentClass, ComponentType, ReactNode, ReactHTML, StatelessComponent } from 'react' 2 | 3 | interface FocusProps { 4 | onFocus(event: object): void 5 | onBlur(event: object): void 6 | onMouseDown(event: object): void 7 | } 8 | 9 | export interface FocusWithinRenderProps { 10 | focusProps: FocusProps 11 | getFocusProps

( 12 | props?: P 13 | ): FocusProps & P 14 | isFocused: boolean 15 | } 16 | 17 | export interface FocusWithinProps { 18 | onFocus?(event: {}): void 19 | onBlur?(event: {}): void 20 | children?(renderProps: FocusWithinRenderProps): ReactNode 21 | } 22 | 23 | declare function withFocusWithin

(Component: ComponentType

): StatelessComponent

24 | declare function withFocusWithin

(NativeComponent: P): ReactHTML[P] 25 | 26 | interface FocusWithinComponent extends ComponentClass { 27 | wrapComponent: typeof withFocusWithin 28 | } 29 | 30 | export const FocusWithin: FocusWithinComponent 31 | export { withFocusWithin } 32 | export default FocusWithin 33 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PropTypes from 'prop-types' 3 | 4 | export function withFocusWithin(Component) { 5 | const WrappedComponent = ({ onFocus, onBlur, ...props }) => ( 6 | 7 | {({ getFocusProps, isFocused }) => 8 | typeof Component === 'string' ? ( 9 | 10 | ) : ( 11 | 12 | ) 13 | } 14 | 15 | ) 16 | WrappedComponent.displayName = `WithFocusWithin(${Component.displayName || Component.name || 'Component'})` 17 | return WrappedComponent 18 | } 19 | 20 | export class FocusWithin extends React.Component { 21 | static propTypes = { 22 | onBlur: PropTypes.func, 23 | onFocus: PropTypes.func, 24 | } 25 | 26 | static defaultProps = { 27 | onBlur: () => {}, 28 | onFocus: () => {}, 29 | } 30 | 31 | static wrapComponent = withFocusWithin 32 | 33 | state = { 34 | isBlurring: false, 35 | isFocused: false, 36 | } 37 | 38 | // delay by one turn of the event loop, used to consolidate timing between 39 | // FocusWithin events and native events 40 | delay = (cb, ...args) => 41 | setTimeout(() => { 42 | if (this.isUnmounted) { 43 | return 44 | } 45 | cb(...args) 46 | }) 47 | 48 | setFocusState = (isFocused, isFocusWithinEvent) => { 49 | const setStateCb = () => { 50 | if (this.isUnmounted) return 51 | this.setState( 52 | state => 53 | state.isFocused === isFocused 54 | ? state 55 | : !isFocused 56 | ? { 57 | isFocused, 58 | isBlurring: true, 59 | } 60 | : { 61 | isFocused, 62 | } 63 | ) 64 | } 65 | // delay processing native events for one turn of the event loop 66 | // to have it be on the same timing as FocusWithin events 67 | if (isFocusWithinEvent) { 68 | setStateCb() 69 | } else { 70 | this.delay(setStateCb) 71 | } 72 | } 73 | 74 | // track mouse activity within the FocusWithin container, which allows clicking inside it 75 | // whenever a mousedown occurs we save the current container element, and if on mouseup 76 | // we are outside the container, we emit the blur event appropriately 77 | // mouseups can still occur outside the container with actual DOM focus remaining within 78 | // so we do not emit blurs for those 79 | onDocumentMouseUp = event => { 80 | const container = this.mouseDownWithinTarget 81 | const mouseUpWithinTarget = container && container.contains(event.target) 82 | const activeElementWithinTarget = container && container.contains(document.activeElement) 83 | if (!activeElementWithinTarget && !mouseUpWithinTarget) { 84 | this.setFocusState(false, this.lastBlurEvent ? this.lastBlurEvent.__isFocusWithinEvent : true) 85 | } 86 | this.mouseDownWithinTarget = null 87 | this.lastBlurEvent = null 88 | } 89 | 90 | getFocusProps = ({ onFocus, onBlur, onMouseDown, ...props } = {}) => { 91 | return { 92 | ...props, 93 | onFocus: event => { 94 | const propagationStopped = onFocus && onFocus(event) === false 95 | if (propagationStopped || (event && event.focusWithinDefaultPrevented)) { 96 | return 97 | } 98 | this.setFocusState(true, event && event.__isFocusWithinEvent) 99 | }, 100 | onBlur: event => { 101 | const propagationStopped = onBlur && onBlur(event) === false 102 | if (propagationStopped || (event && event.focusWithinDefaultPrevented)) { 103 | return 104 | } 105 | // if blur event happens right after a mousedown of an element inside the FocusWithin container 106 | // we don't emit the blur event immediately and check if we should emit it later after the mouseup occurs 107 | if (this.mouseDownWithinTarget) { 108 | event.persist && event.persist() 109 | this.lastBlurEvent = event 110 | return 111 | } 112 | this.setFocusState(false, event && event.__isFocusWithinEvent) 113 | }, 114 | onMouseDown: event => { 115 | const propagationStopped = onMouseDown && onMouseDown(event) === false 116 | if (propagationStopped || (event && event.focusWithinDefaultPrevented)) { 117 | return 118 | } 119 | this.mouseDownWithinTarget = event.currentTarget 120 | }, 121 | } 122 | } 123 | 124 | componentDidMount() { 125 | document.addEventListener('mouseup', this.onDocumentMouseUp) 126 | } 127 | 128 | componentDidUpdate(_, prevState) { 129 | if (prevState.isFocused && !this.state.isFocused) { 130 | this.delay(() => { 131 | if (this.isUnmounted) { 132 | return 133 | } 134 | this.setState({ 135 | isBlurring: false, 136 | }) 137 | // check if the focus manager is actually blurred for times 138 | // when document click causes a consective blur -> focus 139 | if (!this.state.isFocused) { 140 | this.props.onBlur({ __isFocusWithinEvent: true }) 141 | } 142 | }) 143 | } 144 | // check if the focus manager was focused from the outside 145 | // and not from another child element 146 | // delay onfocus emission to be on the same timing as blur events 147 | if (!this.state.isBlurring && !prevState.isFocused && this.state.isFocused) { 148 | this.delay(this.props.onFocus, { __isFocusWithinEvent: true }) 149 | } 150 | } 151 | 152 | componentWillUnmount() { 153 | this.isUnmounted = true 154 | document.removeEventListener('mouseup', this.onDocumentMouseUp) 155 | } 156 | 157 | render() { 158 | return this.props.children 159 | ? this.props.children({ 160 | focusProps: this.getFocusProps(), 161 | getFocusProps: this.getFocusProps, 162 | // stabilize isFocused so that it only changes corresponding to its event emissions 163 | isFocused: this.state.isFocused || this.state.isBlurring, 164 | }) 165 | : null 166 | } 167 | } 168 | 169 | export default FocusWithin 170 | --------------------------------------------------------------------------------