diff --git a/.babelrc b/.babelrc index 1f596ac30..09ed3f146 100644 --- a/.babelrc +++ b/.babelrc @@ -1,10 +1,7 @@ { "presets": [ - "es2015-loose", + ["es2015", {"loose": true}], "stage-1", "react" - ], - "plugins": [ - "transform-flow-comments" ] } diff --git a/.eslintrc b/.eslintrc index c6d5b27c5..9572204db 100644 --- a/.eslintrc +++ b/.eslintrc @@ -31,7 +31,7 @@ "react/jsx-no-undef": 2, // warn when using undefined components (why is this not default?) "react/jsx-uses-react": 1, // marks `React` as consumed by any jsx el (squelched unused) "react/jsx-uses-vars": 1, // marks any vars in jsx as used - "react/wrap-multilines": 1, // require parens around multiline jsx + "react/jsx-wrap-multilines": 1, // require parens around multiline jsx "semi": [1, "always"] }, env: { @@ -45,6 +45,7 @@ "globals": { // For Flow "ReactElement", - "ReactClass" + "ReactClass", + "$PropertyType" } } diff --git a/.flowconfig b/.flowconfig index 7c524057a..ee24cfbaf 100644 --- a/.flowconfig +++ b/.flowconfig @@ -9,6 +9,7 @@ index.js [libs] +interfaces/ [options] suppress_comment=\\(.\\|\n\\)*\\s*\\$FlowFixMe.* diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..1c3e37948 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,10 @@ +Thanks for submitting an issue to RGL! + +Please mark the type of this issue: + +- [ ] Bug +- [ ] Feature Request +- [ ] Question + +If you have a question or bug report, please use the [WebpackBin Template](http://www.webpackbin.com/EJF48h_rz) +to demonstrate. It is much easier for us to help you if you do. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..f3e91fe95 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,6 @@ +Thanks for submitting a pull request to RGL! + +Please reference an open issue. If one has not been created, please create one along with a failing +example or test case. + +Please do not commit built files (`/dist`) to pull requests. They are built only at release. diff --git a/.npmignore b/.npmignore index 74052e1f5..3b68cd4eb 100644 --- a/.npmignore +++ b/.npmignore @@ -2,3 +2,12 @@ lib/ test/ examples/ dist/ +yarn.lock +.github +*.config.js +Makefile +*.sh +*.*.json +__tests__/ +index-dev.js +index.html diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..3bda87ebb --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - "6" + - "7" +script: + - make build test +cache: yarn + diff --git a/CHANGELOG.md b/CHANGELOG.md index f2ccd84f2..761de18ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,117 @@ # Changelog +0.14.1 (Feb 20, 2017) +---- + +#### Fixes: + +- Fixed a minor Flow type issue when a `classnames` typedef is present. +- Fixed a scoping issue when running `make build-example`. + +0.14.0 (Feb 13, 2017) +----- + +#### Features: + +- New test suite - thanks @nikolas +- Dev Dependency updates +- Committed yarn.lock +- Added `react-draggable` classname to draggable grid items. + +0.13.9 (Oct 13, 2016) +----- + +#### Fixes: + +- Fixed sorting of layout items, which could be different in IE if two items have the same x & y coordinate. + - See [#369](https://github.com/STRML/react-grid-layout/issues/369). + +0.13.8 (Oct 13, 2016) +----- + +#### Fixes: + +- Fixed breakage introduced in `0.13.7` when items are added without a layout or `data-grid` property. + - See [#368](https://github.com/STRML/react-grid-layout/issues/368). + +0.13.7 (Oct 3, 2016) +----- + +#### Fixes: + +- Fixed an error during layout sync if children was a keyed fragment or had nested arrays. +- Fixed `onLayoutChange` being called when layout didn't change. +- Fixed some issues with input layout items being modified in-place rather than cloned. +- Minor typos. + +0.13.6 (Sep 26, 2016) +----- + +#### Fixes: + +- Fixed missing HTMLElement in `onResize*` callbacks. + +0.13.5 (Sep 9, 2016) +----- + +#### Fixes: + +- Fixed a few Flow typing errors in `WidthProvider`. + +0.13.4 (Sep 9, 2016) +----- + +#### Fixes: + +- Fixed potential call to `ReactDOM.findDOMNode(this)` after unmount of `WidthProvider`. +- Fixed an issue where layout items using `data-grid` could rearrange on mount depending on how they were ordered. + - See [#342](https://github.com/STRML/react-grid-layout/pull/342) for reference. + +0.13.3 (Aug 31, 2016) +----- + +#### Fixes: + +- Fixed `lodash.isequal` import, which was ruined by case-insensitive HFS+ *shakes fist* + +0.13.2 (Aug 31, 2016) +----- + +#### Fixes: + +- Diffing children in order to regenerate the layout now diffs the `key` props and their order. + - This will catch more changes, such as sorting, addition, and removal. +- Only pass `className` and `style` to WidthProvider. Other props were not intended to be supported. + - I'm aware this could be a breaking change if you were relying on this bad behavior. If so, please + use your own `WidthProvider`-style HOC. +- `babel-plugin-transform-flow-comments` had limited support for defining types like transpiled classes. + - This has been updated to instead copy source to `.js.flow` files, which preserves all type information. + +0.13.1 (Aug 16, 2016) +----- + +#### Fixes: + +- Fix remaining `propTypes` warnings. + +0.13.0 (Aug 3, 2016) +----- + +#### Changed: + +- Due to a change in React 15.2, passing the `_grid` property on DOM children generates an error. + To compensate, we now error on the same and suggest using `data-grid` instead. Simply change any use of + `_grid` to `data-grid`, or add your properties to the layout. + +#### Fixes: + +- Fix React 15.3 warning re: propTypes. + +0.12.7 (Jun 29, 2016) +----- + +- Prevent extraenous rerenders in `` by using deep equality on layouts. + 0.12.6 (Jun 5, 2016) ----- diff --git a/LICENSE b/LICENSE index 4eaf8ec1c..e52ca6e60 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 Samuel Reed +Copyright (c) 2016 Samuel Reed Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/Makefile b/Makefile index f20cd2e87..933c98b57 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,11 @@ MIN_MAP = $(DIST)/react-grid-layout.min.js.map .PHONY: test dev lint build clean install link +build: clean build-js copy-flow $(MIN) + clean: rm -rf $(BUILD) $(DIST) -build: clean build-js $(MIN) - dev: echo 'Open http://localhost:4002' @$(BIN)/webpack-dev-server --config webpack-dev-server.config.js --hot --progress --colors --port 4002 --content-base . @@ -32,18 +32,32 @@ dist/%.min.js: $(LIB) $(BIN) # find/exec is more cross-platform compatible than `rename` build-js: @$(BIN)/babel --stage 0 --out-dir $(BUILD) $(LIB) - find $(BUILD) -type f -name '*.jsx' -exec sh -c 'mv -f $0 ${0%.jsx}.js' {} \; build-example: - webpack --config webpack-examples.config.js + @$(BIN)/webpack --config webpack-examples.config.js node ./examples/generate.js +# Copy original source as `.js.flow` for use with flow +copy-flow: + # Create tmpdir & copy + $(eval TMP := $(shell mktemp -d)) + cp -R $(LIB)/ $(TMP) + # Rename extensions + find $(TMP) -type f -name '*.js*' -exec sh -c 'mv -f "$$0" "$${0%.*}.js.flow"' {} \; + # Copy into build + cp -R $(TMP)/ $(BUILD) + # Remove tmpdir + rm -rf $(TMP) + # FIXME flow is usually global lint: - flow + ./node_modules/.bin/flow @$(BIN)/eslint --ext .js,.jsx $(LIB) $(TEST) @$(BIN)/valiquire $(LIB) +test: + @$(BIN)/jest + release-patch: build @$(call release,patch) diff --git a/README.md b/README.md index 3c6eba18b..126d7beb0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # React-Grid-Layout +[![travis build](https://travis-ci.org/STRML/react-grid-layout.svg?branch=master)](https://travis-ci.org/STRML/react-grid-layout) [![npm package](https://img.shields.io/npm/v/react-grid-layout.svg?style=flat-square)](https://www.npmjs.org/package/react-grid-layout) [![npm downloads](https://img.shields.io/npm/dt/react-grid-layout.svg?maxAge=2592000)]() @@ -14,7 +15,7 @@ RGL is React-only and does not require jQuery. ![BitMEX UI](http://i.imgur.com/oo1NT6c.gif) > GIF from production usage on [BitMEX.com](https://www.bitmex.com) -[**[Demo](https://strml.github.io/react-grid-layout/examples/0-showcase.html) | [Changelog](/CHANGELOG.md)**] +[**[Demo](https://strml.github.io/react-grid-layout/examples/0-showcase.html) | [Changelog](/CHANGELOG.md) | [WebpackBin Editable demo](http://www.webpackbin.com/EJF48h_rz)**] ## Table of Contents @@ -52,6 +53,8 @@ RGL is React-only and does not require jQuery. - [Metabase](http://www.metabase.com/) - [HubSpot](http://www.hubspot.com) - [ComNetViz](http://www.grotto-networking.com/ComNetViz/ComNetViz.html) +- [Stoplight](https://app.stoplight.io) +- [Reflect](https://reflect.io) *Know of others? Create a PR to let me know!* @@ -99,7 +102,7 @@ Use ReactGridLayout like any other component. The following example below will produce a grid with three items where: - users will not be able to drag or resize item `a` -- item `b` will restricted to a minimum width of 2 grid blocks and a maximum width of 4 grid blocks +- item `b` will be restricted to a minimum width of 2 grid blocks and a maximum width of 4 grid blocks - users will be able to freely drag and resize item `c` ```javascript @@ -133,9 +136,9 @@ var MyFirstGrid = React.createClass({ render: function () { return ( -
a
-
b
-
c
+
a
+
b
+
c
) } @@ -176,7 +179,7 @@ If the largest is provided, RGL will attempt to interpolate the rest. You will also need to provide a `width`, when using `` it is suggested you use the HOC `WidthProvider` as per the instructions below. -For the time being, it is not possible to supply responsive mappings via the `_grid` property on individual +For the time being, it is not possible to supply responsive mappings via the `data-grid` property on individual items, but that is coming soon. ### Providing Grid Width @@ -234,9 +237,14 @@ autoSize: ?boolean = true, // Number of columns in this layout. cols: ?number = 12, -// A selector that will not be draggable. +// A CSS selector for tags that will not be draggable. +// For example: draggableCancel:'.MyNonDraggableAreaClassName' +// If you forget the leading . it will not work. draggableCancel: ?string = '', -// A selector for the draggable handler + +// A CSS selector for tags that will act as the draggable handle. +// For example: draggableHandle:'.MyDragHandleClassName' +// If you forget the leading . it will not work. draggableHandle: ?string = '', // If true, the layout will compact vertically @@ -248,11 +256,14 @@ verticalCompact: ?boolean = true, // If you choose to use custom keys, you can specify that key in the layout // array objects like so: // {i: string, x: number, y: number, w: number, h: number} -layout: ?array = null, // If not provided, use _grid props on children +layout: ?array = null, // If not provided, use data-grid props on children // Margin between items [x, y] in px. margin: ?[number, number] = [10, 10], +// Padding inside the container [x, y] in px +containerPadding: ?[number, number] = margin, + // Rows have a static height, but you can change this based on breakpoints // if you like. rowHeight: ?number = 150, @@ -324,14 +335,14 @@ onBreakpointChange: (newBreakpoint: string, newCols: number) => void, onLayoutChange: (currentLayout: Layout, allLayouts: {[key: $Keys void, // Callback when the width changes, so you can modify the layout as needed. -onWidthChange: (containerWidth: number, margin: [number, number], cols: number) => void; +onWidthChange: (containerWidth: number, margin: [number, number], cols: number, containerPadding: [number, number]) => void; ``` ### Grid Item Props RGL supports the following properties on grid items or layout items. When initializing a grid, -build a layout array (as in the first example above), or attach this object as the `_grid` property +build a layout array (as in the first example above), or attach this object as the `data-grid` property to each of your child elements (as in the second example). Note that if a grid item is provided but incomplete (missing one of `x, y, w, or h`), an error @@ -376,6 +387,9 @@ will be draggable. If you have a feature request, please add it as an issue or make a pull request. +If you have a bug to report, please reproduce the bug in [WebpackBin](http://www.webpackbin.com/VymTE3zWG) to help +us easily isolate it. + ## TODO List - [x] Basic grid layout @@ -385,7 +399,7 @@ If you have a feature request, please add it as an issue or make a pull request. - [x] Live grid packing while dragging - [x] Resizable grid items - [x] Layouts per responsive breakpoint -- [x] Define grid attributes on children themselves (`_grid` key) +- [x] Define grid attributes on children themselves (`data-grid` key) - [x] Static elements - [x] Persistent id per item for predictable localstorage restores, even when # items changes - [x] Min/max w/h per item diff --git a/__tests__/utils-test.js b/__tests__/utils-test.js new file mode 100644 index 000000000..dd2ea492c --- /dev/null +++ b/__tests__/utils-test.js @@ -0,0 +1,47 @@ +import {bottom, collides, validateLayout} from '../lib/utils.js'; + +describe('bottom', () => { + it('Handles an empty layout as input', () => { + expect(bottom([])).toBe(0); + }); + + it('Returns the bottom coordinate of the layout', () => { + expect(bottom([ + {x: 0, y: 1, w: 1, h: 1}, + {x: 1, y: 2, w: 1, h: 1} + ])).toBe(3); + }); +}); + +describe('collides', () => { + it('Returns whether the layout items collide', () => { + expect(collides( + {x: 0, y: 1, w: 1, h: 1}, + {x: 1, y: 2, w: 1, h: 1} + )).toBe(false); + expect(collides( + {x: 0, y: 1, w: 1, h: 1}, + {x: 0, y: 1, w: 1, h: 1} + )).toBe(true); + }); +}); + +describe('validateLayout', () => { + it('Validates an empty layout', () => { + validateLayout([]); + }); + it('Validates a populated layout', () => { + validateLayout([ + {x: 0, y: 1, w: 1, h: 1}, + {x: 1, y: 2, w: 1, h: 1} + ]); + }); + it('Throws errors on invalid input', () => { + expect(() => { + validateLayout([ + {x: 0, y: 1, w: 1, h: 1}, + {x: 1, y: 2, w: 1} + ]); + }).toThrowError('Layout[1].h must be a number!'); + }); +}); diff --git a/css/styles.css b/css/styles.css index b66599536..765287187 100644 --- a/css/styles.css +++ b/css/styles.css @@ -11,11 +11,13 @@ } .react-grid-item.resizing { z-index: 1; + will-change: width, height; } .react-grid-item.react-draggable-dragging { transition: none; z-index: 3; + will-change: transform; } .react-grid-item.react-grid-placeholder { diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index 733ea375a..9c33bed62 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -1,8 +1,12 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],e):"object"==typeof exports?exports.ReactGridLayout=e(require("react"),require("react-dom")):t.ReactGridLayout=e(t.React,t.ReactDOM)}(this,function(t,e){return function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";t.exports=r(3)["default"],t.exports.utils=r(2),t.exports.Responsive=r(11)["default"],t.exports.Responsive.utils=r(4),t.exports.WidthProvider=r(12)["default"]},function(e,r){e.exports=t},function(t,e,r){"use strict";function n(t){for(var e=0,r=void 0,n=0,o=t.length;o>n;n++)r=t[n].y+t[n].h,r>e&&(e=r);return e}function o(t){for(var e=Array(t.length),r=0,n=t.length;n>r;r++)e[r]=a(t[r]);return e}function a(t){return{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,minW:t.minW,maxW:t.maxW,minH:t.minH,maxH:t.maxH,moved:Boolean(t.moved),"static":Boolean(t["static"]),isDraggable:t.isDraggable,isResizable:t.isResizable}}function i(t,e){return t===e?!1:t.x+t.w<=e.x?!1:t.x>=e.x+e.w?!1:t.y+t.h<=e.y?!1:!(t.y>=e.y+e.h)}function s(t,e){for(var r=h(t),n=b(t),o=Array(t.length),a=0,i=n.length;i>a;a++){var s=n[a];s["static"]||(s=u(r,s,e),r.push(s)),o[t.indexOf(s)]=s,s.moved=!1}return o}function u(t,e,r){if(r)for(;e.y>0&&!p(t,e);)e.y--;for(var n=void 0;n=p(t,e);)e.y=n.y+n.h;return e}function c(t,e){for(var r=h(t),n=0,o=t.length;o>n;n++){var a=t[n];if(a.x+a.w>e.cols&&(a.x=e.cols-a.w),a.x<0&&(a.x=0,a.w=e.cols),a["static"])for(;p(r,a);)a.y++;else r.push(a)}return t}function l(t,e){for(var r=0,n=t.length;n>r;r++)if(t[r].i===e)return t[r]}function p(t,e){for(var r=0,n=t.length;n>r;r++)if(i(t[r],e))return t[r]}function f(t,e){return t.filter(function(t){return i(t,e)})}function h(t){return t.filter(function(t){return t["static"]})}function d(t,e,r,n,o){if(e["static"])return t;if(e.y===n&&e.x===r)return t;var a=n&&e.y>n;"number"==typeof r&&(e.x=r),"number"==typeof n&&(e.y=n),e.moved=!0;var i=b(t);a&&(i=i.reverse());for(var s=f(i,e),u=0,c=s.length;c>u;u++){var l=s[u];l.moved||e.y>l.y&&e.y-l.y>l.h/4||(t=l["static"]?y(t,l,e,o):y(t,e,l,o))}return t}function y(t,e,r,n){if(n){var o={x:r.x,y:r.y,w:r.w,h:r.h,i:"-1"};if(o.y=Math.max(e.y-r.h,0),!p(t,o))return d(t,r,void 0,o.y)}return d(t,r,void 0,r.y+1)}function g(t){return 100*t+"%"}function m(t){var e=t.top,r=t.left,n=t.width,o=t.height,a="translate("+r+"px,"+e+"px)";return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:n+"px",height:o+"px",position:"absolute"}}function v(t){var e=t.top,r=t.left,n=t.width,o=t.height;return{top:e+"px",left:r+"px",width:n+"px",height:o+"px",position:"absolute"}}function b(t){return[].concat(t).sort(function(t,e){return t.y>e.y||t.y===e.y&&t.x>e.x?1:-1})}function w(t,e,r,o){Array.isArray(e)||(e=[e]),t=t||[];for(var i=[],u=0,p=e.length;p>u;u++){var f=void 0,h=e[u],d=l(t,h.key||"1");if(d)f=d;else{var y=h.props._grid;y?(T||S([y],"ReactGridLayout.children"),f=a(o?P({},y,{y:Math.min(n(i),y.y),i:h.key}):P({},y,{y:y.y,i:h.key}))):f=a({w:1,h:1,x:0,y:n(i),i:h.key||"1"})}i[u]=f}return i=c(i,{cols:r}),i=s(i,o)}function S(t,e){e=e||"Layout";var r=["x","y","w","h"];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var n=0,o=t.length;o>n;n++){for(var a=t[n],i=0;io;o++){var s=r[o];e>t[s]&&(n=s)}return n}function o(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function a(t,e,r,n,o,a){if(t[r])return(0,s.cloneLayout)(t[r]);for(var u=t[n],c=i(e),l=c.slice(c.indexOf(r)),p=0,f=l.length;f>p;p++){var h=l[p];if(t[h]){u=t[h];break}}return u=(0,s.cloneLayout)(u||[]),(0,s.compact)((0,s.correctBounds)(u,{cols:o}),a)}function i(t){var e=Object.keys(t);return e.sort(function(e,r){return t[e]-t[r]})}e.__esModule=!0,e.getBreakpointFromWidth=n,e.getColsFromBreakpoint=o,e.findOrGenerateResponsiveLayout=a,e.sortBreakpoints=i;var s=r(2)},function(t,e,r){function n(t,e){for(var r=-1,n=t.length;++rl))return!1;var f=i.get(t);if(f)return f==e;var h=!0;for(i.set(t,e);++s-1&&t%1==0&&_>=t}function w(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function S(t){return!!t&&"object"==typeof t}function x(t){if(!w(t))return!1;var e=v(t)||o(t)?lt:ot;return e.test(g(t))}function P(t){return S(t)&&b(t.length)&&!!at[ct.call(t)]}var T=r(14),R=r(15),O=r(13),j=1,D=2,_=9007199254740991,C="[object Arguments]",z="[object Array]",M="[object Boolean]",k="[object Date]",E="[object Error]",W="[object Function]",L="[object GeneratorFunction]",H="[object Map]",A="[object Number]",N="[object Object]",I="[object Promise]",B="[object RegExp]",X="[object Set]",Y="[object String]",G="[object Symbol]",F="[object WeakMap]",q="[object ArrayBuffer]",U="[object DataView]",$="[object Float32Array]",V="[object Float64Array]",K="[object Int8Array]",J="[object Int16Array]",Q="[object Int32Array]",Z="[object Uint8Array]",tt="[object Uint8ClampedArray]",et="[object Uint16Array]",rt="[object Uint32Array]",nt=/[\\^$.*+?()[\]{}|]/g,ot=/^\[object .+?Constructor\]$/,at={};at[$]=at[V]=at[K]=at[J]=at[Q]=at[Z]=at[tt]=at[et]=at[rt]=!0,at[C]=at[z]=at[q]=at[M]=at[U]=at[k]=at[E]=at[W]=at[H]=at[A]=at[N]=at[B]=at[X]=at[Y]=at[F]=!1;var it=Object.prototype,st=Function.prototype.toString,ut=it.hasOwnProperty,ct=it.toString,lt=RegExp("^"+st.call(ut).replace(nt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),pt=O.Symbol,ft=O.Uint8Array,ht=Object.getPrototypeOf,dt=h(O,"DataView"),yt=h(O,"Map"),gt=h(O,"Promise"),mt=h(O,"Set"),vt=h(O,"WeakMap"),bt=g(dt),wt=g(yt),St=g(gt),xt=g(mt),Pt=g(vt),Tt=pt?pt.prototype:void 0,Rt=Tt?Tt.valueOf:void 0;(dt&&y(new dt(new ArrayBuffer(1)))!=U||yt&&y(new yt)!=H||gt&&y(gt.resolve())!=I||mt&&y(new mt)!=X||vt&&y(new vt)!=F)&&(y=function(t){var e=ct.call(t),r=e==N?t.constructor:void 0,n=r?g(r):void 0;if(n)switch(n){case bt:return U;case wt:return H;case St:return I;case xt:return X;case Pt:return F}return e});var Ot=Array.isArray;t.exports=m},function(t,e,r){!function(e,n){t.exports=n(r(1),r(9))}(this,function(t,e){return function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";t.exports=r(1)["default"],t.exports.DraggableCore=r(9)["default"]},function(t,e,r){(function(t){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var s=Object.assign||function(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){"undefined"!=typeof t.SVGElement&&h["default"].findDOMNode(this)instanceof t.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(t){!t.position||this.props.position&&t.position.x===this.props.position.x&&t.position.y===this.props.position.y||this.setState({x:t.position.x,y:t.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t={},e=null,r=Boolean(this.props.position),n=!r||this.state.dragging,o=this.props.position||this.props.defaultPosition,a={x:(0,m.canDragX)(this)&&n?this.state.x:o.x,y:(0,m.canDragY)(this)&&n?this.state.y:o.y};this.state.isElementSVG?e=(0,g.createSVGTransform)(a):t=(0,g.createCSSTransform)(a);var i=(0,y["default"])(this.props.children.props.className||"","react-draggable",{"react-draggable-dragging":this.state.dragging,"react-draggable-dragged":this.state.dragged});return p["default"].createElement(w["default"],s({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),p["default"].cloneElement(p["default"].Children.only(this.props.children),{className:i,style:s({},this.props.children.props.style,t),transform:e}))}}]),r}(p["default"].Component);P.displayName="Draggable",P.propTypes=s({},w["default"].propTypes,{axis:l.PropTypes.oneOf(["both","x","y","none"]),bounds:l.PropTypes.oneOfType([l.PropTypes.shape({left:l.PropTypes.number,right:l.PropTypes.number,top:l.PropTypes.number,bottom:l.PropTypes.number}),l.PropTypes.string,l.PropTypes.oneOf([!1])]),defaultPosition:l.PropTypes.shape({x:l.PropTypes.number,y:l.PropTypes.number}),position:l.PropTypes.shape({x:l.PropTypes.number,y:l.PropTypes.number}),className:v.dontSetMe,style:v.dontSetMe,transform:v.dontSetMe}),P.defaultProps=s({},w["default"].defaultProps,{axis:"both",bounds:!1,defaultPosition:{x:0,y:0},position:null}),e["default"]=P}).call(e,function(){return this}())},function(e,r){e.exports=t},function(t,r){t.exports=e},function(t,e,r){var n,o;/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames - */ -!function(){"use strict";function r(){for(var t=[],e=0;er;r++)if(e.apply(e,[t[r],r,t]))return t[r]}function n(t){return"function"==typeof t||"[object Function]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t&&!isNaN(t)}function a(t){return parseInt(t,10)}function i(t,e,r){return t[e]?new Error("Invalid prop "+e+" passed to "+r+" - do not set this, set it on the child."):void 0}Object.defineProperty(e,"__esModule",{value:!0}),e.findInArray=r,e.isFunction=n,e.isNum=o,e["int"]=a,e.dontSetMe=i},function(t,e){"use strict";function r(){var t=arguments.length<=0||void 0===arguments[0]?"transform":arguments[0];if("undefined"==typeof window||"undefined"==typeof window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var r=0;rl;l++)c[l]=arguments[l];return r=n=a(this,(t=Object.getPrototypeOf(e)).call.apply(t,[this].concat(c))),n.state={dragging:!1,lastX:NaN,lastY:NaN,touchIdentifier:null},n.handleDragStart=function(t){if(n.props.onMouseDown(t),!n.props.allowAnyClick&&"number"==typeof t.button&&0!==t.button)return!1;if(!(n.props.disabled||!(t.target instanceof Node)||n.props.handle&&!(0,h.matchesSelectorAndParentsTo)(t.target,n.props.handle,f["default"].findDOMNode(n))||n.props.cancel&&(0,h.matchesSelectorAndParentsTo)(t.target,n.props.cancel,f["default"].findDOMNode(n)))){var e=(0,h.getTouchIdentifier)(t);n.setState({touchIdentifier:e});var r=(0,d.getControlPosition)(t,e,n);if(null!=r){var o=r.x,a=r.y,i=(0,d.createCoreData)(n,o,a);(0,m["default"])("DraggableCore: handleDragStart: %j",i),(0,m["default"])("calling",n.props.onStart);var s=n.props.onStart(t,i);s!==!1&&(n.props.enableUserSelectHack&&(0,h.addUserSelectStyles)(),n.setState({dragging:!0,lastX:o,lastY:a}),(0,h.addEvent)(document,b.move,n.handleDrag),(0,h.addEvent)(document,b.stop,n.handleDragStop))}}},n.handleDrag=function(t){var e=(0,d.getControlPosition)(t,n.state.touchIdentifier,n);if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,u=(0,d.snapToGrid)(n.props.grid,a,i),c=s(u,2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var l=(0,d.createCoreData)(n,r,o);(0,m["default"])("DraggableCore: handleDrag: %j",l);var p=n.props.onDrag(t,l);return p===!1?void n.handleDragStop(new MouseEvent):void n.setState({lastX:r,lastY:o})}},n.handleDragStop=function(t){if(n.state.dragging){var e=(0,d.getControlPosition)(t,n.state.touchIdentifier,n);if(null!=e){var r=e.x,o=e.y,a=(0,d.createCoreData)(n,r,o);n.props.enableUserSelectHack&&(0,h.removeUserSelectStyles)(),(0,m["default"])("DraggableCore: handleDragStop: %j",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),(0,m["default"])("DraggableCore: Removing handlers"),(0,h.removeEvent)(document,b.move,n.handleDrag),(0,h.removeEvent)(document,b.stop,n.handleDragStop)}}},n.onMouseDown=function(t){return b=v.mouse,n.handleDragStart(t)},n.onMouseUp=function(t){return b=v.mouse,n.handleDragStop(t)},n.onTouchStart=function(t){return b=v.touch,n.handleDragStart(t)},n.onTouchEnd=function(t){return b=v.touch,n.handleDragStop(t)},i=r,a(n,i)}return i(e,t),u(e,[{key:"componentWillUnmount",value:function(){(0,h.removeEvent)(document,v.mouse.move,this.handleDrag),(0,h.removeEvent)(document,v.touch.move,this.handleDrag),(0,h.removeEvent)(document,v.mouse.stop,this.handleDragStop),(0,h.removeEvent)(document,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,h.removeUserSelectStyles)()}},{key:"render",value:function(){return l["default"].cloneElement(l["default"].Children.only(this.props.children),{style:(0,h.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),e}(l["default"].Component);w.displayName="DraggableCore",w.propTypes={allowAnyClick:c.PropTypes.bool,disabled:c.PropTypes.bool,enableUserSelectHack:c.PropTypes.bool,grid:c.PropTypes.arrayOf(c.PropTypes.number),handle:c.PropTypes.string,cancel:c.PropTypes.string,onStart:c.PropTypes.func,onDrag:c.PropTypes.func,onStop:c.PropTypes.func,onMouseDown:c.PropTypes.func,className:y.dontSetMe,style:y.dontSetMe,transform:y.dontSetMe},w.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},e["default"]=w},function(t,e,r){"use strict";function n(){}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n}])})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){var r={};for(var n in t)e.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;ec;c++)u[c]=arguments[c];return r=n=i(this,t.call.apply(t,[this].concat(u))),n.state={resizing:!1,width:n.props.width,height:n.props.height,slackW:0,slackH:0},o=r,i(n,o)}return s(e,t),e.prototype.componentWillReceiveProps=function(t){this.state.resizing||t.width===this.props.width&&t.height===this.props.height||this.setState({width:t.width,height:t.height})},e.prototype.lockAspectRatio=function(t,e,r){return e=t/r,t=e*r,[t,e]},e.prototype.runConstraints=function(t,e){var r=this.props.minConstraints,n=this.props.maxConstraints;if(this.props.lockAspectRatio){var o=this.state.width/this.state.height;e=t/o,t=e*o}if(!r&&!n)return[t,e];var a=t,i=e,s=this.state,u=s.slackW,c=s.slackH;return t+=u,e+=c,r&&(t=Math.max(r[0],t),e=Math.max(r[1],e)),n&&(t=Math.min(n[0],t),e=Math.min(n[1],e)),u+=a-t,c+=i-e,u===this.state.slackW&&c===this.state.slackH||this.setState({slackW:u,slackH:c}),[t,e]},e.prototype.resizeHandler=function(t){var e=this;return function(r,n){var o=n.node,a=n.deltaX,i=n.deltaY,s=e.state.width+a,u=e.state.height+i,c=s!==e.state.width,l=u!==e.state.height;if("onResize"!==t||c||l){var p=e.runConstraints(s,u);s=p[0],u=p[1];var f={};if("onResizeStart"===t)f.resizing=!0;else if("onResizeStop"===t)f.resizing=!1,f.slackW=f.slackH=0;else{if(s===e.state.width&&u===e.state.height)return;f.width=s,f.height=u}e.setState(f,function(){e.props[t]&&e.props[t](r,{node:o,size:{width:s,height:u}})})}}},e.prototype.render=function(){var t=this.props,e=(t.width,t.height,o(t,["width","height"])),r=e.className?e.className+" react-resizable":"react-resizable";return(0,h["default"])(e.children,u({},e,{className:r,children:[e.children.props.children,l["default"].createElement(p.DraggableCore,u({},e.draggableOpts,{key:"resizableHandle",ref:"draggable",onStop:this.resizeHandler("onResizeStop"),onStart:this.resizeHandler("onResizeStart"),onDrag:this.resizeHandler("onResize")}),l["default"].createElement("span",{className:"react-resizable-handle"}))]}))},e}(l["default"].Component);d.propTypes={children:c.PropTypes.element.isRequired,width:c.PropTypes.number.isRequired,height:c.PropTypes.number.isRequired,handleSize:c.PropTypes.array,lockAspectRatio:c.PropTypes.bool,minConstraints:c.PropTypes.arrayOf(c.PropTypes.number),maxConstraints:c.PropTypes.arrayOf(c.PropTypes.number),onResizeStop:c.PropTypes.func,onResizeStart:c.PropTypes.func,onResize:c.PropTypes.func,draggableOpts:c.PropTypes.object},d.defaultProps={handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0]},e["default"]=d},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,r){t.exports=e},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;ec;c++)u[c]=arguments[c];return r=n=a(this,t.call.apply(t,[this].concat(u))),n.state={resizing:null,dragging:null,className:""},i=r,a(n,i)}return i(e,t),e.prototype.calcColWidth=function(){var t=this.props,e=t.margin,r=t.containerWidth,n=t.cols;return(r-e[0]*(n+1))/n},e.prototype.calcPosition=function(t,e,r,n,o){var a=this.props,i=a.margin,s=a.rowHeight,u=this.calcColWidth(),c={left:Math.round(u*t+(t+1)*i[0]),top:Math.round(s*e+(e+1)*i[1]),width:r===1/0?r:Math.round(u*r+Math.max(0,r-1)*i[0]),height:n===1/0?n:Math.round(s*n+Math.max(0,n-1)*i[1])};return o&&o.resizing&&(c.width=Math.round(o.resizing.width),c.height=Math.round(o.resizing.height)),o&&o.dragging&&(c.top=Math.round(o.dragging.top),c.left=Math.round(o.dragging.left)),c},e.prototype.calcXY=function(t,e){var r=this.props,n=r.margin,o=r.cols,a=r.rowHeight,i=r.w,s=r.h,u=r.maxRows,c=this.calcColWidth(),l=Math.round((e-n[0])/(c+n[0])),p=Math.round((t-n[1])/(a+n[1]));return l=Math.max(Math.min(l,o-i),0),p=Math.max(Math.min(p,u-s),0),{x:l,y:p}},e.prototype.calcWH=function(t){var e=t.height,r=t.width,n=this.props,o=n.margin,a=n.maxRows,i=n.cols,s=n.rowHeight,u=n.x,c=n.y,l=this.calcColWidth(),p=Math.round((r+o[0])/(l+o[0])),f=Math.round((e+o[1])/(s+o[1]));return p=Math.max(Math.min(p,i-u),0),f=Math.max(Math.min(f,a-c),0),{w:p,h:f}},e.prototype.createStyle=function(t){var e=this.props,r=e.usePercentages,n=e.containerWidth,o=e.useCSSTransforms,a=void 0;return o?a=(0,f.setTransform)(t):(a=(0,f.setTopLeft)(t),r&&(a.left=(0,f.perc)(t.left/n),a.width=(0,f.perc)(t.width/n))),a},e.prototype.mixinDraggable=function(t){return c["default"].createElement(l.DraggableCore,{onStart:this.onDragHandler("onDragStart"),onDrag:this.onDragHandler("onDrag"),onStop:this.onDragHandler("onDragStop"),handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:"")},t)},e.prototype.mixinResizable=function(t,e){var r=this.props,n=r.cols,o=r.x,a=r.minW,i=r.minH,s=r.maxW,u=r.maxH,l=this.calcPosition(0,0,n-o,0).width,f=this.calcPosition(0,0,a,i),h=this.calcPosition(0,0,s,u),d=[f.width,f.height],y=[Math.min(h.width,l),Math.min(h.height,1/0)];return c["default"].createElement(p.Resizable,{width:e.width,height:e.height,minConstraints:d,maxConstraints:y,onResizeStop:this.onResizeHandler("onResizeStop"),onResizeStart:this.onResizeHandler("onResizeStart"),onResize:this.onResizeHandler("onResize")},t)},e.prototype.onDragHandler=function(t){var e=this;return function(r,n){var o=n.node,a=n.deltaX,i=n.deltaY;if(e.props[t]){var s={top:0,left:0};switch(t){case"onDragStart":var u=o.offsetParent.getBoundingClientRect(),c=o.getBoundingClientRect();s.left=c.left-u.left,s.top=c.top-u.top,e.setState({dragging:s});break;case"onDrag":if(!e.state.dragging)throw new Error("onDrag called before onDragStart.");s.left=e.state.dragging.left+a,s.top=e.state.dragging.top+i,e.setState({dragging:s});break;case"onDragStop":if(!e.state.dragging)throw new Error("onDragEnd called before onDragStart.");s.left=e.state.dragging.left,s.top=e.state.dragging.top,e.setState({dragging:null});break;default:throw new Error("onDragHandler called with unrecognized handlerName: "+t)}var l=e.calcXY(s.top,s.left),p=l.x,f=l.y;e.props[t](e.props.i,p,f,{e:r,node:o,newPosition:s})}}},e.prototype.onResizeHandler=function(t){var e=this;return function(r,n){var o=n.element,a=n.size;if(e.props[t]){var i=e.props,s=i.cols,u=i.x,c=i.i,l=i.maxW,p=i.minW,f=i.maxH,h=i.minH,d=e.calcWH(a),y=d.w,g=d.h;y=Math.min(y,s-u),y=Math.max(y,1),y=Math.max(Math.min(y,l),p),g=Math.max(Math.min(g,f),h),e.setState({resizing:"onResizeStop"===t?null:a}),e.props[t](c,y,g,{e:r,element:o,size:a})}}},e.prototype.render=function(){var t=this.props,e=t.x,r=t.y,n=t.w,o=t.h,a=t.isDraggable,i=t.isResizable,u=t.useCSSTransforms,l=this.calcPosition(e,r,n,o,this.state),p=c["default"].Children.only(this.props.children),f=c["default"].cloneElement(p,{className:["react-grid-item",p.props.className||"",this.props.className,this.props["static"]?"static":"",this.state.resizing?"resizing":"",this.state.dragging?"react-draggable-dragging":"",u?"cssTransforms":""].join(" "),style:s({},this.props.style,p.props.style,this.createStyle(l))});return i&&(f=this.mixinResizable(f,l)),a&&(f=this.mixinDraggable(f)),f},e}(c["default"].Component);h.propTypes={children:u.PropTypes.element,cols:u.PropTypes.number.isRequired,containerWidth:u.PropTypes.number.isRequired,rowHeight:u.PropTypes.number.isRequired,margin:u.PropTypes.array.isRequired,maxRows:u.PropTypes.number.isRequired,x:u.PropTypes.number.isRequired,y:u.PropTypes.number.isRequired,w:u.PropTypes.number.isRequired,h:u.PropTypes.number.isRequired,minW:function(t,e,r,n,o){u.PropTypes.number(t,e,r,n,o);var a=t[e];return a>t.w||a>t.maxW?new Error("minWidth bigger than item width/maxWidth"):void 0},maxW:function(t,e,r,n,o){u.PropTypes.number(t,e,r,n,o);var a=t[e];return at.h||a>t.maxH?new Error("minHeight bigger than item height/maxHeight"):void 0},maxH:function(t,e,r,n,o){u.PropTypes.number(t,e,r,n,o);var a=t[e];return a=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;el;l++)c[l]=arguments[l];return r=n=i(this,t.call.apply(t,[this].concat(c))),n.state=n.generateInitialState(),n.onLayoutChange=function(t){var e;n.props.onLayoutChange(t,u({},n.props.layouts,(e={},e[n.state.breakpoint]=t,e)))},o=r,i(n,o)}return s(e,t),e.prototype.generateInitialState=function(){var t=this.props,e=t.width,r=t.breakpoints,n=t.layouts,o=t.verticalCompact,a=t.cols,i=(0,d.getBreakpointFromWidth)(r,e),s=(0,d.getColsFromBreakpoint)(i,a),u=(0,d.findOrGenerateResponsiveLayout)(n,r,i,i,s,o);return{layout:u,breakpoint:i,cols:s}},e.prototype.componentWillReceiveProps=function(t){if(t.width!=this.props.width||t.breakpoint!==this.props.breakpoint||t.breakpoints!==this.props.breakpoints||t.cols!==this.props.cols)this.onWidthChange(t);else if(!(0,f["default"])(t.layouts,this.props.layouts)){var e=this.state,r=e.breakpoint,n=e.cols,o=(0,d.findOrGenerateResponsiveLayout)(t.layouts,t.breakpoints,r,r,n,t.verticalLayout);this.setState({layout:o})}},e.prototype.onWidthChange=function(t){var e=t.breakpoints,r=t.verticalLayout,n=t.verticalCompact,o=t.cols,a=t.breakpoint||(0,d.getBreakpointFromWidth)(t.breakpoints,t.width),i=this.state.breakpoint;if(i!==a||this.props.breakpoints!==e||this.props.cols!==o){var s=t.layouts;s[i]=(0,h.cloneLayout)(this.state.layout);var u=(0,d.getColsFromBreakpoint)(a,o),c=(0,d.findOrGenerateResponsiveLayout)(s,e,a,i,u,r);c=(0,h.synchronizeLayoutWithChildren)(c,t.children,u,n),s[a]=c,this.props.onLayoutChange(c,s),this.props.onBreakpointChange(a,u),this.props.onWidthChange(t.width,t.margin,u),this.setState({breakpoint:a,layout:c,cols:u})}},e.prototype.render=function(){var t=this.props,e=(t.breakpoint,t.breakpoints,t.cols,t.layouts,t.onBreakpointChange,t.onLayoutChange,t.onWidthChange,o(t,["breakpoint","breakpoints","cols","layouts","onBreakpointChange","onLayoutChange","onWidthChange"]));return l["default"].createElement(g["default"],u({},e,{onLayoutChange:this.onLayoutChange,layout:this.state.layout,cols:this.state.cols}))},e}(l["default"].Component);v.propTypes={breakpoint:l["default"].PropTypes.string,breakpoints:l["default"].PropTypes.object,cols:l["default"].PropTypes.object,layouts:function(t){l["default"].PropTypes.object.isRequired.apply(this,arguments),Object.keys(t.layouts).forEach(function(e){return(0,h.validateLayout)(t.layouts[e],"layouts."+e)})},width:l["default"].PropTypes.number.isRequired,onBreakpointChange:l["default"].PropTypes.func,onLayoutChange:l["default"].PropTypes.func,onWidthChange:l["default"].PropTypes.func},v.defaultProps={breakpoints:{lg:1200,md:996,sm:768,xs:480,xxs:0},cols:{lg:12,md:10,sm:6,xs:4,xxs:2},layouts:{},onBreakpointChange:m,onLayoutChange:m,onWidthChange:m},e["default"]=v},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;ec;c++)u[c]=arguments[c];return t=n=a(this,e.call.apply(e,[this].concat(u))),n.state={mounted:!1,width:1280},n.onWindowResize=function(t,e){var r=p["default"].findDOMNode(n);n.setState({width:r.offsetWidth},e)},i=t,a(n,i)}return i(r,e),r.prototype.componentDidMount=function(){this.setState({mounted:!0}),window.addEventListener("resize",this.onWindowResize),this.onWindowResize()},r.prototype.componentWillUnmount=function(){window.removeEventListener("resize",this.onWindowResize)},r.prototype.render=function(){return this.props.measureBeforeMount&&!this.state.mounted?c["default"].createElement("div",s({},this.props,this.state)):c["default"].createElement(t,s({},this.props,this.state))},r}(c["default"].Component),e.defaultProps={measureBeforeMount:!1},e.propTypes={measureBeforeMount:c["default"].PropTypes.bool},r}},function(t,e,r){(function(t,r){function n(t){return t&&t.Object===Object?t:null}var o={"function":!0,object:!0},a=o[typeof e]&&e&&!e.nodeType?e:void 0,i=o[typeof t]&&t&&!t.nodeType?t:void 0,s=n(a&&i&&"object"==typeof r&&r),u=n(o[typeof self]&&self),c=n(o[typeof window]&&window),l=n(o[typeof this]&&this),p=s||c!==(l&&l.window)&&c||u||l||Function("return this")();t.exports=p}).call(e,r(8)(t),function(){return this}())},function(t,e,r){(function(t,r){function n(t){return t&&t.Object===Object?t:null}function o(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(r){}return e}function a(){}function i(t,e){return u(t,e)&&delete t[e]}function s(t,e){if(rt){var r=t[e];return r===W?void 0:r}return J.call(t,e)?t[e]:void 0}function u(t,e){return rt?void 0!==t[e]:J.call(t,e)}function c(t,e,r){t[e]=rt&&void 0===r?W:r}function l(t){var e=-1,r=t?t.length:0;for(this.clear();++er)return!1;var n=t.length-1;return r==n?t.pop():tt.call(t,r,1),!0}function P(t,e){var r=R(t,e);return 0>r?void 0:t[r][1]}function T(t,e){return R(t,e)>-1}function R(t,e){for(var r=t.length;r--;)if(C(t[r][0],e))return r;return-1}function O(t,e,r){var n=R(t,e);0>n?t.push([e,r]):t[n][1]=r}function j(t,e){var r=t[e];return k(r)?r:void 0}function D(t){var e=typeof t;return"number"==e||"boolean"==e||"string"==e&&"__proto__"!=t||null==t}function _(t){if(null!=t){try{return K.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function C(t,e){return t===e||t!==t&&e!==e}function z(t){var e=M(t)?Q.call(t):"";return e==L||e==H}function M(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function k(t){if(!M(t))return!1;var e=z(t)||o(t)?Z:N;return e.test(_(t))}var E=200,W="__lodash_hash_undefined__",L="[object Function]",H="[object GeneratorFunction]",A=/[\\^$.*+?()[\]{}|]/g,N=/^\[object .+?Constructor\]$/,I={"function":!0,object:!0},B=I[typeof e]&&e&&!e.nodeType?e:void 0,X=I[typeof t]&&t&&!t.nodeType?t:void 0,Y=n(B&&X&&"object"==typeof r&&r),G=n(I[typeof self]&&self),F=n(I[typeof window]&&window),q=n(I[typeof this]&&this),U=Y||F!==(q&&q.window)&&F||G||q||Function("return this")(),$=Array.prototype,V=Object.prototype,K=Function.prototype.toString,J=V.hasOwnProperty,Q=V.toString,Z=RegExp("^"+K.call(J).replace(A,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),tt=$.splice,et=j(U,"Map"),rt=j(Object,"create");a.prototype=rt?rt(null):V,l.prototype.clear=p,l.prototype["delete"]=f,l.prototype.get=h,l.prototype.has=d,l.prototype.set=y,g.prototype.clear=m,g.prototype["delete"]=v,g.prototype.get=b,g.prototype.has=w,g.prototype.set=S,t.exports=g}).call(e,r(8)(t),function(){ -return this}())},function(t,e){function r(t,e){for(var r=-1,n=Array(t);++r-1&&t%1==0&&e>t}function o(t,e){return O.call(t,e)||"object"==typeof t&&e in t&&null===s(t)}function a(t){return C(Object(t))}function i(t){return function(e){return null==e?void 0:e[t]}}function s(t){return _(Object(t))}function u(t){var e=t?t.length:void 0;return d(e)&&(M(t)||m(t)||l(t))?r(e,String):null}function c(t){var e=t&&t.constructor,r="function"==typeof e&&e.prototype||R;return t===r}function l(t){return f(t)&&O.call(t,"callee")&&(!D.call(t,"callee")||j.call(t)==w)}function p(t){return null!=t&&d(z(t))&&!h(t)}function f(t){return g(t)&&p(t)}function h(t){var e=y(t)?j.call(t):"";return e==S||e==x}function d(t){return"number"==typeof t&&t>-1&&t%1==0&&b>=t}function y(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function g(t){return!!t&&"object"==typeof t}function m(t){return"string"==typeof t||!M(t)&&g(t)&&j.call(t)==P}function v(t){var e=c(t);if(!e&&!p(t))return a(t);var r=u(t),i=!!r,s=r||[],l=s.length;for(var f in t)!o(t,f)||i&&("length"==f||n(f,l))||e&&"constructor"==f||s.push(f);return s}var b=9007199254740991,w="[object Arguments]",S="[object Function]",x="[object GeneratorFunction]",P="[object String]",T=/^(?:0|[1-9]\d*)$/,R=Object.prototype,O=R.hasOwnProperty,j=R.toString,D=R.propertyIsEnumerable,_=Object.getPrototypeOf,C=Object.keys,z=i("length"),M=Array.isArray;t.exports=v},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){var r={};for(var n in t)e.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;ec;c++)u[c]=arguments[c];return r=n=i(this,t.call.apply(t,[this].concat(u))),n.state={width:n.props.width,height:n.props.height},n.onResize=function(t,e){var r=e.element,o=e.size;o.width,o.height;n.setState(o,function(){n.props.onResize&&n.props.onResize(t,{element:r,size:o})})},o=r,i(n,o)}return s(e,t),e.prototype.render=function(){var t=this.props,e=t.handleSize,r=t.onResizeStart,n=t.onResizeStop,a=t.draggableOpts,i=t.minConstraints,s=t.maxConstraints,c=t.lockAspectRatio,p=(t.width,t.height,o(t,["handleSize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","width","height"]));return l["default"].createElement(f["default"],{handleSize:e,width:this.state.width,height:this.state.height,onResizeStart:r,onResize:this.onResize,onResizeStop:n,draggableOpts:a,minConstraints:i,maxConstraints:s,lockAspectRatio:c},l["default"].createElement("div",u({style:{width:this.state.width+"px",height:this.state.height+"px"}},p)))},e}(l["default"].Component);h.propTypes={height:c.PropTypes.number,width:c.PropTypes.number},h.defaultProps={handleSize:[20,20]},e["default"]=h},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}var o=Object.assign||function(t){for(var e=1;ee&&(e=r);return e}function a(t){for(var e=Array(t.length),r=0,n=t.length;r=e.x+e.w)&&(!(t.y+t.h<=e.y)&&!(t.y>=e.y+e.h))))}function l(t,e){for(var r=y(t),n=S(t),o=Array(t.length),a=0,s=n.length;a0&&!h(t,e);)e.y--;for(var n=void 0;n=h(t,e);)e.y=n.y+n.h;return e}function p(t,e){for(var r=y(t),n=0,o=t.length;ne.cols&&(a.x=e.cols-a.w),a.x<0&&(a.x=0,a.w=e.cols),a.static)for(;h(r,a);)a.y++;else r.push(a)}return t}function f(t,e){for(var r=0,n=t.length;rn;"number"==typeof r&&(e.x=r),"number"==typeof n&&(e.y=n),e.moved=!0;var i=S(t);a&&(i=i.reverse());for(var s=d(i,e),u=0,l=s.length;uc.y&&e.y-c.y>c.h/4||(t=c.static?m(t,c,e,o):m(t,e,c,o))}return t}function m(t,e,r,n){if(n){var o={x:r.x,y:r.y,w:r.w,h:r.h,i:"-1"};if(o.y=Math.max(e.y-r.h,0),!h(t,o))return g(t,r,void 0,o.y)}return g(t,r,void 0,r.y+1)}function b(t){return 100*t+"%"}function v(t){var e=t.top,r=t.left,n=t.width,o=t.height,a="translate("+r+"px,"+e+"px)";return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:n+"px",height:o+"px",position:"absolute"}}function w(t){var e=t.top,r=t.left,n=t.width,o=t.height;return{top:e+"px",left:r+"px",width:n+"px",height:o+"px",position:"absolute"}}function S(t){return[].concat(t).sort(function(t,e){return t.y>e.y||t.y===e.y&&t.x>e.x?1:t.y===e.y&&t.x===e.x?0:-1})}function x(t,e,r,n){t=t||[];var a=[];return C.default.Children.forEach(e,function(e,r){var n=f(t,e.key||"1");if(n)a[r]=i(n);else{!j&&e.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var s=e.props["data-grid"]||e.props._grid;s?(j||P([s],"ReactGridLayout.children"),a[r]=i(T({},s,{i:e.key}))):a[r]=i({w:1,h:1,x:0,y:o(a),i:e.key||"1"})}}),a=p(a,{cols:r}),a=l(a,n)}function P(t,e){e=e||"Layout";var r=["x","y","w","h"];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var n=0,o=t.length;n-1}function x(t,e){var r=this.__data__,n=A(r,t);return n<0?r.push([t,e]):r[n][1]=e,this}function P(t){var e=-1,r=t?t.length:0;for(this.clear();++eu))return!1;var c=i.get(t);if(c&&i.get(e))return c==e;var p=-1,f=!0,h=a&dt?new C:void 0;for(i.set(t,e),i.set(e,t);++p-1&&t%1==0&&t-1&&t%1==0&&t<=gt}function lt(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function ct(t){return!!t&&"object"==typeof t}function pt(t){return ot(t)?N(t):G(t)}var ft=200,ht="__lodash_hash_undefined__",dt=1,yt=2,gt=9007199254740991,mt="[object Arguments]",bt="[object Array]",vt="[object Boolean]",wt="[object Date]",St="[object Error]",xt="[object Function]",Pt="[object GeneratorFunction]",_t="[object Map]",Tt="[object Number]",Dt="[object Object]",Rt="[object Promise]",Ot="[object RegExp]",Ct="[object Set]",jt="[object String]",zt="[object Symbol]",Et="[object WeakMap]",Mt="[object ArrayBuffer]",kt="[object DataView]",Lt="[object Float32Array]",Wt="[object Float64Array]",Ht="[object Int8Array]",Nt="[object Int16Array]",At="[object Int32Array]",It="[object Uint8Array]",Bt="[object Uint8ClampedArray]",Xt="[object Uint16Array]",Yt="[object Uint32Array]",qt=/[\\^$.*+?()[\]{}|]/g,Gt=/^\[object .+?Constructor\]$/,Ut=/^(?:0|[1-9]\d*)$/,Ft={};Ft[Lt]=Ft[Wt]=Ft[Ht]=Ft[Nt]=Ft[At]=Ft[It]=Ft[Bt]=Ft[Xt]=Ft[Yt]=!0,Ft[mt]=Ft[bt]=Ft[Mt]=Ft[vt]=Ft[kt]=Ft[wt]=Ft[St]=Ft[xt]=Ft[_t]=Ft[Tt]=Ft[Dt]=Ft[Ot]=Ft[Ct]=Ft[jt]=Ft[Et]=!1;var Vt="object"==typeof t&&t&&t.Object===Object&&t,$t="object"==typeof self&&self&&self.Object===Object&&self,Kt=Vt||$t||Function("return this")(),Jt="object"==typeof e&&e&&!e.nodeType&&e,Qt=Jt&&"object"==typeof r&&r&&!r.nodeType&&r,Zt=Qt&&Qt.exports===Jt,te=Zt&&Vt.process,ee=function(){try{return te&&te.binding("util")}catch(t){}}(),re=ee&&ee.isTypedArray,ne=Array.prototype,oe=Function.prototype,ae=Object.prototype,ie=Kt["__core-js_shared__"],se=function(){var t=/[^.]+$/.exec(ie&&ie.keys&&ie.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),ue=oe.toString,le=ae.hasOwnProperty,ce=ae.toString,pe=RegExp("^"+ue.call(le).replace(qt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),fe=Kt.Symbol,he=Kt.Uint8Array,de=ae.propertyIsEnumerable,ye=ne.splice,ge=l(Object.keys,Object),me=K(Kt,"DataView"),be=K(Kt,"Map"),ve=K(Kt,"Promise"),we=K(Kt,"Set"),Se=K(Kt,"WeakMap"),xe=K(Object,"create"),Pe=et(me),_e=et(be),Te=et(ve),De=et(we),Re=et(Se),Oe=fe?fe.prototype:void 0,Ce=Oe?Oe.valueOf:void 0;p.prototype.clear=f,p.prototype.delete=h,p.prototype.get=d,p.prototype.has=y,p.prototype.set=g,m.prototype.clear=b,m.prototype.delete=v,m.prototype.get=w,m.prototype.has=S,m.prototype.set=x,P.prototype.clear=_,P.prototype.delete=T,P.prototype.get=D,P.prototype.has=R,P.prototype.set=O,C.prototype.add=C.prototype.push=j,C.prototype.has=z,E.prototype.clear=M,E.prototype.delete=k,E.prototype.get=L,E.prototype.has=W,E.prototype.set=H;var je=I;(me&&je(new me(new ArrayBuffer(1)))!=kt||be&&je(new be)!=_t||ve&&je(ve.resolve())!=Rt||we&&je(new we)!=Ct||Se&&je(new Se)!=Et)&&(je=function(t){var e=ce.call(t),r=e==Dt?t.constructor:void 0,n=r?et(r):void 0;if(n)switch(n){case Pe:return kt;case _e:return _t;case Te:return Rt;case De:return Ct;case Re:return Et}return e});var ze=Array.isArray,Ee=re?a(re):q;r.exports=it}).call(e,r(15),r(16)(t))},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;et[s]&&(n=s)}return n}function o(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function a(t,e,r,n,o,a){if(t[r])return(0,s.cloneLayout)(t[r]);for(var u=t[n],l=i(e),c=l.slice(l.indexOf(r)),p=0,f=c.length;p, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){"undefined"!=typeof SVGElement&&d.default.findDOMNode(this)instanceof SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(t){!t.position||this.props.position&&t.position.x===this.props.position.x&&t.position.y===this.props.position.y||this.setState({x:t.position.x,y:t.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e={},r=null,n=Boolean(this.props.position),a=!n||this.state.dragging,i=this.props.position||this.props.defaultPosition,s={x:(0,b.canDragX)(this)&&a?this.state.x:i.x,y:(0,b.canDragY)(this)&&a?this.state.y:i.y};this.state.isElementSVG?r=(0,m.createSVGTransform)(s):e=(0,m.createCSSTransform)(s);var l=this.props,c=l.defaultClassName,p=l.defaultClassNameDragging,h=l.defaultClassNameDragged,d=(0,g.default)(this.props.children.props.className||"",c,(t={},o(t,p,this.state.dragging),o(t,h,this.state.dragged),t));return f.default.createElement(S.default,u({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),f.default.cloneElement(f.default.Children.only(this.props.children),{className:d,style:u({},this.props.children.props.style,e),transform:r}))}}]),e}(f.default.Component);_.displayName="Draggable",_.propTypes=u({},S.default.propTypes,{axis:p.PropTypes.oneOf(["both","x","y","none"]),bounds:p.PropTypes.oneOfType([p.PropTypes.shape({left:p.PropTypes.number,right:p.PropTypes.number,top:p.PropTypes.number,bottom:p.PropTypes.number}),p.PropTypes.string,p.PropTypes.oneOf([!1])]),defaultClassName:p.PropTypes.string,defaultClassNameDragging:p.PropTypes.string,defaultClassNameDragged:p.PropTypes.string,defaultPosition:p.PropTypes.shape({x:p.PropTypes.number,y:p.PropTypes.number}),position:p.PropTypes.shape({x:p.PropTypes.number,y:p.PropTypes.number}),className:v.dontSetMe,style:v.dontSetMe,transform:v.dontSetMe}),_.defaultProps=u({},S.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null}),e.default=_},function(e,r){e.exports=t},function(t,r){t.exports=e},function(t,e,r){var n,o;/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + */ +!function(){"use strict";function r(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:{};return S({touchAction:"none"},t)}Object.defineProperty(e,"__esModule",{value:!0});var S=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||"undefined"==typeof window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var r=0;r1)for(var r=1;r=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;et.w||r>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var r=t[e];return"number"!=typeof r?new Error("maxWidth not Number"):rt.h||r>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var r=t[e];return"number"!=typeof r?new Error("maxHeight not Number"):r=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0;var u=Object.assign||function(t){for(var e=1;e;*/\n\t/*:: export type Position = {left: number, top: number, width: number, height: number};*/\n\t/*:: export type DragCallbackData = {\n\t node: HTMLElement,\n\t x: number, y: number,\n\t deltaX: number, deltaY: number,\n\t lastX: number, lastY: number\n\t};*/\n\t/*:: export type DragEvent = {e: Event} & DragCallbackData;*/\n\t/*:: export type Size = {width: number, height: number};*/\n\t/*:: export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};*/\n\t/*:: import type React from 'react';*/\n\t\n\t\n\tvar isProduction = (\"production\") === 'production';\n\t\n\t/**\n\t * Return the bottom coordinate of the layout.\n\t *\n\t * @param {Array} layout Layout array.\n\t * @return {Number} Bottom coordinate.\n\t */\n\tfunction bottom(layout /*: Layout*/) /*: number*/ {\n\t var max = 0,\n\t bottomY = void 0;\n\t for (var _i = 0, len = layout.length; _i < len; _i++) {\n\t bottomY = layout[_i].y + layout[_i].h;\n\t if (bottomY > max) max = bottomY;\n\t }\n\t return max;\n\t}\n\t\n\tfunction cloneLayout(layout /*: Layout*/) /*: Layout*/ {\n\t var newLayout = Array(layout.length);\n\t for (var _i2 = 0, len = layout.length; _i2 < len; _i2++) {\n\t newLayout[_i2] = cloneLayoutItem(layout[_i2]);\n\t }\n\t return newLayout;\n\t}\n\t\n\t// Fast path to cloning, since this is monomorphic\n\tfunction cloneLayoutItem(layoutItem /*: LayoutItem*/) /*: LayoutItem*/ {\n\t return {\n\t w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\n\t minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\n\t moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\n\t // These can be null\n\t isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\n\t };\n\t}\n\t\n\t/**\n\t * Given two layoutitems, check if they collide.\n\t *\n\t * @return {Boolean} True if colliding.\n\t */\n\tfunction collides(l1 /*: LayoutItem*/, l2 /*: LayoutItem*/) /*: boolean*/ {\n\t if (l1 === l2) return false; // same element\n\t if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n\t if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n\t if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n\t if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n\t return true; // boxes overlap\n\t}\n\t\n\t/**\n\t * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n\t * between items.\n\t *\n\t * @param {Array} layout Layout.\n\t * @param {Boolean} verticalCompact Whether or not to compact the layout\n\t * vertically.\n\t * @return {Array} Compacted Layout.\n\t */\n\tfunction compact(layout /*: Layout*/, verticalCompact /*: boolean*/) /*: Layout*/ {\n\t // Statics go in the compareWith array right away so items flow around them.\n\t var compareWith = getStatics(layout);\n\t // We go through the items by row and column.\n\t var sorted = sortLayoutItemsByRowCol(layout);\n\t // Holding for new items.\n\t var out = Array(layout.length);\n\t\n\t for (var _i3 = 0, len = sorted.length; _i3 < len; _i3++) {\n\t var l = sorted[_i3];\n\t\n\t // Don't move static elements\n\t if (!l.static) {\n\t l = compactItem(compareWith, l, verticalCompact);\n\t\n\t // Add to comparison array. We only collide with items before this one.\n\t // Statics are already in this array.\n\t compareWith.push(l);\n\t }\n\t\n\t // Add to output array to make sure they still come out in the right order.\n\t out[layout.indexOf(l)] = l;\n\t\n\t // Clear moved flag, if it exists.\n\t l.moved = false;\n\t }\n\t\n\t return out;\n\t}\n\t\n\t/**\n\t * Compact an item in the layout.\n\t */\n\tfunction compactItem(compareWith /*: Layout*/, l /*: LayoutItem*/, verticalCompact /*: boolean*/) /*: LayoutItem*/ {\n\t if (verticalCompact) {\n\t // Move the element up as far as it can go without colliding.\n\t while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n\t l.y--;\n\t }\n\t }\n\t\n\t // Move it down, and keep moving it down if it's colliding.\n\t var collides = void 0;\n\t while (collides = getFirstCollision(compareWith, l)) {\n\t l.y = collides.y + collides.h;\n\t }\n\t return l;\n\t}\n\t\n\t/**\n\t * Given a layout, make sure all elements fit within its bounds.\n\t *\n\t * @param {Array} layout Layout array.\n\t * @param {Number} bounds Number of columns.\n\t */\n\tfunction correctBounds(layout /*: Layout*/, bounds /*: {cols: number}*/) /*: Layout*/ {\n\t var collidesWith = getStatics(layout);\n\t for (var _i4 = 0, len = layout.length; _i4 < len; _i4++) {\n\t var l = layout[_i4];\n\t // Overflows right\n\t if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n\t // Overflows left\n\t if (l.x < 0) {\n\t l.x = 0;\n\t l.w = bounds.cols;\n\t }\n\t if (!l.static) collidesWith.push(l);else {\n\t // If this is static and collides with other statics, we must move it down.\n\t // We have to do something nicer than just letting them overlap.\n\t while (getFirstCollision(collidesWith, l)) {\n\t l.y++;\n\t }\n\t }\n\t }\n\t return layout;\n\t}\n\t\n\t/**\n\t * Get a layout item by ID. Used so we can override later on if necessary.\n\t *\n\t * @param {Array} layout Layout array.\n\t * @param {String} id ID\n\t * @return {LayoutItem} Item at ID.\n\t */\n\tfunction getLayoutItem(layout /*: Layout*/, id /*: string*/) /*: ?LayoutItem*/ {\n\t for (var _i5 = 0, len = layout.length; _i5 < len; _i5++) {\n\t if (layout[_i5].i === id) return layout[_i5];\n\t }\n\t}\n\t\n\t/**\n\t * Returns the first item this layout collides with.\n\t * It doesn't appear to matter which order we approach this from, although\n\t * perhaps that is the wrong thing to do.\n\t *\n\t * @param {Object} layoutItem Layout item.\n\t * @return {Object|undefined} A colliding layout item, or undefined.\n\t */\n\tfunction getFirstCollision(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: ?LayoutItem*/ {\n\t for (var _i6 = 0, len = layout.length; _i6 < len; _i6++) {\n\t if (collides(layout[_i6], layoutItem)) return layout[_i6];\n\t }\n\t}\n\t\n\tfunction getAllCollisions(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: Array*/ {\n\t return layout.filter(function (l) {\n\t return collides(l, layoutItem);\n\t });\n\t}\n\t\n\t/**\n\t * Get all static elements.\n\t * @param {Array} layout Array of layout objects.\n\t * @return {Array} Array of static layout items..\n\t */\n\tfunction getStatics(layout /*: Layout*/) /*: Array*/ {\n\t return layout.filter(function (l) {\n\t return l.static;\n\t });\n\t}\n\t\n\t/**\n\t * Move an element. Responsible for doing cascading movements of other elements.\n\t *\n\t * @param {Array} layout Full layout to modify.\n\t * @param {LayoutItem} l element to move.\n\t * @param {Number} [x] X position in grid units.\n\t * @param {Number} [y] Y position in grid units.\n\t * @param {Boolean} [isUserAction] If true, designates that the item we're moving is\n\t * being dragged/resized by th euser.\n\t */\n\tfunction moveElement(layout /*: Layout*/, l /*: LayoutItem*/, x /*: ?number*/, y /*: ?number*/, isUserAction /*: ?boolean*/) /*: Layout*/ {\n\t if (l.static) return layout;\n\t\n\t // Short-circuit if nothing to do.\n\t if (l.y === y && l.x === x) return layout;\n\t\n\t var movingUp = y && l.y > y;\n\t // This is quite a bit faster than extending the object\n\t if (typeof x === 'number') l.x = x;\n\t if (typeof y === 'number') l.y = y;\n\t l.moved = true;\n\t\n\t // If this collides with anything, move it.\n\t // When doing this comparison, we have to sort the items we compare with\n\t // to ensure, in the case of multiple collisions, that we're getting the\n\t // nearest collision.\n\t var sorted = sortLayoutItemsByRowCol(layout);\n\t if (movingUp) sorted = sorted.reverse();\n\t var collisions = getAllCollisions(sorted, l);\n\t\n\t // Move each item that collides away from this element.\n\t for (var _i7 = 0, len = collisions.length; _i7 < len; _i7++) {\n\t var collision = collisions[_i7];\n\t // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\t\n\t // Short circuit so we can't infinite loop\n\t if (collision.moved) continue;\n\t\n\t // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\n\t if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\n\t\n\t // Don't move static items - we have to move *this* element away\n\t if (collision.static) {\n\t layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\n\t } else {\n\t layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\n\t }\n\t }\n\t\n\t return layout;\n\t}\n\t\n\t/**\n\t * This is where the magic needs to happen - given a collision, move an element away from the collision.\n\t * We attempt to move it up if there's room, otherwise it goes below.\n\t *\n\t * @param {Array} layout Full layout to modify.\n\t * @param {LayoutItem} collidesWith Layout item we're colliding with.\n\t * @param {LayoutItem} itemToMove Layout item we're moving.\n\t * @param {Boolean} [isUserAction] If true, designates that the item we're moving is being dragged/resized\n\t * by the user.\n\t */\n\tfunction moveElementAwayFromCollision(layout /*: Layout*/, collidesWith /*: LayoutItem*/, itemToMove /*: LayoutItem*/, isUserAction /*: ?boolean*/) /*: Layout*/ {\n\t\n\t // If there is enough space above the collision to put this element, move it there.\n\t // We only do this on the main collision as this can get funky in cascades and cause\n\t // unwanted swapping behavior.\n\t if (isUserAction) {\n\t // Make a mock item so we don't modify the item here, only modify in moveElement.\n\t var fakeItem /*: LayoutItem*/ = {\n\t x: itemToMove.x,\n\t y: itemToMove.y,\n\t w: itemToMove.w,\n\t h: itemToMove.h,\n\t i: '-1'\n\t };\n\t fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n\t if (!getFirstCollision(layout, fakeItem)) {\n\t return moveElement(layout, itemToMove, undefined, fakeItem.y);\n\t }\n\t }\n\t\n\t // Previously this was optimized to move below the collision directly, but this can cause problems\n\t // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\n\t return moveElement(layout, itemToMove, undefined, itemToMove.y + 1);\n\t}\n\t\n\t/**\n\t * Helper to convert a number to a percentage string.\n\t *\n\t * @param {Number} num Any number\n\t * @return {String} That number as a percentage.\n\t */\n\tfunction perc(num /*: number*/) /*: string*/ {\n\t return num * 100 + '%';\n\t}\n\t\n\tfunction setTransform(_ref) /*: Object*/ {\n\t var top = _ref.top;\n\t var left = _ref.left;\n\t var width = _ref.width;\n\t var height = _ref.height;\n\t\n\t // Replace unitless items with px\n\t var translate = 'translate(' + left + 'px,' + top + 'px)';\n\t return {\n\t transform: translate,\n\t WebkitTransform: translate,\n\t MozTransform: translate,\n\t msTransform: translate,\n\t OTransform: translate,\n\t width: width + 'px',\n\t height: height + 'px',\n\t position: 'absolute'\n\t };\n\t}\n\t\n\tfunction setTopLeft(_ref2) /*: Object*/ {\n\t var top = _ref2.top;\n\t var left = _ref2.left;\n\t var width = _ref2.width;\n\t var height = _ref2.height;\n\t\n\t return {\n\t top: top + 'px',\n\t left: left + 'px',\n\t width: width + 'px',\n\t height: height + 'px',\n\t position: 'absolute'\n\t };\n\t}\n\t\n\t/**\n\t * Get layout items sorted from top left to right and down.\n\t *\n\t * @return {Array} Array of layout objects.\n\t * @return {Array} Layout, sorted static items first.\n\t */\n\tfunction sortLayoutItemsByRowCol(layout /*: Layout*/) /*: Layout*/ {\n\t return [].concat(layout).sort(function (a, b) {\n\t if (a.y > b.y || a.y === b.y && a.x > b.x) {\n\t return 1;\n\t }\n\t return -1;\n\t });\n\t}\n\t\n\t/**\n\t * Generate a layout using the initialLayout and children as a template.\n\t * Missing entries will be added, extraneous ones will be truncated.\n\t *\n\t * @param {Array} initialLayout Layout passed in through props.\n\t * @param {String} breakpoint Current responsive breakpoint.\n\t * @param {Boolean} verticalCompact Whether or not to compact the layout vertically.\n\t * @return {Array} Working layout.\n\t */\n\tfunction synchronizeLayoutWithChildren(initialLayout /*: Layout*/, children /*: Array|React.Element*/, cols /*: number*/, verticalCompact /*: boolean*/) /*: Layout*/ {\n\t // ensure 'children' is always an array\n\t if (!Array.isArray(children)) {\n\t children = [children];\n\t }\n\t initialLayout = initialLayout || [];\n\t\n\t // Generate one layout item per child.\n\t var layout /*: Layout*/ = [];\n\t for (var _i8 = 0, len = children.length; _i8 < len; _i8++) {\n\t var newItem = void 0;\n\t var child = children[_i8];\n\t\n\t // Don't overwrite if it already exists.\n\t var exists = getLayoutItem(initialLayout, child.key || \"1\" /* FIXME satisfies Flow */);\n\t if (exists) {\n\t newItem = exists;\n\t } else {\n\t var g = child.props._grid;\n\t\n\t // Hey, this item has a _grid property, use it.\n\t if (g) {\n\t if (!isProduction) {\n\t validateLayout([g], 'ReactGridLayout.children');\n\t }\n\t // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\n\t // This allows you to do nice stuff like specify {y: Infinity}\n\t if (verticalCompact) {\n\t newItem = cloneLayoutItem(_extends({}, g, { y: Math.min(bottom(layout), g.y), i: child.key }));\n\t } else {\n\t newItem = cloneLayoutItem(_extends({}, g, { y: g.y, i: child.key }));\n\t }\n\t }\n\t // Nothing provided: ensure this is added to the bottom\n\t else {\n\t newItem = cloneLayoutItem({ w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\" });\n\t }\n\t }\n\t layout[_i8] = newItem;\n\t }\n\t\n\t // Correct the layout.\n\t layout = correctBounds(layout, { cols: cols });\n\t layout = compact(layout, verticalCompact);\n\t\n\t return layout;\n\t}\n\t\n\t/**\n\t * Validate a layout. Throws errors.\n\t *\n\t * @param {Array} layout Array of layout items.\n\t * @param {String} [contextName] Context name for errors.\n\t * @throw {Error} Validation error.\n\t */\n\tfunction validateLayout(layout /*: Layout*/, contextName /*: string*/) /*: void*/ {\n\t contextName = contextName || \"Layout\";\n\t var subProps = ['x', 'y', 'w', 'h'];\n\t if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n\t for (var _i9 = 0, len = layout.length; _i9 < len; _i9++) {\n\t var item = layout[_i9];\n\t for (var j = 0; j < subProps.length; j++) {\n\t if (typeof item[subProps[j]] !== 'number') {\n\t throw new Error('ReactGridLayout: ' + contextName + '[' + _i9 + '].' + subProps[j] + ' must be a number!');\n\t }\n\t }\n\t if (item.i && typeof item.i !== 'string') {\n\t throw new Error('ReactGridLayout: ' + contextName + '[' + _i9 + '].i must be a string!');\n\t }\n\t if (item.static !== undefined && typeof item.static !== 'boolean') {\n\t throw new Error('ReactGridLayout: ' + contextName + '[' + _i9 + '].static must be a boolean!');\n\t }\n\t }\n\t}\n\t\n\t// Flow can't really figure this out, so we just use Object\n\tfunction autoBindHandlers(el /*: Object*/, fns /*: Array*/) /*: void*/ {\n\t fns.forEach(function (key) {\n\t return el[key] = el[key].bind(el);\n\t });\n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _lodash = __webpack_require__(5);\n\t\n\tvar _lodash2 = _interopRequireDefault(_lodash);\n\t\n\tvar _utils = __webpack_require__(2);\n\t\n\tvar _GridItem = __webpack_require__(10);\n\t\n\tvar _GridItem2 = _interopRequireDefault(_GridItem);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar noop = function noop() {};\n\t\n\t// Types\n\t/*:: import type {ResizeEvent, DragEvent, Layout, LayoutItem} from './utils';*/\n\t\n\t// End Types\n\t\n\t/**\n\t * A reactive, fluid grid layout with draggable, resizable components.\n\t */\n\t\n\t/*:: type State = {\n\t activeDrag: ?LayoutItem,\n\t layout: Layout,\n\t mounted: boolean,\n\t oldDragItem: ?LayoutItem,\n\t oldResizeItem: ?LayoutItem\n\t};*/\n\t\n\tvar ReactGridLayout = function (_React$Component) {\n\t _inherits(ReactGridLayout, _React$Component);\n\t\n\t // TODO publish internal ReactClass displayName transform\n\t\n\t function ReactGridLayout(props /*: typeof ReactGridLayout.prototype.props*/, context /*: any*/) /*: void*/ {\n\t _classCallCheck(this, ReactGridLayout);\n\t\n\t var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\t\n\t _initialiseProps.call(_this);\n\t\n\t (0, _utils.autoBindHandlers)(_this, ['onDragStart', 'onDrag', 'onDragStop', 'onResizeStart', 'onResize', 'onResizeStop']);\n\t return _this;\n\t }\n\t\n\t ReactGridLayout.prototype.componentDidMount = function componentDidMount() {\n\t this.setState({ mounted: true });\n\t // Call back with layout on mount. This should be done after correcting the layout width\n\t // to ensure we don't rerender with the wrong width.\n\t this.props.onLayoutChange(this.state.layout);\n\t };\n\t\n\t ReactGridLayout.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps /*: typeof ReactGridLayout.prototype.props*/) {\n\t var newLayoutBase = void 0;\n\t // Allow parent to set layout directly.\n\t if (!(0, _lodash2.default)(nextProps.layout, this.props.layout)) {\n\t newLayoutBase = nextProps.layout;\n\t }\n\t\n\t // If children change, also regenerate the layout. Use our state\n\t // as the base in case because it may be more up to date than\n\t // what is in props.\n\t else if (nextProps.children.length !== this.props.children.length) {\n\t newLayoutBase = this.state.layout;\n\t }\n\t\n\t // We need to regenerate the layout.\n\t if (newLayoutBase) {\n\t var newLayout = (0, _utils.synchronizeLayoutWithChildren)(newLayoutBase, nextProps.children, nextProps.cols, nextProps.verticalCompact);\n\t this.setState({ layout: newLayout });\n\t this.props.onLayoutChange(newLayout);\n\t }\n\t };\n\t\n\t /**\n\t * Calculates a pixel value for the container.\n\t * @return {String} Container height in pixels.\n\t */\n\t\n\t\n\t ReactGridLayout.prototype.containerHeight = function containerHeight() {\n\t if (!this.props.autoSize) return;\n\t return (0, _utils.bottom)(this.state.layout) * (this.props.rowHeight + this.props.margin[1]) + this.props.margin[1] + 'px';\n\t };\n\t\n\t /**\n\t * When dragging starts\n\t * @param {String} i Id of the child\n\t * @param {Number} x X position of the move\n\t * @param {Number} y Y position of the move\n\t * @param {Event} e The mousedown event\n\t * @param {Element} node The current dragging DOM element\n\t */\n\t\n\t\n\t ReactGridLayout.prototype.onDragStart = function onDragStart(i /*:string*/, x /*:number*/, y /*:number*/, _ref) {\n\t var e = _ref.e;\n\t var node = _ref.node;\n\t var layout = this.state.layout;\n\t\n\t var l = (0, _utils.getLayoutItem)(layout, i);\n\t if (!l) return;\n\t\n\t this.setState({ oldDragItem: (0, _utils.cloneLayoutItem)(l) });\n\t\n\t this.props.onDragStart(layout, l, l, null, e, node);\n\t };\n\t\n\t /**\n\t * Each drag movement create a new dragelement and move the element to the dragged location\n\t * @param {String} i Id of the child\n\t * @param {Number} x X position of the move\n\t * @param {Number} y Y position of the move\n\t * @param {Event} e The mousedown event\n\t * @param {Element} node The current dragging DOM element\n\t */\n\t\n\t\n\t ReactGridLayout.prototype.onDrag = function onDrag(i /*:string*/, x /*:number*/, y /*:number*/, _ref2) {\n\t var e = _ref2.e;\n\t var node = _ref2.node;\n\t var oldDragItem = this.state.oldDragItem;\n\t var layout = this.state.layout;\n\t\n\t var l = (0, _utils.getLayoutItem)(layout, i);\n\t if (!l) return;\n\t\n\t // Create placeholder (display only)\n\t var placeholder = {\n\t w: l.w, h: l.h, x: l.x, y: l.y, placeholder: true, i: i\n\t };\n\t\n\t // Move the element to the dragged location.\n\t layout = (0, _utils.moveElement)(layout, l, x, y, true /* isUserAction */);\n\t\n\t this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\t\n\t this.setState({\n\t layout: (0, _utils.compact)(layout, this.props.verticalCompact),\n\t activeDrag: placeholder\n\t });\n\t };\n\t\n\t /**\n\t * When dragging stops, figure out which position the element is closest to and update its x and y.\n\t * @param {String} i Index of the child.\n\t * @param {Number} x X position of the move\n\t * @param {Number} y Y position of the move\n\t * @param {Event} e The mousedown event\n\t * @param {Element} node The current dragging DOM element\n\t */\n\t\n\t\n\t ReactGridLayout.prototype.onDragStop = function onDragStop(i /*:string*/, x /*:number*/, y /*:number*/, _ref3) {\n\t var e = _ref3.e;\n\t var node = _ref3.node;\n\t var oldDragItem = this.state.oldDragItem;\n\t var layout = this.state.layout;\n\t\n\t var l = (0, _utils.getLayoutItem)(layout, i);\n\t if (!l) return;\n\t\n\t // Move the element here\n\t layout = (0, _utils.moveElement)(layout, l, x, y, true /* isUserAction */);\n\t\n\t this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\t\n\t // Set state\n\t this.setState({\n\t activeDrag: null,\n\t layout: (0, _utils.compact)(layout, this.props.verticalCompact),\n\t oldDragItem: null\n\t });\n\t\n\t this.props.onLayoutChange(this.state.layout);\n\t };\n\t\n\t ReactGridLayout.prototype.onResizeStart = function onResizeStart(i /*:string*/, w /*:number*/, h /*:number*/, _ref4) {\n\t var e = _ref4.e;\n\t var node = _ref4.node;\n\t var layout = this.state.layout;\n\t\n\t var l = (0, _utils.getLayoutItem)(layout, i);\n\t if (!l) return;\n\t\n\t this.setState({ oldResizeItem: (0, _utils.cloneLayoutItem)(l) });\n\t\n\t this.props.onResizeStart(layout, l, l, null, e, node);\n\t };\n\t\n\t ReactGridLayout.prototype.onResize = function onResize(i /*:string*/, w /*:number*/, h /*:number*/, _ref5) {\n\t var e = _ref5.e;\n\t var node = _ref5.node;\n\t var _state = this.state;\n\t var layout = _state.layout;\n\t var oldResizeItem = _state.oldResizeItem;\n\t\n\t var l = (0, _utils.getLayoutItem)(layout, i);\n\t if (!l) return;\n\t\n\t // Set new width and height.\n\t l.w = w;\n\t l.h = h;\n\t\n\t // Create placeholder element (display only)\n\t var placeholder = {\n\t w: w, h: h, x: l.x, y: l.y, static: true, i: i\n\t };\n\t\n\t this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\t\n\t // Re-compact the layout and set the drag placeholder.\n\t this.setState({ layout: (0, _utils.compact)(layout, this.props.verticalCompact), activeDrag: placeholder });\n\t };\n\t\n\t ReactGridLayout.prototype.onResizeStop = function onResizeStop(i /*:string*/, w /*:number*/, h /*:number*/, _ref6) {\n\t var e = _ref6.e;\n\t var node = _ref6.node;\n\t var _state2 = this.state;\n\t var layout = _state2.layout;\n\t var oldResizeItem = _state2.oldResizeItem;\n\t\n\t var l = (0, _utils.getLayoutItem)(layout, i);\n\t\n\t this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\t\n\t // Set state\n\t this.setState({\n\t activeDrag: null,\n\t layout: (0, _utils.compact)(layout, this.props.verticalCompact),\n\t oldResizeItem: null\n\t });\n\t\n\t this.props.onLayoutChange(this.state.layout);\n\t };\n\t\n\t /**\n\t * Create a placeholder object.\n\t * @return {Element} Placeholder div.\n\t */\n\t\n\t\n\t ReactGridLayout.prototype.placeholder = function placeholder() {\n\t var activeDrag = this.state.activeDrag;\n\t\n\t if (!activeDrag) return null;\n\t var _props = this.props;\n\t var width = _props.width;\n\t var cols = _props.cols;\n\t var margin = _props.margin;\n\t var rowHeight = _props.rowHeight;\n\t var maxRows = _props.maxRows;\n\t var useCSSTransforms = _props.useCSSTransforms;\n\t\n\t // {...this.state.activeDrag} is pretty slow, actually\n\t\n\t return _react2.default.createElement(\n\t _GridItem2.default,\n\t {\n\t w: activeDrag.w,\n\t h: activeDrag.h,\n\t x: activeDrag.x,\n\t y: activeDrag.y,\n\t i: activeDrag.i,\n\t className: 'react-grid-placeholder',\n\t containerWidth: width,\n\t cols: cols,\n\t margin: margin,\n\t maxRows: maxRows,\n\t rowHeight: rowHeight,\n\t isDraggable: false,\n\t isResizable: false,\n\t useCSSTransforms: useCSSTransforms },\n\t _react2.default.createElement('div', null)\n\t );\n\t };\n\t\n\t /**\n\t * Given a grid item, set its style attributes & surround in a .\n\t * @param {Element} child React element.\n\t * @return {Element} Element wrapped in draggable and properly placed.\n\t */\n\t\n\t\n\t ReactGridLayout.prototype.processGridItem = function processGridItem(child /*: React.Element*/) {\n\t if (!child.key) return;\n\t var l = (0, _utils.getLayoutItem)(this.state.layout, child.key);\n\t if (!l) return null;\n\t var _props2 = this.props;\n\t var width = _props2.width;\n\t var cols = _props2.cols;\n\t var margin = _props2.margin;\n\t var rowHeight = _props2.rowHeight;\n\t var maxRows = _props2.maxRows;\n\t var isDraggable = _props2.isDraggable;\n\t var isResizable = _props2.isResizable;\n\t var useCSSTransforms = _props2.useCSSTransforms;\n\t var draggableCancel = _props2.draggableCancel;\n\t var draggableHandle = _props2.draggableHandle;\n\t var mounted = this.state.mounted;\n\t\n\t // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n\t\n\t var draggable = Boolean(!l.static && isDraggable && (l.isDraggable || l.isDraggable == null));\n\t var resizable = Boolean(!l.static && isResizable && (l.isResizable || l.isResizable == null));\n\t\n\t return _react2.default.createElement(\n\t _GridItem2.default,\n\t {\n\t containerWidth: width,\n\t cols: cols,\n\t margin: margin,\n\t maxRows: maxRows,\n\t rowHeight: rowHeight,\n\t cancel: draggableCancel,\n\t handle: draggableHandle,\n\t onDragStop: this.onDragStop,\n\t onDragStart: this.onDragStart,\n\t onDrag: this.onDrag,\n\t onResizeStart: this.onResizeStart,\n\t onResize: this.onResize,\n\t onResizeStop: this.onResizeStop,\n\t isDraggable: draggable,\n\t isResizable: resizable,\n\t useCSSTransforms: useCSSTransforms && mounted,\n\t usePercentages: !mounted,\n\t\n\t w: l.w,\n\t h: l.h,\n\t x: l.x,\n\t y: l.y,\n\t i: l.i,\n\t minH: l.minH,\n\t minW: l.minW,\n\t maxH: l.maxH,\n\t maxW: l.maxW,\n\t 'static': l.static\n\t },\n\t child\n\t );\n\t };\n\t\n\t ReactGridLayout.prototype.render = function render() {\n\t var _this2 = this;\n\t\n\t var _props3 = this.props;\n\t var className = _props3.className;\n\t var style = _props3.style;\n\t\n\t\n\t var mergedClassName = 'react-grid-layout ' + className;\n\t var mergedStyle = _extends({\n\t height: this.containerHeight()\n\t }, style);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t { className: mergedClassName, style: mergedStyle },\n\t _react2.default.Children.map(this.props.children, function (child) {\n\t return _this2.processGridItem(child);\n\t }),\n\t this.placeholder()\n\t );\n\t };\n\t\n\t return ReactGridLayout;\n\t}(_react2.default.Component);\n\t\n\tReactGridLayout.displayName = \"ReactGridLayout\";\n\tReactGridLayout.propTypes = {\n\t //\n\t // Basic props\n\t //\n\t className: _react.PropTypes.string,\n\t style: _react.PropTypes.object,\n\t\n\t // This can be set explicitly. If it is not set, it will automatically\n\t // be set to the container width. Note that resizes will *not* cause this to adjust.\n\t // If you need that behavior, use WidthProvider.\n\t width: _react.PropTypes.number,\n\t\n\t // If true, the container height swells and contracts to fit contents\n\t autoSize: _react.PropTypes.bool,\n\t // # of cols.\n\t cols: _react.PropTypes.number,\n\t\n\t // A selector that will not be draggable.\n\t draggableCancel: _react.PropTypes.string,\n\t // A selector for the draggable handler\n\t draggableHandle: _react.PropTypes.string,\n\t\n\t // If true, the layout will compact vertically\n\t verticalCompact: _react.PropTypes.bool,\n\t\n\t // layout is an array of object with the format:\n\t // {x: Number, y: Number, w: Number, h: Number, i: String}\n\t layout: function layout(props) {\n\t var layout = props.layout;\n\t // I hope you're setting the _grid property on the grid items\n\t if (layout === undefined) return;\n\t (0, _utils.validateLayout)(layout, 'layout');\n\t },\n\t\n\t //\n\t // Grid Dimensions\n\t //\n\t\n\t // Margin between items [x, y] in px\n\t margin: _react.PropTypes.arrayOf(_react.PropTypes.number),\n\t // Rows have a static height, but you can change this based on breakpoints if you like\n\t rowHeight: _react.PropTypes.number,\n\t // Default Infinity, but you can specify a max here if you like.\n\t // Note that this isn't fully fleshed out and won't error if you specify a layout that\n\t // extends beyond the row capacity. It will, however, not allow users to drag/resize\n\t // an item past the barrier. They can push items beyond the barrier, though.\n\t // Intentionally not documented for this reason.\n\t maxRows: _react.PropTypes.number,\n\t\n\t //\n\t // Flags\n\t //\n\t isDraggable: _react.PropTypes.bool,\n\t isResizable: _react.PropTypes.bool,\n\t // Use CSS transforms instead of top/left\n\t useCSSTransforms: _react.PropTypes.bool,\n\t\n\t //\n\t // Callbacks\n\t //\n\t\n\t // Callback so you can save the layout. Calls after each drag & resize stops.\n\t onLayoutChange: _react.PropTypes.func,\n\t\n\t // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e).\n\t // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n\t onDragStart: _react.PropTypes.func,\n\t // Calls on each drag movement.\n\t onDrag: _react.PropTypes.func,\n\t // Calls when drag is complete.\n\t onDragStop: _react.PropTypes.func,\n\t //Calls when resize starts.\n\t onResizeStart: _react.PropTypes.func,\n\t // Calls when resize movement happens.\n\t onResize: _react.PropTypes.func,\n\t // Calls when resize is complete.\n\t onResizeStop: _react.PropTypes.func,\n\t\n\t //\n\t // Other validations\n\t //\n\t\n\t // Children must not have duplicate keys.\n\t children: function children(props, propName, _componentName) {\n\t _react.PropTypes.node.apply(this, arguments);\n\t var children = props[propName];\n\t\n\t // Check children keys for duplicates. Throw if found.\n\t var keys = {};\n\t _react2.default.Children.forEach(children, function (child) {\n\t if (keys[child.key]) {\n\t throw new Error(\"Duplicate child key found! This will cause problems in ReactGridLayout.\");\n\t }\n\t keys[child.key] = true;\n\t });\n\t }\n\t};\n\tReactGridLayout.defaultProps = {\n\t autoSize: true,\n\t cols: 12,\n\t className: '',\n\t rowHeight: 150,\n\t maxRows: Infinity, // infinite vertical growth\n\t layout: [],\n\t margin: [10, 10],\n\t isDraggable: true,\n\t isResizable: true,\n\t useCSSTransforms: true,\n\t verticalCompact: true,\n\t onLayoutChange: noop,\n\t onDragStart: noop,\n\t onDrag: noop,\n\t onDragStop: noop,\n\t onResizeStart: noop,\n\t onResize: noop,\n\t onResizeStop: noop\n\t};\n\t\n\tvar _initialiseProps = function _initialiseProps() {\n\t this.state = {\n\t activeDrag: null,\n\t layout: (0, _utils.synchronizeLayoutWithChildren)(this.props.layout, this.props.children, this.props.cols, this.props.verticalCompact),\n\t mounted: false,\n\t oldDragItem: null,\n\t oldResizeItem: null\n\t };\n\t};\n\t\n\texports.default = ReactGridLayout;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.getBreakpointFromWidth = getBreakpointFromWidth;\n\texports.getColsFromBreakpoint = getColsFromBreakpoint;\n\texports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout;\n\texports.sortBreakpoints = sortBreakpoints;\n\t\n\tvar _utils = __webpack_require__(2);\n\t\n\t/*:: import type {Layout} from './utils';*/\n\t/*:: export type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};*/\n\t/*:: type Breakpoint = string;*/\n\t\n\t\n\t/**\n\t * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n\t *\n\t * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n\t * @param {Number} width Screen width.\n\t * @return {String} Highest breakpoint that is less than width.\n\t */\n\t/*:: type Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};*/\n\tfunction getBreakpointFromWidth(breakpoints /*: Breakpoints*/, width /*: number*/) /*: Breakpoint*/ {\n\t var sorted = sortBreakpoints(breakpoints);\n\t var matching = sorted[0];\n\t for (var i = 1, len = sorted.length; i < len; i++) {\n\t var breakpointName = sorted[i];\n\t if (width > breakpoints[breakpointName]) matching = breakpointName;\n\t }\n\t return matching;\n\t}\n\t\n\t/**\n\t * Given a breakpoint, get the # of cols set for it.\n\t * @param {String} breakpoint Breakpoint name.\n\t * @param {Object} cols Map of breakpoints to cols.\n\t * @return {Number} Number of cols.\n\t */\n\tfunction getColsFromBreakpoint(breakpoint /*: Breakpoint*/, cols /*: Breakpoints*/) /*: number*/ {\n\t if (!cols[breakpoint]) {\n\t throw new Error(\"ResponsiveReactGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n\t }\n\t return cols[breakpoint];\n\t}\n\t\n\t/**\n\t * Given existing layouts and a new breakpoint, find or generate a new layout.\n\t *\n\t * This finds the layout above the new one and generates from it, if it exists.\n\t *\n\t * @param {Object} layouts Existing layouts.\n\t * @param {Array} breakpoints All breakpoints.\n\t * @param {String} breakpoint New breakpoint.\n\t * @param {String} breakpoint Last breakpoint (for fallback).\n\t * @param {Number} cols Column count at new breakpoint.\n\t * @param {Boolean} verticalCompact Whether or not to compact the layout\n\t * vertically.\n\t * @return {Array} New layout.\n\t */\n\tfunction findOrGenerateResponsiveLayout(layouts /*: ResponsiveLayout*/, breakpoints /*: Breakpoints*/, breakpoint /*: Breakpoint*/, lastBreakpoint /*: Breakpoint*/, cols /*: number*/, verticalCompact /*: boolean*/) /*: Layout*/ {\n\t // If it already exists, just return it.\n\t if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]);\n\t // Find or generate the next layout\n\t var layout = layouts[lastBreakpoint];\n\t var breakpointsSorted = sortBreakpoints(breakpoints);\n\t var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n\t for (var i = 0, len = breakpointsAbove.length; i < len; i++) {\n\t var b = breakpointsAbove[i];\n\t if (layouts[b]) {\n\t layout = layouts[b];\n\t break;\n\t }\n\t }\n\t layout = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items\n\t return (0, _utils.compact)((0, _utils.correctBounds)(layout, { cols: cols }), verticalCompact);\n\t}\n\t\n\t/**\n\t * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n\t * e.g. ['xxs', 'xs', 'sm', ...]\n\t *\n\t * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n\t * @return {Array} Sorted breakpoints.\n\t */\n\tfunction sortBreakpoints(breakpoints /*: Breakpoints*/) /*: Array*/ {\n\t var keys /*: Array*/ = Object.keys(breakpoints);\n\t return keys.sort(function (a, b) {\n\t return breakpoints[a] - breakpoints[b];\n\t });\n\t}\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * lodash 4.1.4 (Custom Build) \n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors \n\t * Released under MIT license \n\t * Based on Underscore.js 1.8.3 \n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\tvar Stack = __webpack_require__(14),\n\t keys = __webpack_require__(15),\n\t root = __webpack_require__(13);\n\t\n\t/** Used to compose bitmasks for comparison styles. */\n\tvar UNORDERED_COMPARE_FLAG = 1,\n\t PARTIAL_COMPARE_FLAG = 2;\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\t\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\t\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\t\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\t\n\t/** Used to identify `toStringTag` values of typed arrays. */\n\tvar typedArrayTags = {};\n\ttypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n\ttypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n\ttypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n\ttypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n\ttypedArrayTags[uint32Tag] = true;\n\ttypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n\ttypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n\ttypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n\ttypedArrayTags[errorTag] = typedArrayTags[funcTag] =\n\ttypedArrayTags[mapTag] = typedArrayTags[numberTag] =\n\ttypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n\ttypedArrayTags[setTag] = typedArrayTags[stringTag] =\n\ttypedArrayTags[weakMapTag] = false;\n\t\n\t/**\n\t * A specialized version of `_.some` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\tfunction arraySome(array, predicate) {\n\t var index = -1,\n\t length = array.length;\n\t\n\t while (++index < length) {\n\t if (predicate(array[index], index, array)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Converts `map` to an array.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the converted array.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\t\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\t\n\t/**\n\t * Converts `set` to an array.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the converted array.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\t\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = Function.prototype.toString;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\t\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\t\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetPrototype = Object.getPrototypeOf;\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap');\n\t\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\t\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\t\n\t/**\n\t * The base implementation of `_.has` without support for deep paths.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` exists, else `false`.\n\t */\n\tfunction baseHas(object, key) {\n\t // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n\t // that are composed entirely of index properties, return `false` for\n\t // `hasOwnProperty` checks of them.\n\t return hasOwnProperty.call(object, key) ||\n\t (typeof object == 'object' && key in object && getPrototype(object) === null);\n\t}\n\t\n\t/**\n\t * The base implementation of `_.isEqual` which supports partial comparisons\n\t * and tracks traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {boolean} [bitmask] The bitmask of comparison flags.\n\t * The bitmask may be composed of the following flags:\n\t * 1 - Unordered comparison\n\t * 2 - Partial comparison\n\t * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\tfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n\t if (value === other) {\n\t return true;\n\t }\n\t if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n\t return value !== value && other !== other;\n\t }\n\t return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqual` for arrays and objects which performs\n\t * deep comparisons and tracks traversed objects enabling objects with circular\n\t * references to be compared.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n\t var objIsArr = isArray(object),\n\t othIsArr = isArray(other),\n\t objTag = arrayTag,\n\t othTag = arrayTag;\n\t\n\t if (!objIsArr) {\n\t objTag = getTag(object);\n\t objTag = objTag == argsTag ? objectTag : objTag;\n\t }\n\t if (!othIsArr) {\n\t othTag = getTag(other);\n\t othTag = othTag == argsTag ? objectTag : othTag;\n\t }\n\t var objIsObj = objTag == objectTag && !isHostObject(object),\n\t othIsObj = othTag == objectTag && !isHostObject(other),\n\t isSameTag = objTag == othTag;\n\t\n\t if (isSameTag && !objIsObj) {\n\t stack || (stack = new Stack);\n\t return (objIsArr || isTypedArray(object))\n\t ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n\t : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n\t }\n\t if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n\t var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n\t othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\t\n\t if (objIsWrapped || othIsWrapped) {\n\t var objUnwrapped = objIsWrapped ? object.value() : object,\n\t othUnwrapped = othIsWrapped ? other.value() : other;\n\t\n\t stack || (stack = new Stack);\n\t return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n\t }\n\t }\n\t if (!isSameTag) {\n\t return false;\n\t }\n\t stack || (stack = new Stack);\n\t return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for arrays with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Array} array The array to compare.\n\t * @param {Array} other The other array to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} stack Tracks traversed `array` and `other` objects.\n\t * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n\t */\n\tfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n\t var index = -1,\n\t isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n\t isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n\t arrLength = array.length,\n\t othLength = other.length;\n\t\n\t if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(array);\n\t if (stacked) {\n\t return stacked == other;\n\t }\n\t var result = true;\n\t stack.set(array, other);\n\t\n\t // Ignore non-index properties.\n\t while (++index < arrLength) {\n\t var arrValue = array[index],\n\t othValue = other[index];\n\t\n\t if (customizer) {\n\t var compared = isPartial\n\t ? customizer(othValue, arrValue, index, other, array, stack)\n\t : customizer(arrValue, othValue, index, array, other, stack);\n\t }\n\t if (compared !== undefined) {\n\t if (compared) {\n\t continue;\n\t }\n\t result = false;\n\t break;\n\t }\n\t // Recursively compare arrays (susceptible to call stack limits).\n\t if (isUnordered) {\n\t if (!arraySome(other, function(othValue) {\n\t return arrValue === othValue ||\n\t equalFunc(arrValue, othValue, customizer, bitmask, stack);\n\t })) {\n\t result = false;\n\t break;\n\t }\n\t } else if (!(\n\t arrValue === othValue ||\n\t equalFunc(arrValue, othValue, customizer, bitmask, stack)\n\t )) {\n\t result = false;\n\t break;\n\t }\n\t }\n\t stack['delete'](array);\n\t return result;\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for comparing objects of\n\t * the same `toStringTag`.\n\t *\n\t * **Note:** This function only supports comparing values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {string} tag The `toStringTag` of the objects to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n\t switch (tag) {\n\t case dataViewTag:\n\t if ((object.byteLength != other.byteLength) ||\n\t (object.byteOffset != other.byteOffset)) {\n\t return false;\n\t }\n\t object = object.buffer;\n\t other = other.buffer;\n\t\n\t case arrayBufferTag:\n\t if ((object.byteLength != other.byteLength) ||\n\t !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n\t return false;\n\t }\n\t return true;\n\t\n\t case boolTag:\n\t case dateTag:\n\t // Coerce dates and booleans to numbers, dates to milliseconds and\n\t // booleans to `1` or `0` treating invalid dates coerced to `NaN` as\n\t // not equal.\n\t return +object == +other;\n\t\n\t case errorTag:\n\t return object.name == other.name && object.message == other.message;\n\t\n\t case numberTag:\n\t // Treat `NaN` vs. `NaN` as equal.\n\t return (object != +object) ? other != +other : object == +other;\n\t\n\t case regexpTag:\n\t case stringTag:\n\t // Coerce regexes to strings and treat strings, primitives and objects,\n\t // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring\n\t // for more details.\n\t return object == (other + '');\n\t\n\t case mapTag:\n\t var convert = mapToArray;\n\t\n\t case setTag:\n\t var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n\t convert || (convert = setToArray);\n\t\n\t if (object.size != other.size && !isPartial) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(object);\n\t if (stacked) {\n\t return stacked == other;\n\t }\n\t bitmask |= UNORDERED_COMPARE_FLAG;\n\t stack.set(object, other);\n\t\n\t // Recursively compare objects (susceptible to call stack limits).\n\t return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n\t\n\t case symbolTag:\n\t if (symbolValueOf) {\n\t return symbolValueOf.call(object) == symbolValueOf.call(other);\n\t }\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for objects with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n\t var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n\t objProps = keys(object),\n\t objLength = objProps.length,\n\t othProps = keys(other),\n\t othLength = othProps.length;\n\t\n\t if (objLength != othLength && !isPartial) {\n\t return false;\n\t }\n\t var index = objLength;\n\t while (index--) {\n\t var key = objProps[index];\n\t if (!(isPartial ? key in other : baseHas(other, key))) {\n\t return false;\n\t }\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(object);\n\t if (stacked) {\n\t return stacked == other;\n\t }\n\t var result = true;\n\t stack.set(object, other);\n\t\n\t var skipCtor = isPartial;\n\t while (++index < objLength) {\n\t key = objProps[index];\n\t var objValue = object[key],\n\t othValue = other[key];\n\t\n\t if (customizer) {\n\t var compared = isPartial\n\t ? customizer(othValue, objValue, key, other, object, stack)\n\t : customizer(objValue, othValue, key, object, other, stack);\n\t }\n\t // Recursively compare objects (susceptible to call stack limits).\n\t if (!(compared === undefined\n\t ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n\t : compared\n\t )) {\n\t result = false;\n\t break;\n\t }\n\t skipCtor || (skipCtor = key == 'constructor');\n\t }\n\t if (result && !skipCtor) {\n\t var objCtor = object.constructor,\n\t othCtor = other.constructor;\n\t\n\t // Non `Object` object instances with different constructors are not equal.\n\t if (objCtor != othCtor &&\n\t ('constructor' in object && 'constructor' in other) &&\n\t !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n\t typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n\t result = false;\n\t }\n\t }\n\t stack['delete'](object);\n\t return result;\n\t}\n\t\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = object[key];\n\t return isNative(value) ? value : undefined;\n\t}\n\t\n\t/**\n\t * Gets the `[[Prototype]]` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {null|Object} Returns the `[[Prototype]]`.\n\t */\n\tfunction getPrototype(value) {\n\t return nativeGetPrototype(Object(value));\n\t}\n\t\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction getTag(value) {\n\t return objectToString.call(value);\n\t}\n\t\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\t\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\t\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @type {Function}\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\t/**\n\t * Performs a deep comparison between two values to determine if they are\n\t * equivalent.\n\t *\n\t * **Note:** This method supports comparing arrays, array buffers, booleans,\n\t * date objects, error objects, maps, numbers, `Object` objects, regexes,\n\t * sets, strings, symbols, and typed arrays. `Object` objects are compared\n\t * by their own, not inherited, enumerable properties. Functions and DOM\n\t * nodes are **not** supported.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent,\n\t * else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'fred' };\n\t *\n\t * _.isEqual(object, other);\n\t * // => true\n\t *\n\t * object === other;\n\t * // => false\n\t */\n\tfunction isEqual(value, other) {\n\t return baseIsEqual(value, other);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\t\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\t\n\t/**\n\t * Checks if `value` is a native function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isNative(Array.prototype.push);\n\t * // => true\n\t *\n\t * _.isNative(_);\n\t * // => false\n\t */\n\tfunction isNative(value) {\n\t if (!isObject(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a typed array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isTypedArray(new Uint8Array);\n\t * // => true\n\t *\n\t * _.isTypedArray([]);\n\t * // => false\n\t */\n\tfunction isTypedArray(value) {\n\t return isObjectLike(value) &&\n\t isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n\t}\n\t\n\tmodule.exports = isEqual;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory(__webpack_require__(1), __webpack_require__(9));\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine([\"react\", \"react-dom\"], factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"ReactDraggable\"] = factory(require(\"react\"), require(\"react-dom\"));\n\t\telse\n\t\t\troot[\"ReactDraggable\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n\t})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t/******/\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t/******/\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t/******/\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t/******/\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t/******/\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t/******/\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t/******/\n\t/******/\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t/******/\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t/******/\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t/******/\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tmodule.exports = __webpack_require__(1).default;\n\t\tmodule.exports.DraggableCore = __webpack_require__(9).default;\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\t\n\t\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\t\n\t\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\t\n\t\tvar _react = __webpack_require__(2);\n\t\t\n\t\tvar _react2 = _interopRequireDefault(_react);\n\t\t\n\t\tvar _reactDom = __webpack_require__(3);\n\t\t\n\t\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\t\n\t\tvar _classnames = __webpack_require__(4);\n\t\t\n\t\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\t\n\t\tvar _domFns = __webpack_require__(5);\n\t\t\n\t\tvar _positionFns = __webpack_require__(8);\n\t\t\n\t\tvar _shims = __webpack_require__(6);\n\t\t\n\t\tvar _DraggableCore = __webpack_require__(9);\n\t\t\n\t\tvar _DraggableCore2 = _interopRequireDefault(_DraggableCore);\n\t\t\n\t\tvar _log = __webpack_require__(10);\n\t\t\n\t\tvar _log2 = _interopRequireDefault(_log);\n\t\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\t// $FlowIgnore\n\t\t\n\t\t\n\t\t/*:: import type {DraggableEventHandler} from './utils/types';*/\n\t\t/*:: type DraggableState = {\n\t\t dragging: boolean,\n\t\t dragged: boolean,\n\t\t x: number, y: number,\n\t\t slackX: number, slackY: number,\n\t\t isElementSVG: boolean\n\t\t};*/\n\t\t\n\t\t\n\t\t//\n\t\t// Define \n\t\t//\n\t\t\n\t\t/*:: type ConstructorProps = {\n\t\t position: { x: number, y: number },\n\t\t defaultPosition: { x: number, y: number }\n\t\t}*/\n\t\t\n\t\tvar Draggable = function (_React$Component) {\n\t\t _inherits(Draggable, _React$Component);\n\t\t\n\t\t function Draggable(props /*: ConstructorProps*/) {\n\t\t _classCallCheck(this, Draggable);\n\t\t\n\t\t var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Draggable).call(this, props));\n\t\t\n\t\t _this.onDragStart = function (e, coreData) {\n\t\t (0, _log2.default)('Draggable: onDragStart: %j', coreData);\n\t\t\n\t\t // Short-circuit if user's callback killed it.\n\t\t var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_this, coreData));\n\t\t // Kills start event on core as well, so move handlers are never bound.\n\t\t if (shouldStart === false) return false;\n\t\t\n\t\t _this.setState({ dragging: true, dragged: true });\n\t\t };\n\t\t\n\t\t _this.onDrag = function (e, coreData) {\n\t\t if (!_this.state.dragging) return false;\n\t\t (0, _log2.default)('Draggable: onDrag: %j', coreData);\n\t\t\n\t\t var uiData = (0, _positionFns.createDraggableData)(_this, coreData);\n\t\t\n\t\t var newState /*: $Shape*/ = {\n\t\t x: uiData.x,\n\t\t y: uiData.y\n\t\t };\n\t\t\n\t\t // Keep within bounds.\n\t\t if (_this.props.bounds) {\n\t\t // Save original x and y.\n\t\t var _x = newState.x;\n\t\t var _y = newState.y;\n\t\t\n\t\t // Add slack to the values used to calculate bound position. This will ensure that if\n\t\t // we start removing slack, the element won't react to it right away until it's been\n\t\t // completely removed.\n\t\t\n\t\t newState.x += _this.state.slackX;\n\t\t newState.y += _this.state.slackY;\n\t\t\n\t\t // Get bound position. This will ceil/floor the x and y within the boundaries.\n\t\t // $FlowBug\n\t\t\n\t\t\n\t\t // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\t\t\n\t\t var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y);\n\t\t\n\t\t var _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2);\n\t\t\n\t\t newState.x = _getBoundPosition2[0];\n\t\t newState.y = _getBoundPosition2[1];\n\t\t newState.slackX = _this.state.slackX + (_x - newState.x);\n\t\t newState.slackY = _this.state.slackY + (_y - newState.y);\n\t\t\n\t\t // Update the event we fire to reflect what really happened after bounds took effect.\n\t\t uiData.x = _x;\n\t\t uiData.y = _y;\n\t\t uiData.deltaX = newState.x - _this.state.x;\n\t\t uiData.deltaY = newState.y - _this.state.y;\n\t\t }\n\t\t\n\t\t // Short-circuit if user's callback killed it.\n\t\t var shouldUpdate = _this.props.onDrag(e, uiData);\n\t\t if (shouldUpdate === false) return false;\n\t\t\n\t\t _this.setState(newState);\n\t\t };\n\t\t\n\t\t _this.onDragStop = function (e, coreData) {\n\t\t if (!_this.state.dragging) return false;\n\t\t\n\t\t // Short-circuit if user's callback killed it.\n\t\t var shouldStop = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_this, coreData));\n\t\t if (shouldStop === false) return false;\n\t\t\n\t\t (0, _log2.default)('Draggable: onDragStop: %j', coreData);\n\t\t\n\t\t var newState /*: $Shape*/ = {\n\t\t dragging: false,\n\t\t slackX: 0,\n\t\t slackY: 0\n\t\t };\n\t\t\n\t\t // If this is a controlled component, the result of this operation will be to\n\t\t // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\t\t var controlled = Boolean(_this.props.position);\n\t\t if (controlled) {\n\t\t var _this$props$position = _this.props.position;\n\t\t var _x2 = _this$props$position.x;\n\t\t var _y2 = _this$props$position.y;\n\t\t\n\t\t newState.x = _x2;\n\t\t newState.y = _y2;\n\t\t }\n\t\t\n\t\t _this.setState(newState);\n\t\t };\n\t\t\n\t\t _this.state = {\n\t\t // Whether or not we are currently dragging.\n\t\t dragging: false,\n\t\t\n\t\t // Whether or not we have been dragged before.\n\t\t dragged: false,\n\t\t\n\t\t // Current transform x and y.\n\t\t x: props.position ? props.position.x : props.defaultPosition.x,\n\t\t y: props.position ? props.position.y : props.defaultPosition.y,\n\t\t\n\t\t // Used for compensating for out-of-bounds drags\n\t\t slackX: 0, slackY: 0,\n\t\t\n\t\t // Can only determine if SVG after mounting\n\t\t isElementSVG: false\n\t\t };\n\t\t return _this;\n\t\t }\n\t\t\n\t\t _createClass(Draggable, [{\n\t\t key: 'componentWillMount',\n\t\t value: function componentWillMount() {\n\t\t if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n\t\t // eslint-disable-next-line\n\t\t console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'componentDidMount',\n\t\t value: function componentDidMount() {\n\t\t // Check to see if the element passed is an instanceof SVGElement\n\t\t if (typeof global.SVGElement !== 'undefined' && _reactDom2.default.findDOMNode(this) instanceof global.SVGElement) {\n\t\t this.setState({ isElementSVG: true });\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'componentWillReceiveProps',\n\t\t value: function componentWillReceiveProps(nextProps /*: Object*/) {\n\t\t // Set x/y if position has changed\n\t\t if (nextProps.position && (!this.props.position || nextProps.position.x !== this.props.position.x || nextProps.position.y !== this.props.position.y)) {\n\t\t this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'componentWillUnmount',\n\t\t value: function componentWillUnmount() {\n\t\t this.setState({ dragging: false }); // prevents invariant if unmounted while dragging\n\t\t }\n\t\t }, {\n\t\t key: 'render',\n\t\t value: function render() {\n\t\t var style = {},\n\t\t svgTransform = null;\n\t\t\n\t\t // If this is controlled, we don't want to move it - unless it's dragging.\n\t\t var controlled = Boolean(this.props.position);\n\t\t var draggable = !controlled || this.state.dragging;\n\t\t\n\t\t var position = this.props.position || this.props.defaultPosition;\n\t\t var transformOpts = {\n\t\t // Set left if horizontal drag is enabled\n\t\t x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : position.x,\n\t\t\n\t\t // Set top if vertical drag is enabled\n\t\t y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : position.y\n\t\t };\n\t\t\n\t\t // If this element was SVG, we use the `transform` attribute.\n\t\t if (this.state.isElementSVG) {\n\t\t svgTransform = (0, _domFns.createSVGTransform)(transformOpts);\n\t\t } else {\n\t\t // Add a CSS transform to move the element around. This allows us to move the element around\n\t\t // without worrying about whether or not it is relatively or absolutely positioned.\n\t\t // If the item you are dragging already has a transform set, wrap it in a so \n\t\t // has a clean slate.\n\t\t style = (0, _domFns.createCSSTransform)(transformOpts);\n\t\t }\n\t\t\n\t\t // Mark with class while dragging\n\t\t var className = (0, _classnames2.default)(this.props.children.props.className || '', 'react-draggable', {\n\t\t 'react-draggable-dragging': this.state.dragging,\n\t\t 'react-draggable-dragged': this.state.dragged\n\t\t });\n\t\t\n\t\t // Reuse the child provided\n\t\t // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\t\t return _react2.default.createElement(\n\t\t _DraggableCore2.default,\n\t\t _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }),\n\t\t _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {\n\t\t className: className,\n\t\t style: _extends({}, this.props.children.props.style, style),\n\t\t transform: svgTransform\n\t\t })\n\t\t );\n\t\t }\n\t\t }]);\n\t\t\n\t\t return Draggable;\n\t\t}(_react2.default.Component);\n\t\t\n\t\tDraggable.displayName = 'Draggable';\n\t\tDraggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, {\n\t\t\n\t\t /**\n\t\t * `axis` determines which axis the draggable can move.\n\t\t *\n\t\t * Note that all callbacks will still return data as normal. This only\n\t\t * controls flushing to the DOM.\n\t\t *\n\t\t * 'both' allows movement horizontally and vertically.\n\t\t * 'x' limits movement to horizontal axis.\n\t\t * 'y' limits movement to vertical axis.\n\t\t * 'none' limits all movement.\n\t\t *\n\t\t * Defaults to 'both'.\n\t\t */\n\t\t axis: _react.PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\t\t\n\t\t /**\n\t\t * `bounds` determines the range of movement available to the element.\n\t\t * Available values are:\n\t\t *\n\t\t * 'parent' restricts movement within the Draggable's parent node.\n\t\t *\n\t\t * Alternatively, pass an object with the following properties, all of which are optional:\n\t\t *\n\t\t * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n\t\t *\n\t\t * All values are in px.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * let App = React.createClass({\n\t\t * render: function () {\n\t\t * return (\n\t\t * \n\t\t *
Content
\n\t\t *
\n\t\t * );\n\t\t * }\n\t\t * });\n\t\t * ```\n\t\t */\n\t\t bounds: _react.PropTypes.oneOfType([_react.PropTypes.shape({\n\t\t left: _react.PropTypes.number,\n\t\t right: _react.PropTypes.number,\n\t\t top: _react.PropTypes.number,\n\t\t bottom: _react.PropTypes.number\n\t\t }), _react.PropTypes.string, _react.PropTypes.oneOf([false])]),\n\t\t\n\t\t /**\n\t\t * `defaultPosition` specifies the x and y that the dragged item should start at\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * let App = React.createClass({\n\t\t * render: function () {\n\t\t * return (\n\t\t * \n\t\t *
I start with transformX: 25px and transformY: 25px;
\n\t\t *
\n\t\t * );\n\t\t * }\n\t\t * });\n\t\t * ```\n\t\t */\n\t\t defaultPosition: _react.PropTypes.shape({\n\t\t x: _react.PropTypes.number,\n\t\t y: _react.PropTypes.number\n\t\t }),\n\t\t\n\t\t /**\n\t\t * `position`, if present, defines the current position of the element.\n\t\t *\n\t\t * This is similar to how form elements in React work - if no `position` is supplied, the component\n\t\t * is uncontrolled.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * let App = React.createClass({\n\t\t * render: function () {\n\t\t * return (\n\t\t * \n\t\t *
I start with transformX: 25px and transformY: 25px;
\n\t\t *
\n\t\t * );\n\t\t * }\n\t\t * });\n\t\t * ```\n\t\t */\n\t\t position: _react.PropTypes.shape({\n\t\t x: _react.PropTypes.number,\n\t\t y: _react.PropTypes.number\n\t\t }),\n\t\t\n\t\t /**\n\t\t * These properties should be defined on the child, not here.\n\t\t */\n\t\t className: _shims.dontSetMe,\n\t\t style: _shims.dontSetMe,\n\t\t transform: _shims.dontSetMe\n\t\t});\n\t\tDraggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, {\n\t\t axis: 'both',\n\t\t bounds: false,\n\t\t defaultPosition: { x: 0, y: 0 },\n\t\t position: null\n\t\t});\n\t\texports.default = Draggable;\n\t\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n\t\t Copyright (c) 2016 Jed Watson.\n\t\t Licensed under the MIT License (MIT), see\n\t\t http://jedwatson.github.io/classnames\n\t\t*/\n\t\t/* global define */\n\t\t\n\t\t(function () {\n\t\t\t'use strict';\n\t\t\n\t\t\tvar hasOwn = {}.hasOwnProperty;\n\t\t\n\t\t\tfunction classNames () {\n\t\t\t\tvar classes = [];\n\t\t\n\t\t\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\t\t\tvar arg = arguments[i];\n\t\t\t\t\tif (!arg) continue;\n\t\t\n\t\t\t\t\tvar argType = typeof arg;\n\t\t\n\t\t\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\t\t\tclasses.push(arg);\n\t\t\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t\t\t} else if (argType === 'object') {\n\t\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\treturn classes.join(' ');\n\t\t\t}\n\t\t\n\t\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\t\tmodule.exports = classNames;\n\t\t\t} else if (true) {\n\t\t\t\t// register as 'classnames', consistent with npm package name\n\t\t\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\t\t\treturn classNames;\n\t\t\t\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t\t} else {\n\t\t\t\twindow.classNames = classNames;\n\t\t\t}\n\t\t}());\n\t\n\t\n\t/***/ },\n\t/* 5 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\t\n\t\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\t\n\t\texports.matchesSelector = matchesSelector;\n\t\texports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\n\t\texports.addEvent = addEvent;\n\t\texports.removeEvent = removeEvent;\n\t\texports.outerHeight = outerHeight;\n\t\texports.outerWidth = outerWidth;\n\t\texports.innerHeight = innerHeight;\n\t\texports.innerWidth = innerWidth;\n\t\texports.offsetXYFromParentOf = offsetXYFromParentOf;\n\t\texports.createCSSTransform = createCSSTransform;\n\t\texports.createSVGTransform = createSVGTransform;\n\t\texports.getTouch = getTouch;\n\t\texports.getTouchIdentifier = getTouchIdentifier;\n\t\texports.addUserSelectStyles = addUserSelectStyles;\n\t\texports.removeUserSelectStyles = removeUserSelectStyles;\n\t\texports.styleHacks = styleHacks;\n\t\t\n\t\tvar _shims = __webpack_require__(6);\n\t\t\n\t\tvar _getPrefix = __webpack_require__(7);\n\t\t\n\t\tvar _getPrefix2 = _interopRequireDefault(_getPrefix);\n\t\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\t\n\t\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\t\n\t\t/*:: import type {ControlPosition} from './types';*/\n\t\t\n\t\t\n\t\tvar matchesSelectorFunc = '';\n\t\tfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ {\n\t\t if (!matchesSelectorFunc) {\n\t\t matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n\t\t // $FlowIgnore: Doesn't think elements are indexable\n\t\t return (0, _shims.isFunction)(el[method]);\n\t\t });\n\t\t }\n\t\t\n\t\t // $FlowIgnore: Doesn't think elements are indexable\n\t\t return el[matchesSelectorFunc].call(el, selector);\n\t\t}\n\t\t\n\t\t// Works up the tree to the draggable itself attempting to match selector.\n\t\tfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/ {\n\t\t var node = el;\n\t\t do {\n\t\t if (matchesSelector(node, selector)) return true;\n\t\t if (node === baseNode) return false;\n\t\t node = node.parentNode;\n\t\t } while (node);\n\t\t\n\t\t return false;\n\t\t}\n\t\t\n\t\tfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n\t\t if (!el) {\n\t\t return;\n\t\t }\n\t\t if (el.attachEvent) {\n\t\t el.attachEvent('on' + event, handler);\n\t\t } else if (el.addEventListener) {\n\t\t el.addEventListener(event, handler, true);\n\t\t } else {\n\t\t // $FlowIgnore: Doesn't think elements are indexable\n\t\t el['on' + event] = handler;\n\t\t }\n\t\t}\n\t\t\n\t\tfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n\t\t if (!el) {\n\t\t return;\n\t\t }\n\t\t if (el.detachEvent) {\n\t\t el.detachEvent('on' + event, handler);\n\t\t } else if (el.removeEventListener) {\n\t\t el.removeEventListener(event, handler, true);\n\t\t } else {\n\t\t // $FlowIgnore: Doesn't think elements are indexable\n\t\t el['on' + event] = null;\n\t\t }\n\t\t}\n\t\t\n\t\tfunction outerHeight(node /*: HTMLElement*/) /*: number*/ {\n\t\t // This is deliberately excluding margin for our calculations, since we are using\n\t\t // offsetTop which is including margin. See getBoundPosition\n\t\t var height = node.clientHeight;\n\t\t var computedStyle = window.getComputedStyle(node);\n\t\t height += (0, _shims.int)(computedStyle.borderTopWidth);\n\t\t height += (0, _shims.int)(computedStyle.borderBottomWidth);\n\t\t return height;\n\t\t}\n\t\t\n\t\tfunction outerWidth(node /*: HTMLElement*/) /*: number*/ {\n\t\t // This is deliberately excluding margin for our calculations, since we are using\n\t\t // offsetLeft which is including margin. See getBoundPosition\n\t\t var width = node.clientWidth;\n\t\t var computedStyle = window.getComputedStyle(node);\n\t\t width += (0, _shims.int)(computedStyle.borderLeftWidth);\n\t\t width += (0, _shims.int)(computedStyle.borderRightWidth);\n\t\t return width;\n\t\t}\n\t\tfunction innerHeight(node /*: HTMLElement*/) /*: number*/ {\n\t\t var height = node.clientHeight;\n\t\t var computedStyle = window.getComputedStyle(node);\n\t\t height -= (0, _shims.int)(computedStyle.paddingTop);\n\t\t height -= (0, _shims.int)(computedStyle.paddingBottom);\n\t\t return height;\n\t\t}\n\t\t\n\t\tfunction innerWidth(node /*: HTMLElement*/) /*: number*/ {\n\t\t var width = node.clientWidth;\n\t\t var computedStyle = window.getComputedStyle(node);\n\t\t width -= (0, _shims.int)(computedStyle.paddingLeft);\n\t\t width -= (0, _shims.int)(computedStyle.paddingRight);\n\t\t return width;\n\t\t}\n\t\t\n\t\t// Get from offsetParent\n\t\tfunction offsetXYFromParentOf(evt /*: {clientX: number, clientY: number}*/, node /*: HTMLElement & {offsetParent: HTMLElement}*/) /*: ControlPosition*/ {\n\t\t var offsetParent = node.offsetParent || document.body;\n\t\t var offsetParentRect = node.offsetParent === document.body ? { left: 0, top: 0 } : offsetParent.getBoundingClientRect();\n\t\t\n\t\t var x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n\t\t var y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\t\t\n\t\t return { x: x, y: y };\n\t\t}\n\t\t\n\t\tfunction createCSSTransform(_ref) /*: Object*/ {\n\t\t var x = _ref.x;\n\t\t var y = _ref.y;\n\t\t\n\t\t // Replace unitless items with px\n\t\t return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix2.default), 'translate(' + x + 'px,' + y + 'px)');\n\t\t}\n\t\t\n\t\tfunction createSVGTransform(_ref3) /*: string*/ {\n\t\t var x = _ref3.x;\n\t\t var y = _ref3.y;\n\t\t\n\t\t return 'translate(' + x + ',' + y + ')';\n\t\t}\n\t\t\n\t\tfunction getTouch(e /*: MouseEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/ {\n\t\t return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n\t\t return identifier === t.identifier;\n\t\t }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n\t\t return identifier === t.identifier;\n\t\t });\n\t\t}\n\t\t\n\t\tfunction getTouchIdentifier(e /*: MouseEvent*/) /*: ?number*/ {\n\t\t if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n\t\t if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n\t\t}\n\t\t\n\t\t// User-select Hacks:\n\t\t//\n\t\t// Useful for preventing blue highlights all over everything when dragging.\n\t\tvar userSelectPrefix = (0, _getPrefix.getPrefix)('user-select');\n\t\tvar userSelect = (0, _getPrefix.browserPrefixToStyle)('user-select', userSelectPrefix);\n\t\tvar userSelectStyle = ';' + userSelect + ': none;';\n\t\t\n\t\tfunction addUserSelectStyles() {\n\t\t var style = document.body.getAttribute('style') || '';\n\t\t document.body.setAttribute('style', style + userSelectStyle);\n\t\t}\n\t\t\n\t\tfunction removeUserSelectStyles() {\n\t\t var style = document.body.getAttribute('style') || '';\n\t\t document.body.setAttribute('style', style.replace(userSelectStyle, ''));\n\t\t}\n\t\t\n\t\tfunction styleHacks() /*: Object*/ {\n\t\t var childStyle /*: Object*/ = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\t\n\t\t // Workaround IE pointer events; see #51\n\t\t // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n\t\t return _extends({\n\t\t touchAction: 'none'\n\t\t }, childStyle);\n\t\t}\n\t\n\t/***/ },\n\t/* 6 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.findInArray = findInArray;\n\t\texports.isFunction = isFunction;\n\t\texports.isNum = isNum;\n\t\texports.int = int;\n\t\texports.dontSetMe = dontSetMe;\n\t\t\n\t\t// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\n\t\tfunction findInArray(array /*: Array*/, callback /*: Function*/) /*: any*/ {\n\t\t for (var i = 0, length = array.length; i < length; i++) {\n\t\t if (callback.apply(callback, [array[i], i, array])) return array[i];\n\t\t }\n\t\t}\n\t\t\n\t\tfunction isFunction(func /*: any*/) /*: boolean*/ {\n\t\t return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n\t\t}\n\t\t\n\t\tfunction isNum(num /*: any*/) /*: boolean*/ {\n\t\t return typeof num === 'number' && !isNaN(num);\n\t\t}\n\t\t\n\t\tfunction int(a /*: string*/) /*: number*/ {\n\t\t return parseInt(a, 10);\n\t\t}\n\t\t\n\t\tfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) {\n\t\t if (props[propName]) {\n\t\t return new Error('Invalid prop ' + propName + ' passed to ' + componentName + ' - do not set this, set it on the child.');\n\t\t }\n\t\t}\n\t\n\t/***/ },\n\t/* 7 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.getPrefix = getPrefix;\n\t\texports.browserPrefixToKey = browserPrefixToKey;\n\t\texports.browserPrefixToStyle = browserPrefixToStyle;\n\t\t\n\t\tvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\t\tfunction getPrefix() /*: string*/ {\n\t\t var prop /*: string*/ = arguments.length <= 0 || arguments[0] === undefined ? 'transform' : arguments[0];\n\t\t\n\t\t // Checking specifically for 'window.document' is for pseudo-browser server-side\n\t\t // environments that define 'window' as the global context.\n\t\t // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n\t\t if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\t\t\n\t\t var style = window.document.documentElement.style;\n\t\t\n\t\t if (prop in style) return '';\n\t\t\n\t\t for (var i = 0; i < prefixes.length; i++) {\n\t\t if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n\t\t }\n\t\t\n\t\t return '';\n\t\t}\n\t\t\n\t\tfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n\t\t return prefix ? '' + prefix + kebabToTitleCase(prop) : prop;\n\t\t}\n\t\t\n\t\tfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n\t\t return prefix ? '-' + prefix.toLowerCase() + '-' + prop : prop;\n\t\t}\n\t\t\n\t\tfunction kebabToTitleCase(str /*: string*/) /*: string*/ {\n\t\t var out = '';\n\t\t var shouldCapitalize = true;\n\t\t for (var i = 0; i < str.length; i++) {\n\t\t if (shouldCapitalize) {\n\t\t out += str[i].toUpperCase();\n\t\t shouldCapitalize = false;\n\t\t } else if (str[i] === '-') {\n\t\t shouldCapitalize = true;\n\t\t } else {\n\t\t out += str[i];\n\t\t }\n\t\t }\n\t\t return out;\n\t\t}\n\t\t\n\t\t// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n\t\t// Note that you may have to re-test for certain things; for instance, Chrome 50\n\t\t// can handle unprefixed `transform`, but not unprefixed `user-select`\n\t\texports.default = getPrefix();\n\t\n\t/***/ },\n\t/* 8 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.getBoundPosition = getBoundPosition;\n\t\texports.snapToGrid = snapToGrid;\n\t\texports.canDragX = canDragX;\n\t\texports.canDragY = canDragY;\n\t\texports.getControlPosition = getControlPosition;\n\t\texports.createCoreData = createCoreData;\n\t\texports.createDraggableData = createDraggableData;\n\t\t\n\t\tvar _shims = __webpack_require__(6);\n\t\t\n\t\tvar _reactDom = __webpack_require__(3);\n\t\t\n\t\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\t\n\t\tvar _domFns = __webpack_require__(5);\n\t\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\t\n\t\t/*:: import type Draggable from '../Draggable';*/\n\t\t/*:: import type {Bounds, ControlPosition, DraggableData} from './types';*/\n\t\t/*:: import type DraggableCore from '../DraggableCore';*/\n\t\tfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/ {\n\t\t // If no bounds, short-circuit and move on\n\t\t if (!draggable.props.bounds) return [x, y];\n\t\t\n\t\t // Clone new bounds\n\t\t var bounds = draggable.props.bounds;\n\t\t\n\t\t bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n\t\t var node = _reactDom2.default.findDOMNode(draggable);\n\t\t\n\t\t if (typeof bounds === 'string') {\n\t\t var boundNode = void 0;\n\t\t if (bounds === 'parent') {\n\t\t boundNode = node.parentNode;\n\t\t } else {\n\t\t boundNode = document.querySelector(bounds);\n\t\t if (!boundNode) throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n\t\t }\n\t\t var nodeStyle = window.getComputedStyle(node);\n\t\t var boundNodeStyle = window.getComputedStyle(boundNode);\n\t\t // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\t\t bounds = {\n\t\t left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.borderLeftWidth) + (0, _shims.int)(nodeStyle.marginLeft),\n\t\t top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.borderTopWidth) + (0, _shims.int)(nodeStyle.marginTop),\n\t\t right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft,\n\t\t bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop\n\t\t };\n\t\t }\n\t\t\n\t\t // Keep x and y below right and bottom limits...\n\t\t if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n\t\t if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\t\t\n\t\t // But above left and top limits.\n\t\t if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n\t\t if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n\t\t\n\t\t return [x, y];\n\t\t}\n\t\t\n\t\tfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ {\n\t\t var x = Math.round(pendingX / grid[0]) * grid[0];\n\t\t var y = Math.round(pendingY / grid[1]) * grid[1];\n\t\t return [x, y];\n\t\t}\n\t\t\n\t\tfunction canDragX(draggable /*: Draggable*/) /*: boolean*/ {\n\t\t return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n\t\t}\n\t\t\n\t\tfunction canDragY(draggable /*: Draggable*/) /*: boolean*/ {\n\t\t return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n\t\t}\n\t\t\n\t\t// Get {x, y} positions from event.\n\t\tfunction getControlPosition(e /*: MouseEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/ {\n\t\t var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n\t\t if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\t\t return (0, _domFns.offsetXYFromParentOf)(touchObj || e, _reactDom2.default.findDOMNode(draggableCore));\n\t\t}\n\t\t\n\t\t// Create an data object exposed by 's events\n\t\tfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ {\n\t\t // State changes are often (but not always!) async. We want the latest value.\n\t\t var state = draggable._pendingState || draggable.state;\n\t\t var isStart = !(0, _shims.isNum)(state.lastX);\n\t\t\n\t\t if (isStart) {\n\t\t // If this is our first move, use the x and y as last coords.\n\t\t return {\n\t\t node: _reactDom2.default.findDOMNode(draggable),\n\t\t deltaX: 0, deltaY: 0,\n\t\t lastX: x, lastY: y,\n\t\t x: x, y: y\n\t\t };\n\t\t } else {\n\t\t // Otherwise calculate proper values.\n\t\t return {\n\t\t node: _reactDom2.default.findDOMNode(draggable),\n\t\t deltaX: x - state.lastX, deltaY: y - state.lastY,\n\t\t lastX: state.lastX, lastY: state.lastY,\n\t\t x: x, y: y\n\t\t };\n\t\t }\n\t\t}\n\t\t\n\t\t// Create an data exposed by 's events\n\t\tfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ {\n\t\t return {\n\t\t node: coreData.node,\n\t\t x: draggable.state.x + coreData.deltaX,\n\t\t y: draggable.state.y + coreData.deltaY,\n\t\t deltaX: coreData.deltaX,\n\t\t deltaY: coreData.deltaY,\n\t\t lastX: draggable.state.x,\n\t\t lastY: draggable.state.y\n\t\t };\n\t\t}\n\t\t\n\t\t// A lot faster than stringify/parse\n\t\tfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/ {\n\t\t return {\n\t\t left: bounds.left,\n\t\t top: bounds.top,\n\t\t right: bounds.right,\n\t\t bottom: bounds.bottom\n\t\t };\n\t\t}\n\t\n\t/***/ },\n\t/* 9 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\t\n\t\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\t\n\t\tvar _react = __webpack_require__(2);\n\t\t\n\t\tvar _react2 = _interopRequireDefault(_react);\n\t\t\n\t\tvar _reactDom = __webpack_require__(3);\n\t\t\n\t\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\t\n\t\tvar _domFns = __webpack_require__(5);\n\t\t\n\t\tvar _positionFns = __webpack_require__(8);\n\t\t\n\t\tvar _shims = __webpack_require__(6);\n\t\t\n\t\tvar _log = __webpack_require__(10);\n\t\t\n\t\tvar _log2 = _interopRequireDefault(_log);\n\t\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\t\n\t\t// Simple abstraction for dragging events names.\n\t\t/*:: import type {EventHandler} from './utils/types';*/\n\t\tvar eventsFor = {\n\t\t touch: {\n\t\t start: 'touchstart',\n\t\t move: 'touchmove',\n\t\t stop: 'touchend'\n\t\t },\n\t\t mouse: {\n\t\t start: 'mousedown',\n\t\t move: 'mousemove',\n\t\t stop: 'mouseup'\n\t\t }\n\t\t};\n\t\t\n\t\t// Default to mouse events.\n\t\tvar dragEventFor = eventsFor.mouse;\n\t\t\n\t\t//\n\t\t// Define .\n\t\t//\n\t\t// is for advanced usage of . It maintains minimal internal state so it can\n\t\t// work well with libraries that require more control over the element.\n\t\t//\n\t\t\n\t\t/*:: type CoreState = {\n\t\t dragging: boolean,\n\t\t lastX: number,\n\t\t lastY: number,\n\t\t touchIdentifier: ?number\n\t\t};*/\n\t\t\n\t\tvar DraggableCore = function (_React$Component) {\n\t\t _inherits(DraggableCore, _React$Component);\n\t\t\n\t\t function DraggableCore() {\n\t\t var _Object$getPrototypeO;\n\t\t\n\t\t var _temp, _this, _ret;\n\t\t\n\t\t _classCallCheck(this, DraggableCore);\n\t\t\n\t\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t args[_key] = arguments[_key];\n\t\t }\n\t\t\n\t\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(DraggableCore)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.state = {\n\t\t dragging: false,\n\t\t // Used while dragging to determine deltas.\n\t\t lastX: NaN, lastY: NaN,\n\t\t touchIdentifier: null\n\t\t }, _this.handleDragStart = function (e) {\n\t\t // Make it possible to attach event handlers on top of this one.\n\t\t _this.props.onMouseDown(e);\n\t\t\n\t\t // Only accept left-clicks.\n\t\t if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\t\t\n\t\t // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\t\t if (_this.props.disabled || !(e.target instanceof Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, _reactDom2.default.findDOMNode(_this)) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, _reactDom2.default.findDOMNode(_this))) {\n\t\t return;\n\t\t }\n\t\t\n\t\t // Set touch identifier in component state if this is a touch event. This allows us to\n\t\t // distinguish between individual touches on multitouch screens by identifying which\n\t\t // touchpoint was set to this element.\n\t\t var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\t\t _this.setState({ touchIdentifier: touchIdentifier });\n\t\t\n\t\t // Get the current drag point from the event. This is used as the offset.\n\t\t var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _this);\n\t\t if (position == null) return; // not possible but satisfies flow\n\t\t var x = position.x;\n\t\t var y = position.y;\n\t\t\n\t\t // Create an event object with all the data parents need to make a decision here.\n\t\t\n\t\t var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\t\t\n\t\t (0, _log2.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\t\t\n\t\t // Call event handler. If it returns explicit false, cancel.\n\t\t (0, _log2.default)('calling', _this.props.onStart);\n\t\t var shouldUpdate = _this.props.onStart(e, coreEvent);\n\t\t if (shouldUpdate === false) return;\n\t\t\n\t\t // Add a style to the body to disable user-select. This prevents text from\n\t\t // being selected all over the page.\n\t\t if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)();\n\t\t\n\t\t // Initiate dragging. Set the current x and y as offsets\n\t\t // so we know how much we've moved during the drag. This allows us\n\t\t // to drag elements around even if they have been moved, without issue.\n\t\t _this.setState({\n\t\t dragging: true,\n\t\t\n\t\t lastX: x,\n\t\t lastY: y\n\t\t });\n\t\t\n\t\t // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n\t\t // this element. We use different events depending on whether or not we have detected that this\n\t\t // is a touch-capable device.\n\t\t (0, _domFns.addEvent)(document, dragEventFor.move, _this.handleDrag);\n\t\t (0, _domFns.addEvent)(document, dragEventFor.stop, _this.handleDragStop);\n\t\t }, _this.handleDrag = function (e) {\n\t\t\n\t\t // Get the current drag point from the event. This is used as the offset.\n\t\t var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n\t\t if (position == null) return;\n\t\t var x = position.x;\n\t\t var y = position.y;\n\t\t\n\t\t // Snap to grid if prop has been provided\n\t\t\n\t\t if (x !== x) debugger;\n\t\t\n\t\t if (Array.isArray(_this.props.grid)) {\n\t\t var deltaX = x - _this.state.lastX,\n\t\t deltaY = y - _this.state.lastY;\n\t\t\n\t\t var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\t\t\n\t\t var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\t\t\n\t\t deltaX = _snapToGrid2[0];\n\t\t deltaY = _snapToGrid2[1];\n\t\t\n\t\t if (!deltaX && !deltaY) return; // skip useless drag\n\t\t x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n\t\t }\n\t\t\n\t\t var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\t\t\n\t\t (0, _log2.default)('DraggableCore: handleDrag: %j', coreEvent);\n\t\t\n\t\t // Call event handler. If it returns explicit false, trigger end.\n\t\t var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\t\t if (shouldUpdate === false) {\n\t\t _this.handleDragStop(new MouseEvent());\n\t\t return;\n\t\t }\n\t\t\n\t\t _this.setState({\n\t\t lastX: x,\n\t\t lastY: y\n\t\t });\n\t\t }, _this.handleDragStop = function (e) {\n\t\t if (!_this.state.dragging) return;\n\t\t\n\t\t var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n\t\t if (position == null) return;\n\t\t var x = position.x;\n\t\t var y = position.y;\n\t\t\n\t\t var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\t\t\n\t\t // Remove user-select hack\n\t\t if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)();\n\t\t\n\t\t (0, _log2.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\t\t\n\t\t // Reset the el.\n\t\t _this.setState({\n\t\t dragging: false,\n\t\t lastX: NaN,\n\t\t lastY: NaN\n\t\t });\n\t\t\n\t\t // Call event handler\n\t\t _this.props.onStop(e, coreEvent);\n\t\t\n\t\t // Remove event handlers\n\t\t (0, _log2.default)('DraggableCore: Removing handlers');\n\t\t (0, _domFns.removeEvent)(document, dragEventFor.move, _this.handleDrag);\n\t\t (0, _domFns.removeEvent)(document, dragEventFor.stop, _this.handleDragStop);\n\t\t }, _this.onMouseDown = function (e) {\n\t\t dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\t\t\n\t\t return _this.handleDragStart(e);\n\t\t }, _this.onMouseUp = function (e) {\n\t\t dragEventFor = eventsFor.mouse;\n\t\t\n\t\t return _this.handleDragStop(e);\n\t\t }, _this.onTouchStart = function (e) {\n\t\t // We're on a touch device now, so change the event handlers\n\t\t dragEventFor = eventsFor.touch;\n\t\t\n\t\t return _this.handleDragStart(e);\n\t\t }, _this.onTouchEnd = function (e) {\n\t\t // We're on a touch device now, so change the event handlers\n\t\t dragEventFor = eventsFor.touch;\n\t\t\n\t\t return _this.handleDragStop(e);\n\t\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t\t }\n\t\t\n\t\t _createClass(DraggableCore, [{\n\t\t key: 'componentWillUnmount',\n\t\t value: function componentWillUnmount() {\n\t\t // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n\t\t // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\t\t (0, _domFns.removeEvent)(document, eventsFor.mouse.move, this.handleDrag);\n\t\t (0, _domFns.removeEvent)(document, eventsFor.touch.move, this.handleDrag);\n\t\t (0, _domFns.removeEvent)(document, eventsFor.mouse.stop, this.handleDragStop);\n\t\t (0, _domFns.removeEvent)(document, eventsFor.touch.stop, this.handleDragStop);\n\t\t if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)();\n\t\t }\n\t\t\n\t\t // Same as onMouseDown (start drag), but now consider this a touch device.\n\t\t\n\t\t }, {\n\t\t key: 'render',\n\t\t value: function render() {\n\t\t // Reuse the child provided\n\t\t // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\t\t return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {\n\t\t style: (0, _domFns.styleHacks)(this.props.children.props.style),\n\t\t\n\t\t // Note: mouseMove handler is attached to document so it will still function\n\t\t // when the user drags quickly and leaves the bounds of the element.\n\t\t onMouseDown: this.onMouseDown,\n\t\t onTouchStart: this.onTouchStart,\n\t\t onMouseUp: this.onMouseUp,\n\t\t onTouchEnd: this.onTouchEnd\n\t\t });\n\t\t }\n\t\t }]);\n\t\t\n\t\t return DraggableCore;\n\t\t}(_react2.default.Component);\n\t\t\n\t\tDraggableCore.displayName = 'DraggableCore';\n\t\tDraggableCore.propTypes = {\n\t\t /**\n\t\t * `allowAnyClick` allows dragging using any mouse button.\n\t\t * By default, we only accept the left button.\n\t\t *\n\t\t * Defaults to `false`.\n\t\t */\n\t\t allowAnyClick: _react.PropTypes.bool,\n\t\t\n\t\t /**\n\t\t * `disabled`, if true, stops the from dragging. All handlers,\n\t\t * with the exception of `onMouseDown`, will not fire.\n\t\t */\n\t\t disabled: _react.PropTypes.bool,\n\t\t\n\t\t /**\n\t\t * By default, we add 'user-select:none' attributes to the document body\n\t\t * to prevent ugly text selection during drag. If this is causing problems\n\t\t * for your app, set this to `false`.\n\t\t */\n\t\t enableUserSelectHack: _react.PropTypes.bool,\n\t\t\n\t\t /**\n\t\t * `grid` specifies the x and y that dragging should snap to.\n\t\t */\n\t\t grid: _react.PropTypes.arrayOf(_react.PropTypes.number),\n\t\t\n\t\t /**\n\t\t * `handle` specifies a selector to be used as the handle that initiates drag.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * let App = React.createClass({\n\t\t * render: function () {\n\t\t * return (\n\t\t * \n\t\t *
\n\t\t *
Click me to drag
\n\t\t *
This is some other content
\n\t\t *
\n\t\t *
\n\t\t * );\n\t\t * }\n\t\t * });\n\t\t * ```\n\t\t */\n\t\t handle: _react.PropTypes.string,\n\t\t\n\t\t /**\n\t\t * `cancel` specifies a selector to be used to prevent drag initialization.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * let App = React.createClass({\n\t\t * render: function () {\n\t\t * return(\n\t\t * \n\t\t *
\n\t\t *
You can't drag from here
\n\t\t *
Dragging here works fine
\n\t\t *
\n\t\t *
\n\t\t * );\n\t\t * }\n\t\t * });\n\t\t * ```\n\t\t */\n\t\t cancel: _react.PropTypes.string,\n\t\t\n\t\t /**\n\t\t * Called when dragging starts.\n\t\t * If this function returns the boolean false, dragging will be canceled.\n\t\t */\n\t\t onStart: _react.PropTypes.func,\n\t\t\n\t\t /**\n\t\t * Called while dragging.\n\t\t * If this function returns the boolean false, dragging will be canceled.\n\t\t */\n\t\t onDrag: _react.PropTypes.func,\n\t\t\n\t\t /**\n\t\t * Called when dragging stops.\n\t\t * If this function returns the boolean false, the drag will remain active.\n\t\t */\n\t\t onStop: _react.PropTypes.func,\n\t\t\n\t\t /**\n\t\t * A workaround option which can be passed if onMouseDown needs to be accessed,\n\t\t * since it'll always be blocked (as there is internal use of onMouseDown)\n\t\t */\n\t\t onMouseDown: _react.PropTypes.func,\n\t\t\n\t\t /**\n\t\t * These properties should be defined on the child, not here.\n\t\t */\n\t\t className: _shims.dontSetMe,\n\t\t style: _shims.dontSetMe,\n\t\t transform: _shims.dontSetMe\n\t\t};\n\t\tDraggableCore.defaultProps = {\n\t\t allowAnyClick: false, // by default only accept left click\n\t\t cancel: null,\n\t\t disabled: false,\n\t\t enableUserSelectHack: true,\n\t\t handle: null,\n\t\t grid: null,\n\t\t transform: null,\n\t\t onStart: function onStart() {},\n\t\t onDrag: function onDrag() {},\n\t\t onStop: function onStop() {},\n\t\t onMouseDown: function onMouseDown() {}\n\t\t};\n\t\texports.default = DraggableCore;\n\t\n\t/***/ },\n\t/* 10 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = log;\n\t\t\n\t\t/*eslint no-console:0*/\n\t\tfunction log() {\n\t\t var _console;\n\t\t\n\t\t if ((undefined)) (_console = console).log.apply(_console, arguments);\n\t\t}\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\t//# sourceMappingURL=react-draggable.js.map\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDraggable = __webpack_require__(6);\n\t\n\tvar _cloneElement = __webpack_require__(17);\n\t\n\tvar _cloneElement2 = _interopRequireDefault(_cloneElement);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t/*:: type Position = {\n\t\n\t};*/\n\t/*:: type State = {\n\t resizing: boolean,\n\t width: number, height: number,\n\t slackW: number, slackH: number\n\t};*/\n\t/*:: type DragCallbackData = {\n\t node: HTMLElement,\n\t x: number, y: number,\n\t deltaX: number, deltaY: number,\n\t lastX: number, lastY: number\n\t};*/\n\t\n\tvar Resizable = function (_React$Component) {\n\t _inherits(Resizable, _React$Component);\n\t\n\t function Resizable() {\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, Resizable);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n\t resizing: false,\n\t width: _this.props.width, height: _this.props.height,\n\t slackW: 0, slackH: 0\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t Resizable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps /*: Object*/) {\n\t // If parent changes height/width, set that in our state.\n\t if (!this.state.resizing && (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) {\n\t this.setState({\n\t width: nextProps.width,\n\t height: nextProps.height\n\t });\n\t }\n\t };\n\t\n\t Resizable.prototype.lockAspectRatio = function lockAspectRatio(width /*: number*/, height /*: number*/, aspectRatio /*: number*/) {\n\t height = width / aspectRatio;\n\t width = height * aspectRatio;\n\t return [width, height];\n\t };\n\t\n\t // If you do this, be careful of constraints\n\t\n\t\n\t Resizable.prototype.runConstraints = function runConstraints(width /*: number*/, height /*: number*/) {\n\t var min = this.props.minConstraints;\n\t var max = this.props.maxConstraints;\n\t\n\t\n\t if (this.props.lockAspectRatio) {\n\t var ratio = this.state.width / this.state.height;\n\t height = width / ratio;\n\t width = height * ratio;\n\t }\n\t\n\t if (!min && !max) return [width, height];\n\t\n\t var oldW = width;\n\t var oldH = height;\n\t\n\t // Add slack to the values used to calculate bound position. This will ensure that if\n\t // we start removing slack, the element won't react to it right away until it's been\n\t // completely removed.\n\t\n\t var _state = this.state;\n\t var slackW = _state.slackW;\n\t var slackH = _state.slackH;\n\t\n\t width += slackW;\n\t height += slackH;\n\t\n\t if (min) {\n\t width = Math.max(min[0], width);\n\t height = Math.max(min[1], height);\n\t }\n\t if (max) {\n\t width = Math.min(max[0], width);\n\t height = Math.min(max[1], height);\n\t }\n\t\n\t // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\t slackW += oldW - width;\n\t slackH += oldH - height;\n\t if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n\t this.setState({ slackW: slackW, slackH: slackH });\n\t }\n\t\n\t return [width, height];\n\t };\n\t\n\t /**\n\t * Wrapper around drag events to provide more useful data.\n\t *\n\t * @param {String} handlerName Handler name to wrap.\n\t * @return {Function} Handler function.\n\t */\n\t\n\t\n\t Resizable.prototype.resizeHandler = function resizeHandler(handlerName /*: string*/) {\n\t var _this2 = this;\n\t\n\t return function (e, _ref) {\n\t var node = _ref.node;\n\t var deltaX = _ref.deltaX;\n\t var deltaY = _ref.deltaY;\n\t\n\t var width = _this2.state.width + deltaX,\n\t height = _this2.state.height + deltaY;\n\t\n\t // Early return if no change\n\t var widthChanged = width !== _this2.state.width,\n\t heightChanged = height !== _this2.state.height;\n\t if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\t\n\t // Set the appropriate state for this handler.\n\t\n\t var _runConstraints = _this2.runConstraints(width, height);\n\t\n\t width = _runConstraints[0];\n\t height = _runConstraints[1];\n\t var newState = {};\n\t if (handlerName === 'onResizeStart') {\n\t newState.resizing = true;\n\t } else if (handlerName === 'onResizeStop') {\n\t newState.resizing = false;\n\t newState.slackW = newState.slackH = 0;\n\t } else {\n\t // Early return if no change after constraints\n\t if (width === _this2.state.width && height === _this2.state.height) return;\n\t newState.width = width;\n\t newState.height = height;\n\t }\n\t\n\t _this2.setState(newState, function () {\n\t _this2.props[handlerName] && _this2.props[handlerName](e, { node: node, size: { width: width, height: height } });\n\t });\n\t };\n\t };\n\t\n\t Resizable.prototype.render = function render() {\n\t var _props = this.props;\n\t var width = _props.width;\n\t var height = _props.height;\n\t\n\t var p = _objectWithoutProperties(_props, ['width', 'height']);\n\t\n\t var className = p.className ? p.className + ' react-resizable' : 'react-resizable';\n\t\n\t // What we're doing here is getting the child of this element, and cloning it with this element's props.\n\t // We are then defining its children as:\n\t // Its original children (resizable's child's children), and\n\t // A draggable handle.\n\t return (0, _cloneElement2.default)(p.children, _extends({}, p, {\n\t className: className,\n\t children: [p.children.props.children, _react2.default.createElement(\n\t _reactDraggable.DraggableCore,\n\t _extends({}, p.draggableOpts, {\n\t key: 'resizableHandle',\n\t ref: 'draggable',\n\t onStop: this.resizeHandler('onResizeStop'),\n\t onStart: this.resizeHandler('onResizeStart'),\n\t onDrag: this.resizeHandler('onResize')\n\t }),\n\t _react2.default.createElement('span', { className: 'react-resizable-handle' })\n\t )]\n\t }));\n\t };\n\t\n\t return Resizable;\n\t}(_react2.default.Component);\n\t\n\tResizable.propTypes = {\n\t //\n\t // Required Props\n\t //\n\t\n\t // Require that one and only one child be present.\n\t children: _react.PropTypes.element.isRequired,\n\t\n\t // Initial w/h\n\t width: _react.PropTypes.number.isRequired,\n\t height: _react.PropTypes.number.isRequired,\n\t\n\t //\n\t // Optional props\n\t //\n\t\n\t // If you change this, be sure to update your css\n\t handleSize: _react.PropTypes.array,\n\t\n\t // If true, will only allow width/height to move in lockstep\n\t lockAspectRatio: _react.PropTypes.bool,\n\t\n\t // Min/max size\n\t minConstraints: _react.PropTypes.arrayOf(_react.PropTypes.number),\n\t maxConstraints: _react.PropTypes.arrayOf(_react.PropTypes.number),\n\t\n\t // Callbacks\n\t onResizeStop: _react.PropTypes.func,\n\t onResizeStart: _react.PropTypes.func,\n\t onResize: _react.PropTypes.func,\n\t\n\t // These will be passed wholesale to react-draggable's DraggableCore\n\t draggableOpts: _react.PropTypes.object\n\t};\n\tResizable.defaultProps = {\n\t handleSize: [20, 20],\n\t lockAspectRatio: false,\n\t minConstraints: [20, 20],\n\t maxConstraints: [Infinity, Infinity]\n\t};\n\texports.default = Resizable;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_9__;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDraggable = __webpack_require__(6);\n\t\n\tvar _reactResizable = __webpack_require__(18);\n\t\n\tvar _utils = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t/*:: import type {DragCallbackData, Position} from './utils';*/\n\t\n\t\n\t/**\n\t * An individual item within a ReactGridLayout.\n\t */\n\t/*:: type State = {\n\t resizing: ?{width: number, height: number},\n\t dragging: ?{top: number, left: number},\n\t className: string\n\t};*/\n\t\n\tvar GridItem = function (_React$Component) {\n\t _inherits(GridItem, _React$Component);\n\t\n\t function GridItem() {\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, GridItem);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n\t resizing: null,\n\t dragging: null,\n\t className: ''\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t // Helper for generating column width\n\t\n\t GridItem.prototype.calcColWidth = function calcColWidth() {\n\t var _props = this.props;\n\t var margin = _props.margin;\n\t var containerWidth = _props.containerWidth;\n\t var cols = _props.cols;\n\t\n\t return (containerWidth - margin[0] * (cols + 1)) / cols;\n\t };\n\t\n\t /**\n\t * Return position on the page given an x, y, w, h.\n\t * left, top, width, height are all in pixels.\n\t * @param {Number} x X coordinate in grid units.\n\t * @param {Number} y Y coordinate in grid units.\n\t * @param {Number} w W coordinate in grid units.\n\t * @param {Number} h H coordinate in grid units.\n\t * @return {Object} Object containing coords.\n\t */\n\t\n\t\n\t GridItem.prototype.calcPosition = function calcPosition(x /*: number*/, y /*: number*/, w /*: number*/, h /*: number*/, state /*: ?Object*/) {\n\t var _props2 = this.props;\n\t var margin = _props2.margin;\n\t var rowHeight = _props2.rowHeight;\n\t\n\t var colWidth = this.calcColWidth();\n\t\n\t var out = {\n\t left: Math.round(colWidth * x + (x + 1) * margin[0]),\n\t top: Math.round(rowHeight * y + (y + 1) * margin[1]),\n\t // 0 * Infinity === NaN, which causes problems with resize constriants;\n\t // Fix this if it occurs.\n\t // Note we do it here rather than later because Math.round(Infinity) causes deopt\n\t width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]),\n\t height: h === Infinity ? h : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1])\n\t };\n\t\n\t if (state && state.resizing) {\n\t out.width = Math.round(state.resizing.width);\n\t out.height = Math.round(state.resizing.height);\n\t }\n\t\n\t if (state && state.dragging) {\n\t out.top = Math.round(state.dragging.top);\n\t out.left = Math.round(state.dragging.left);\n\t }\n\t\n\t return out;\n\t };\n\t\n\t /**\n\t * Translate x and y coordinates from pixels to grid units.\n\t * @param {Number} top Top position (relative to parent) in pixels.\n\t * @param {Number} left Left position (relative to parent) in pixels.\n\t * @return {Object} x and y in grid units.\n\t */\n\t\n\t\n\t GridItem.prototype.calcXY = function calcXY(top /*: number*/, left /*: number*/) {\n\t var _props3 = this.props;\n\t var margin = _props3.margin;\n\t var cols = _props3.cols;\n\t var rowHeight = _props3.rowHeight;\n\t var w = _props3.w;\n\t var h = _props3.h;\n\t var maxRows = _props3.maxRows;\n\t\n\t var colWidth = this.calcColWidth();\n\t\n\t // left = colWidth * x + margin * (x + 1)\n\t // l = cx + m(x+1)\n\t // l = cx + mx + m\n\t // l - m = cx + mx\n\t // l - m = x(c + m)\n\t // (l - m) / (c + m) = x\n\t // x = (left - margin) / (coldWidth + margin)\n\t var x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n\t var y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\t\n\t // Capping\n\t x = Math.max(Math.min(x, cols - w), 0);\n\t y = Math.max(Math.min(y, maxRows - h), 0);\n\t\n\t return { x: x, y: y };\n\t };\n\t\n\t /**\n\t * Given a height and width in pixel values, calculate grid units.\n\t * @param {Number} height Height in pixels.\n\t * @param {Number} width Width in pixels.\n\t * @return {Object} w, h as grid units.\n\t */\n\t\n\t\n\t GridItem.prototype.calcWH = function calcWH(_ref) {\n\t var height = _ref.height;\n\t var width = _ref.width;\n\t var _props4 = this.props;\n\t var margin = _props4.margin;\n\t var maxRows = _props4.maxRows;\n\t var cols = _props4.cols;\n\t var rowHeight = _props4.rowHeight;\n\t var x = _props4.x;\n\t var y = _props4.y;\n\t\n\t var colWidth = this.calcColWidth();\n\t\n\t // width = colWidth * w - (margin * (w - 1))\n\t // ...\n\t // w = (width + margin) / (colWidth + margin)\n\t var w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n\t var h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\t\n\t // Capping\n\t w = Math.max(Math.min(w, cols - x), 0);\n\t h = Math.max(Math.min(h, maxRows - y), 0);\n\t return { w: w, h: h };\n\t };\n\t\n\t /**\n\t * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n\t * well when server rendering, and the only way to do that properly is to use percentage width/left because\n\t * we don't know exactly what the browser viewport is.\n\t * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n\t * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n\t *\n\t * @param {Object} pos Position object with width, height, left, top.\n\t * @return {Object} Style object.\n\t */\n\t\n\t\n\t GridItem.prototype.createStyle = function createStyle(pos /*: Position*/) {\n\t var _props5 = this.props;\n\t var usePercentages = _props5.usePercentages;\n\t var containerWidth = _props5.containerWidth;\n\t var useCSSTransforms = _props5.useCSSTransforms;\n\t\n\t\n\t var style = void 0;\n\t // CSS Transforms support (default)\n\t if (useCSSTransforms) {\n\t style = (0, _utils.setTransform)(pos);\n\t }\n\t // top,left (slow)\n\t else {\n\t style = (0, _utils.setTopLeft)(pos);\n\t\n\t // This is used for server rendering.\n\t if (usePercentages) {\n\t style.left = (0, _utils.perc)(pos.left / containerWidth);\n\t style.width = (0, _utils.perc)(pos.width / containerWidth);\n\t }\n\t }\n\t\n\t return style;\n\t };\n\t\n\t /**\n\t * Mix a Draggable instance into a child.\n\t * @param {Element} child Child element.\n\t * @return {Element} Child wrapped in Draggable.\n\t */\n\t\n\t\n\t GridItem.prototype.mixinDraggable = function mixinDraggable(child /*: React.Element*/) {\n\t return _react2.default.createElement(\n\t _reactDraggable.DraggableCore,\n\t {\n\t onStart: this.onDragHandler('onDragStart'),\n\t onDrag: this.onDragHandler('onDrag'),\n\t onStop: this.onDragHandler('onDragStop'),\n\t handle: this.props.handle,\n\t cancel: \".react-resizable-handle\" + (this.props.cancel ? \",\" + this.props.cancel : \"\") },\n\t child\n\t );\n\t };\n\t\n\t /**\n\t * Mix a Resizable instance into a child.\n\t * @param {Element} child Child element.\n\t * @param {Object} position Position object (pixel values)\n\t * @return {Element} Child wrapped in Resizable.\n\t */\n\t\n\t\n\t GridItem.prototype.mixinResizable = function mixinResizable(child /*: React.Element*/, position /*: Position*/) {\n\t var _props6 = this.props;\n\t var cols = _props6.cols;\n\t var x = _props6.x;\n\t var minW = _props6.minW;\n\t var minH = _props6.minH;\n\t var maxW = _props6.maxW;\n\t var maxH = _props6.maxH;\n\t\n\t // This is the max possible width - doesn't go to infinity because of the width of the window\n\t\n\t var maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\t\n\t // Calculate min/max constraints using our min & maxes\n\t var mins = this.calcPosition(0, 0, minW, minH);\n\t var maxes = this.calcPosition(0, 0, maxW, maxH);\n\t var minConstraints = [mins.width, mins.height];\n\t var maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n\t return _react2.default.createElement(\n\t _reactResizable.Resizable,\n\t {\n\t width: position.width,\n\t height: position.height,\n\t minConstraints: minConstraints,\n\t maxConstraints: maxConstraints,\n\t onResizeStop: this.onResizeHandler('onResizeStop'),\n\t onResizeStart: this.onResizeHandler('onResizeStart'),\n\t onResize: this.onResizeHandler('onResize') },\n\t child\n\t );\n\t };\n\t\n\t /**\n\t * Wrapper around drag events to provide more useful data.\n\t * All drag events call the function with the given handler name,\n\t * with the signature (index, x, y).\n\t *\n\t * @param {String} handlerName Handler name to wrap.\n\t * @return {Function} Handler function.\n\t */\n\t\n\t\n\t GridItem.prototype.onDragHandler = function onDragHandler(handlerName /*:string*/) {\n\t var _this2 = this;\n\t\n\t return function (e /*:Event*/, _ref2) {\n\t var node = _ref2.node;\n\t var deltaX = _ref2.deltaX;\n\t var deltaY = _ref2.deltaY;\n\t\n\t if (!_this2.props[handlerName]) return;\n\t\n\t var newPosition /*: {top: number, left: number}*/ = { top: 0, left: 0 };\n\t\n\t // Get new XY\n\t switch (handlerName) {\n\t case 'onDragStart':\n\t // ToDo this wont work on nested parents\n\t var parentRect = node.offsetParent.getBoundingClientRect();\n\t var clientRect = node.getBoundingClientRect();\n\t newPosition.left = clientRect.left - parentRect.left;\n\t newPosition.top = clientRect.top - parentRect.top;\n\t _this2.setState({ dragging: newPosition });\n\t break;\n\t case 'onDrag':\n\t if (!_this2.state.dragging) throw new Error('onDrag called before onDragStart.');\n\t newPosition.left = _this2.state.dragging.left + deltaX;\n\t newPosition.top = _this2.state.dragging.top + deltaY;\n\t _this2.setState({ dragging: newPosition });\n\t break;\n\t case 'onDragStop':\n\t if (!_this2.state.dragging) throw new Error('onDragEnd called before onDragStart.');\n\t newPosition.left = _this2.state.dragging.left;\n\t newPosition.top = _this2.state.dragging.top;\n\t _this2.setState({ dragging: null });\n\t break;\n\t default:\n\t throw new Error('onDragHandler called with unrecognized handlerName: ' + handlerName);\n\t }\n\t\n\t var _calcXY = _this2.calcXY(newPosition.top, newPosition.left);\n\t\n\t var x = _calcXY.x;\n\t var y = _calcXY.y;\n\t\n\t\n\t _this2.props[handlerName](_this2.props.i, x, y, { e: e, node: node, newPosition: newPosition });\n\t };\n\t };\n\t\n\t /**\n\t * Wrapper around drag events to provide more useful data.\n\t * All drag events call the function with the given handler name,\n\t * with the signature (index, x, y).\n\t *\n\t * @param {String} handlerName Handler name to wrap.\n\t * @return {Function} Handler function.\n\t */\n\t\n\t\n\t GridItem.prototype.onResizeHandler = function onResizeHandler(handlerName /*:string*/) {\n\t var _this3 = this;\n\t\n\t return function (e /*:Event*/, _ref3) {\n\t var element = _ref3.element;\n\t var size = _ref3.size;\n\t\n\t if (!_this3.props[handlerName]) return;\n\t var _props7 = _this3.props;\n\t var cols = _props7.cols;\n\t var x = _props7.x;\n\t var i = _props7.i;\n\t var maxW = _props7.maxW;\n\t var minW = _props7.minW;\n\t var maxH = _props7.maxH;\n\t var minH = _props7.minH;\n\t\n\t // Get new XY\n\t\n\t var _calcWH = _this3.calcWH(size);\n\t\n\t var w = _calcWH.w;\n\t var h = _calcWH.h;\n\t\n\t // Cap w at numCols\n\t\n\t w = Math.min(w, cols - x);\n\t // Ensure w is at least 1\n\t w = Math.max(w, 1);\n\t\n\t // Min/max capping\n\t w = Math.max(Math.min(w, maxW), minW);\n\t h = Math.max(Math.min(h, maxH), minH);\n\t\n\t _this3.setState({ resizing: handlerName === 'onResizeStop' ? null : size });\n\t\n\t _this3.props[handlerName](i, w, h, { e: e, element: element, size: size });\n\t };\n\t };\n\t\n\t GridItem.prototype.render = function render() {\n\t var _props8 = this.props;\n\t var x = _props8.x;\n\t var y = _props8.y;\n\t var w = _props8.w;\n\t var h = _props8.h;\n\t var isDraggable = _props8.isDraggable;\n\t var isResizable = _props8.isResizable;\n\t var useCSSTransforms = _props8.useCSSTransforms;\n\t\n\t\n\t var pos = this.calcPosition(x, y, w, h, this.state);\n\t var child = _react2.default.Children.only(this.props.children);\n\t\n\t // Create the child element. We clone the existing element but modify its className and style.\n\t var newChild = _react2.default.cloneElement(child, {\n\t // Munge a classname. Use passed in classnames and resizing.\n\t // React with merge the classNames.\n\t className: ['react-grid-item', child.props.className || '', this.props.className, this.props.static ? 'static' : '', this.state.resizing ? 'resizing' : '', this.state.dragging ? 'react-draggable-dragging' : '', useCSSTransforms ? 'cssTransforms' : ''].join(' '),\n\t // We can set the width and height on the child, but unfortunately we can't set the position.\n\t style: _extends({}, this.props.style, child.props.style, this.createStyle(pos))\n\t });\n\t\n\t // Resizable support. This is usually on but the user can toggle it off.\n\t if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\t\n\t // Draggable support. This is always on, except for with placeholders.\n\t if (isDraggable) newChild = this.mixinDraggable(newChild);\n\t\n\t return newChild;\n\t };\n\t\n\t return GridItem;\n\t}(_react2.default.Component);\n\t\n\tGridItem.propTypes = {\n\t // Children must be only a single element\n\t children: _react.PropTypes.element,\n\t\n\t // General grid attributes\n\t cols: _react.PropTypes.number.isRequired,\n\t containerWidth: _react.PropTypes.number.isRequired,\n\t rowHeight: _react.PropTypes.number.isRequired,\n\t margin: _react.PropTypes.array.isRequired,\n\t maxRows: _react.PropTypes.number.isRequired,\n\t\n\t // These are all in grid units\n\t x: _react.PropTypes.number.isRequired,\n\t y: _react.PropTypes.number.isRequired,\n\t w: _react.PropTypes.number.isRequired,\n\t h: _react.PropTypes.number.isRequired,\n\t\n\t // All optional\n\t minW: function minW(props, propName, componentName, location, propFullName) {\n\t _react.PropTypes.number(props, propName, componentName, location, propFullName);\n\t var value = props[propName];\n\t if (value > props.w || value > props.maxW) return new Error('minWidth bigger than item width/maxWidth');\n\t },\n\t maxW: function maxW(props, propName, componentName, location, propFullName) {\n\t _react.PropTypes.number(props, propName, componentName, location, propFullName);\n\t var value = props[propName];\n\t if (value < props.w || value < props.minW) return new Error('maxWidth smaller than item width/minWidth');\n\t },\n\t minH: function minH(props, propName, componentName, location, propFullName) {\n\t _react.PropTypes.number(props, propName, componentName, location, propFullName);\n\t var value = props[propName];\n\t if (value > props.h || value > props.maxH) return new Error('minHeight bigger than item height/maxHeight');\n\t },\n\t maxH: function maxH(props, propName, componentName, location, propFullName) {\n\t _react.PropTypes.number(props, propName, componentName, location, propFullName);\n\t var value = props[propName];\n\t if (value < props.h || value < props.minH) return new Error('maxHeight smaller than item height/minHeight');\n\t },\n\t\n\t // ID is nice to have for callbacks\n\t i: _react.PropTypes.string.isRequired,\n\t\n\t // Functions\n\t onDragStop: _react.PropTypes.func,\n\t onDragStart: _react.PropTypes.func,\n\t onDrag: _react.PropTypes.func,\n\t onResizeStop: _react.PropTypes.func,\n\t onResizeStart: _react.PropTypes.func,\n\t onResize: _react.PropTypes.func,\n\t\n\t // Flags\n\t isDraggable: _react.PropTypes.bool.isRequired,\n\t isResizable: _react.PropTypes.bool.isRequired,\n\t static: _react.PropTypes.bool,\n\t\n\t // Use CSS transforms instead of top/left\n\t useCSSTransforms: _react.PropTypes.bool.isRequired,\n\t\n\t // Others\n\t className: _react.PropTypes.string,\n\t // Selector for draggable handle\n\t handle: _react.PropTypes.string,\n\t // Selector for draggable cancel (see react-draggable)\n\t cancel: _react.PropTypes.string\n\t};\n\tGridItem.defaultProps = {\n\t className: '',\n\t cancel: '',\n\t minH: 1,\n\t minW: 1,\n\t maxH: Infinity,\n\t maxW: Infinity\n\t};\n\texports.default = GridItem;\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _lodash = __webpack_require__(5);\n\t\n\tvar _lodash2 = _interopRequireDefault(_lodash);\n\t\n\tvar _utils = __webpack_require__(2);\n\t\n\tvar _responsiveUtils = __webpack_require__(4);\n\t\n\tvar _ReactGridLayout = __webpack_require__(3);\n\t\n\tvar _ReactGridLayout2 = _interopRequireDefault(_ReactGridLayout);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar noop = function noop() {};\n\t\n\t/*:: import type {Layout} from './utils';*/\n\t/*:: type State = {\n\t layout: Layout,\n\t breakpoint: string,\n\t cols: number\n\t};*/\n\t\n\tvar ResponsiveReactGridLayout = function (_React$Component) {\n\t _inherits(ResponsiveReactGridLayout, _React$Component);\n\t\n\t function ResponsiveReactGridLayout() {\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, ResponsiveReactGridLayout);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = _this.generateInitialState(), _this.onLayoutChange = function (layout) {\n\t var _extends2;\n\t\n\t _this.props.onLayoutChange(layout, _extends({}, _this.props.layouts, (_extends2 = {}, _extends2[_this.state.breakpoint] = layout, _extends2)));\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t // This should only include propTypes needed in this code; RGL itself\n\t // will do validation of the rest props passed to it.\n\t\n\t\n\t ResponsiveReactGridLayout.prototype.generateInitialState = function generateInitialState() {\n\t var _props = this.props;\n\t var width = _props.width;\n\t var breakpoints = _props.breakpoints;\n\t var layouts = _props.layouts;\n\t var verticalCompact = _props.verticalCompact;\n\t var cols = _props.cols;\n\t\n\t var breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width);\n\t var colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols);\n\t // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n\t // for this layout.\n\t var initialLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, verticalCompact);\n\t\n\t return {\n\t layout: initialLayout,\n\t breakpoint: breakpoint,\n\t cols: colNo\n\t };\n\t };\n\t\n\t ResponsiveReactGridLayout.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps /*: Object*/) {\n\t\n\t // Allow parent to set width or breakpoint directly.\n\t if (nextProps.width != this.props.width || nextProps.breakpoint !== this.props.breakpoint || nextProps.breakpoints !== this.props.breakpoints || nextProps.cols !== this.props.cols) {\n\t this.onWidthChange(nextProps);\n\t }\n\t\n\t // Allow parent to set layouts directly.\n\t else if (!(0, _lodash2.default)(nextProps.layouts, this.props.layouts)) {\n\t var _state = this.state;\n\t var _breakpoint = _state.breakpoint;\n\t var _cols = _state.cols;\n\t\n\t // Since we're setting an entirely new layout object, we must generate a new responsive layout\n\t // if one does not exist.\n\t\n\t var newLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(nextProps.layouts, nextProps.breakpoints, _breakpoint, _breakpoint, _cols, nextProps.verticalLayout);\n\t this.setState({ layout: newLayout });\n\t }\n\t };\n\t\n\t // wrap layouts so we do not need to pass layouts to child\n\t\n\t\n\t /**\n\t * When the width changes work through breakpoints and reset state with the new width & breakpoint.\n\t * Width changes are necessary to figure out the widget widths.\n\t */\n\t\n\t ResponsiveReactGridLayout.prototype.onWidthChange = function onWidthChange(nextProps /*: typeof ResponsiveReactGridLayout.prototype.props*/) {\n\t var breakpoints = nextProps.breakpoints;\n\t var verticalLayout = nextProps.verticalLayout;\n\t var verticalCompact = nextProps.verticalCompact;\n\t var cols = nextProps.cols;\n\t\n\t var newBreakpoint = nextProps.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(nextProps.breakpoints, nextProps.width);\n\t\n\t var lastBreakpoint = this.state.breakpoint;\n\t\n\t // Breakpoint change\n\t if (lastBreakpoint !== newBreakpoint || this.props.breakpoints !== breakpoints || this.props.cols !== cols) {\n\t\n\t // Store the current layout\n\t var layouts = nextProps.layouts;\n\t layouts[lastBreakpoint] = (0, _utils.cloneLayout)(this.state.layout);\n\t\n\t // Find or generate a new one.\n\t var newCols /*: number*/ = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols);\n\t var _layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, verticalLayout);\n\t\n\t // This adds missing items.\n\t _layout = (0, _utils.synchronizeLayoutWithChildren)(_layout, nextProps.children, newCols, verticalCompact);\n\t\n\t // Store this new layout as well.\n\t layouts[newBreakpoint] = _layout;\n\t\n\t // callbacks\n\t this.props.onLayoutChange(_layout, layouts);\n\t this.props.onBreakpointChange(newBreakpoint, newCols);\n\t this.props.onWidthChange(nextProps.width, nextProps.margin, newCols);\n\t\n\t this.setState({ breakpoint: newBreakpoint, layout: _layout, cols: newCols });\n\t }\n\t };\n\t\n\t ResponsiveReactGridLayout.prototype.render = function render() {\n\t var _props2 = this.props;\n\t var breakpoint = _props2.breakpoint;\n\t var breakpoints = _props2.breakpoints;\n\t var cols = _props2.cols;\n\t var layouts = _props2.layouts;\n\t var onBreakpointChange = _props2.onBreakpointChange;\n\t var onLayoutChange = _props2.onLayoutChange;\n\t var onWidthChange = _props2.onWidthChange;\n\t\n\t var other = _objectWithoutProperties(_props2, ['breakpoint', 'breakpoints', 'cols', 'layouts', 'onBreakpointChange', 'onLayoutChange', 'onWidthChange']);\n\t\n\t return _react2.default.createElement(_ReactGridLayout2.default, _extends({}, other, {\n\t onLayoutChange: this.onLayoutChange,\n\t layout: this.state.layout,\n\t cols: this.state.cols\n\t }));\n\t };\n\t\n\t return ResponsiveReactGridLayout;\n\t}(_react2.default.Component);\n\t\n\tResponsiveReactGridLayout.propTypes = {\n\t\n\t //\n\t // Basic props\n\t //\n\t\n\t // Optional, but if you are managing width yourself you may want to set the breakpoint\n\t // yourself as well.\n\t breakpoint: _react2.default.PropTypes.string,\n\t\n\t // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n\t breakpoints: _react2.default.PropTypes.object,\n\t\n\t // # of cols. This is a breakpoint -> cols map\n\t cols: _react2.default.PropTypes.object,\n\t\n\t // layouts is an object mapping breakpoints to layouts.\n\t // e.g. {lg: Layout, md: Layout, ...}\n\t layouts: function layouts(props) {\n\t _react2.default.PropTypes.object.isRequired.apply(this, arguments);\n\t Object.keys(props.layouts).forEach(function (key) {\n\t return (0, _utils.validateLayout)(props.layouts[key], 'layouts.' + key);\n\t });\n\t },\n\t\n\t // The width of this component.\n\t // Required in this propTypes stanza because generateInitialState() will fail without it.\n\t width: _react2.default.PropTypes.number.isRequired,\n\t\n\t //\n\t // Callbacks\n\t //\n\t\n\t // Calls back with breakpoint and new # cols\n\t onBreakpointChange: _react2.default.PropTypes.func,\n\t\n\t // Callback so you can save the layout.\n\t // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n\t onLayoutChange: _react2.default.PropTypes.func,\n\t\n\t // Calls back with (containerWidth, margin, cols)\n\t onWidthChange: _react2.default.PropTypes.func\n\t};\n\tResponsiveReactGridLayout.defaultProps = {\n\t breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n\t cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n\t layouts: {},\n\t onBreakpointChange: noop,\n\t onLayoutChange: noop,\n\t onWidthChange: noop\n\t};\n\texports.default = ResponsiveReactGridLayout;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(9);\n\t\n\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @noflow\n\t// Intentional; Flow can't handle the bind on L20\n\t\n\t\n\t/*\n\t * A simple HOC that provides facility for listening to container resizes.\n\t */\n\t/*:: type State = {\n\t mounted: boolean,\n\t width: number\n\t};*/\n\t\n\texports.default = function (ComposedComponent /*: ReactClass*/) /*: ReactClass*/ {\n\t var _class, _temp2;\n\t\n\t return _temp2 = _class = function (_React$Component) {\n\t _inherits(_class, _React$Component);\n\t\n\t function _class() {\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, _class);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n\t mounted: false,\n\t width: 1280\n\t }, _this.onWindowResize = function (_event /*: Event*/, cb /*: ?Function*/) {\n\t var node = _reactDom2.default.findDOMNode(_this);\n\t _this.setState({ width: node.offsetWidth }, cb);\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _class.prototype.componentDidMount = function componentDidMount() {\n\t this.setState({ mounted: true });\n\t\n\t window.addEventListener('resize', this.onWindowResize);\n\t // Call to properly set the breakpoint and resize the elements.\n\t // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n\t // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n\t this.onWindowResize();\n\t };\n\t\n\t _class.prototype.componentWillUnmount = function componentWillUnmount() {\n\t window.removeEventListener('resize', this.onWindowResize);\n\t };\n\t\n\t _class.prototype.render = function render() {\n\t if (this.props.measureBeforeMount && !this.state.mounted) return _react2.default.createElement('div', _extends({}, this.props, this.state));\n\t return _react2.default.createElement(ComposedComponent, _extends({}, this.props, this.state));\n\t };\n\t\n\t return _class;\n\t }(_react2.default.Component), _class.defaultProps = {\n\t measureBeforeMount: false\n\t }, _class.propTypes = {\n\t // If true, will not render children until mounted. Useful for getting the exact width before\n\t // rendering, to prevent any unsightly resizing.\n\t measureBeforeMount: _react2.default.PropTypes.bool\n\t }, _temp2;\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * lodash 3.0.1 (Custom Build) \n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright 2012-2016 The Dojo Foundation \n\t * Based on Underscore.js 1.8.3 \n\t * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t * Available under MIT license \n\t */\n\t\n\t/** Used to determine if values are of the language type `Object`. */\n\tvar objectTypes = {\n\t 'function': true,\n\t 'object': true\n\t};\n\t\n\t/** Detect free variable `exports`. */\n\tvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n\t ? exports\n\t : undefined;\n\t\n\t/** Detect free variable `module`. */\n\tvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n\t ? module\n\t : undefined;\n\t\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\t\n\t/** Detect free variable `self`. */\n\tvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\t\n\t/** Detect free variable `window`. */\n\tvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\t\n\t/** Detect `this` as the global object. */\n\tvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\t\n\t/**\n\t * Used as a reference to the global object.\n\t *\n\t * The `this` value is used if it's the global object to avoid Greasemonkey's\n\t * restricted `window` object, otherwise the `window` object is used.\n\t */\n\tvar root = freeGlobal ||\n\t ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n\t freeSelf || thisGlobal || Function('return this')();\n\t\n\t/**\n\t * Checks if `value` is a global object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n\t */\n\tfunction checkGlobal(value) {\n\t return (value && value.Object === Object) ? value : null;\n\t}\n\t\n\tmodule.exports = root;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)(module), (function() { return this; }())))\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * lodash 4.1.3 (Custom Build) \n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors \n\t * Released under MIT license \n\t * Based on Underscore.js 1.8.3 \n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\t\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\t\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\t\n\t/** `Object#toString` result references. */\n\tvar funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]';\n\t\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\t\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\t\n\t/** Used to determine if values are of the language type `Object`. */\n\tvar objectTypes = {\n\t 'function': true,\n\t 'object': true\n\t};\n\t\n\t/** Detect free variable `exports`. */\n\tvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n\t ? exports\n\t : undefined;\n\t\n\t/** Detect free variable `module`. */\n\tvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n\t ? module\n\t : undefined;\n\t\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\t\n\t/** Detect free variable `self`. */\n\tvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\t\n\t/** Detect free variable `window`. */\n\tvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\t\n\t/** Detect `this` as the global object. */\n\tvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\t\n\t/**\n\t * Used as a reference to the global object.\n\t *\n\t * The `this` value is used if it's the global object to avoid Greasemonkey's\n\t * restricted `window` object, otherwise the `window` object is used.\n\t */\n\tvar root = freeGlobal ||\n\t ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n\t freeSelf || thisGlobal || Function('return this')();\n\t\n\t/**\n\t * Checks if `value` is a global object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n\t */\n\tfunction checkGlobal(value) {\n\t return (value && value.Object === Object) ? value : null;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\t\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t objectProto = Object.prototype;\n\t\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = Function.prototype.toString;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\t\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\t\n\t/** Built-in value references. */\n\tvar splice = arrayProto.splice;\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar Map = getNative(root, 'Map'),\n\t nativeCreate = getNative(Object, 'create');\n\t\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @returns {Object} Returns the new hash object.\n\t */\n\tfunction Hash() {}\n\t\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(hash, key) {\n\t return hashHas(hash, key) && delete hash[key];\n\t}\n\t\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to query.\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(hash, key) {\n\t if (nativeCreate) {\n\t var result = hash[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n\t}\n\t\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(hash, key) {\n\t return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n\t}\n\t\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t */\n\tfunction hashSet(hash, key, value) {\n\t hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t}\n\t\n\t// Avoid inheriting from `Object.prototype` when possible.\n\tHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\t\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction MapCache(values) {\n\t var index = -1,\n\t length = values ? values.length : 0;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = values[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': Map ? new Map : [],\n\t 'string': new Hash\n\t };\n\t}\n\t\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapDelete(key) {\n\t var data = this.__data__;\n\t if (isKeyable(key)) {\n\t return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n\t }\n\t return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n\t}\n\t\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapGet(key) {\n\t var data = this.__data__;\n\t if (isKeyable(key)) {\n\t return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n\t }\n\t return Map ? data.map.get(key) : assocGet(data.map, key);\n\t}\n\t\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapHas(key) {\n\t var data = this.__data__;\n\t if (isKeyable(key)) {\n\t return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n\t }\n\t return Map ? data.map.has(key) : assocHas(data.map, key);\n\t}\n\t\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapSet(key, value) {\n\t var data = this.__data__;\n\t if (isKeyable(key)) {\n\t hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n\t } else if (Map) {\n\t data.map.set(key, value);\n\t } else {\n\t assocSet(data.map, key, value);\n\t }\n\t return this;\n\t}\n\t\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapClear;\n\tMapCache.prototype['delete'] = mapDelete;\n\tMapCache.prototype.get = mapGet;\n\tMapCache.prototype.has = mapHas;\n\tMapCache.prototype.set = mapSet;\n\t\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction Stack(values) {\n\t var index = -1,\n\t length = values ? values.length : 0;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = values[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = { 'array': [], 'map': null };\n\t}\n\t\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t var data = this.__data__,\n\t array = data.array;\n\t\n\t return array ? assocDelete(array, key) : data.map['delete'](key);\n\t}\n\t\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t var data = this.__data__,\n\t array = data.array;\n\t\n\t return array ? assocGet(array, key) : data.map.get(key);\n\t}\n\t\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t var data = this.__data__,\n\t array = data.array;\n\t\n\t return array ? assocHas(array, key) : data.map.has(key);\n\t}\n\t\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var data = this.__data__,\n\t array = data.array;\n\t\n\t if (array) {\n\t if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n\t assocSet(array, key, value);\n\t } else {\n\t data.array = null;\n\t data.map = new MapCache(array);\n\t }\n\t }\n\t var map = data.map;\n\t if (map) {\n\t map.set(key, value);\n\t }\n\t return this;\n\t}\n\t\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\t\n\t/**\n\t * Removes `key` and its value from the associative array.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction assocDelete(array, key) {\n\t var index = assocIndexOf(array, key);\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = array.length - 1;\n\t if (index == lastIndex) {\n\t array.pop();\n\t } else {\n\t splice.call(array, index, 1);\n\t }\n\t return true;\n\t}\n\t\n\t/**\n\t * Gets the associative array value for `key`.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction assocGet(array, key) {\n\t var index = assocIndexOf(array, key);\n\t return index < 0 ? undefined : array[index][1];\n\t}\n\t\n\t/**\n\t * Checks if an associative array value for `key` exists.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction assocHas(array, key) {\n\t return assocIndexOf(array, key) > -1;\n\t}\n\t\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\t\n\t/**\n\t * Sets the associative array `key` to `value`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t */\n\tfunction assocSet(array, key, value) {\n\t var index = assocIndexOf(array, key);\n\t if (index < 0) {\n\t array.push([key, value]);\n\t } else {\n\t array[index][1] = value;\n\t }\n\t}\n\t\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = object[key];\n\t return isNative(value) ? value : undefined;\n\t}\n\t\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return type == 'number' || type == 'boolean' ||\n\t (type == 'string' && value != '__proto__') || value == null;\n\t}\n\t\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\t\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'fred' };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\t\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\t/**\n\t * Checks if `value` is a native function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isNative(Array.prototype.push);\n\t * // => true\n\t *\n\t * _.isNative(_);\n\t * // => false\n\t */\n\tfunction isNative(value) {\n\t if (!isObject(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\t\n\tmodule.exports = Stack;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)(module), (function() { return this; }())))\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\t/**\n\t * lodash 4.0.6 (Custom Build) \n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors \n\t * Released under MIT license \n\t * Based on Underscore.js 1.8.3 \n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t stringTag = '[object String]';\n\t\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\t\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\t\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return value > -1 && value % 1 == 0 && value < length;\n\t}\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\t\n\t/** Built-in value references. */\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetPrototype = Object.getPrototypeOf,\n\t nativeKeys = Object.keys;\n\t\n\t/**\n\t * The base implementation of `_.has` without support for deep paths.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` exists, else `false`.\n\t */\n\tfunction baseHas(object, key) {\n\t // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n\t // that are composed entirely of index properties, return `false` for\n\t // `hasOwnProperty` checks of them.\n\t return hasOwnProperty.call(object, key) ||\n\t (typeof object == 'object' && key in object && getPrototype(object) === null);\n\t}\n\t\n\t/**\n\t * The base implementation of `_.keys` which doesn't skip the constructor\n\t * property of prototypes or treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t return nativeKeys(Object(object));\n\t}\n\t\n\t/**\n\t * The base implementation of `_.property` without support for deep paths.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseProperty(key) {\n\t return function(object) {\n\t return object == null ? undefined : object[key];\n\t };\n\t}\n\t\n\t/**\n\t * Gets the \"length\" property value of `object`.\n\t *\n\t * **Note:** This function is used to avoid a\n\t * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n\t * Safari on at least iOS 8.1-8.3 ARM64.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {*} Returns the \"length\" value.\n\t */\n\tvar getLength = baseProperty('length');\n\t\n\t/**\n\t * Gets the `[[Prototype]]` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {null|Object} Returns the `[[Prototype]]`.\n\t */\n\tfunction getPrototype(value) {\n\t return nativeGetPrototype(Object(value));\n\t}\n\t\n\t/**\n\t * Creates an array of index keys for `object` values of arrays,\n\t * `arguments` objects, and strings, otherwise `null` is returned.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array|null} Returns index keys, else `null`.\n\t */\n\tfunction indexKeys(object) {\n\t var length = object ? object.length : undefined;\n\t if (isLength(length) &&\n\t (isArray(object) || isString(object) || isArguments(object))) {\n\t return baseTimes(length, String);\n\t }\n\t return null;\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\t\n\t return value === proto;\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @type {Function}\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(getLength(value)) && !isFunction(value);\n\t}\n\t\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\t\n\t/**\n\t * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n\t * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `String` primitive or object.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isString('abc');\n\t * // => true\n\t *\n\t * _.isString(1);\n\t * // => false\n\t */\n\tfunction isString(value) {\n\t return typeof value == 'string' ||\n\t (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n\t}\n\t\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t var isProto = isPrototype(object);\n\t if (!(isProto || isArrayLike(object))) {\n\t return baseKeys(object);\n\t }\n\t var indexes = indexKeys(object),\n\t skipIndexes = !!indexes,\n\t result = indexes || [],\n\t length = result.length;\n\t\n\t for (var key in object) {\n\t if (baseHas(object, key) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n\t !(isProto && key == 'constructor')) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = keys;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _Resizable = __webpack_require__(7);\n\t\n\tvar _Resizable2 = _interopRequireDefault(_Resizable);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t/*:: type State = {width: number, height: number, aspectRatio: number};*/\n\t/*:: type Size = {width: number, height: number};*/\n\t\n\t\n\t// An example use of Resizable.\n\t/*:: type ResizeData = {element: Element, size: Size};*/\n\t\n\tvar ResizableBox = function (_React$Component) {\n\t _inherits(ResizableBox, _React$Component);\n\t\n\t function ResizableBox() {\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, ResizableBox);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n\t width: _this.props.width,\n\t height: _this.props.height\n\t }, _this.onResize = function (event, _ref) {\n\t var element = _ref.element;\n\t var size = _ref.size;\n\t var width = size.width;\n\t var height = size.height;\n\t\n\t\n\t _this.setState(size, function () {\n\t _this.props.onResize && _this.props.onResize(event, { element: element, size: size });\n\t });\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t ResizableBox.prototype.render = function render() {\n\t // Basic wrapper around a Resizable instance.\n\t // If you use Resizable directly, you are responsible for updating the child component\n\t // with a new width and height.\n\t var _props = this.props;\n\t var handleSize = _props.handleSize;\n\t var onResizeStart = _props.onResizeStart;\n\t var onResizeStop = _props.onResizeStop;\n\t var draggableOpts = _props.draggableOpts;\n\t var minConstraints = _props.minConstraints;\n\t var maxConstraints = _props.maxConstraints;\n\t var lockAspectRatio = _props.lockAspectRatio;\n\t var width = _props.width;\n\t var height = _props.height;\n\t\n\t var props = _objectWithoutProperties(_props, ['handleSize', 'onResizeStart', 'onResizeStop', 'draggableOpts', 'minConstraints', 'maxConstraints', 'lockAspectRatio', 'width', 'height']);\n\t\n\t return _react2.default.createElement(\n\t _Resizable2.default,\n\t {\n\t handleSize: handleSize,\n\t width: this.state.width,\n\t height: this.state.height,\n\t onResizeStart: onResizeStart,\n\t onResize: this.onResize,\n\t onResizeStop: onResizeStop,\n\t draggableOpts: draggableOpts,\n\t minConstraints: minConstraints,\n\t maxConstraints: maxConstraints,\n\t lockAspectRatio: lockAspectRatio\n\t },\n\t _react2.default.createElement('div', _extends({ style: { width: this.state.width + 'px', height: this.state.height + 'px' } }, props))\n\t );\n\t };\n\t\n\t return ResizableBox;\n\t}(_react2.default.Component);\n\t\n\tResizableBox.propTypes = {\n\t height: _react.PropTypes.number,\n\t width: _react.PropTypes.number\n\t};\n\tResizableBox.defaultProps = {\n\t handleSize: [20, 20]\n\t};\n\texports.default = ResizableBox;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// React.addons.cloneWithProps look-alike that merges style & className.\n\tmodule.exports = function cloneElement(element /*: React.Element*/, props /*: Object*/) /*: React.Element*/ {\n\t if (props.style && element.props.style) {\n\t props.style = _extends({}, element.props.style, props.style);\n\t }\n\t if (props.className && element.props.className) {\n\t props.className = element.props.className + ' ' + props.className;\n\t }\n\t return _react2.default.cloneElement(element, props);\n\t};\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tmodule.exports = function() {\n\t throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n\t};\n\t\n\tmodule.exports.Resizable = __webpack_require__(7).default;\n\tmodule.exports.ResizableBox = __webpack_require__(16).default;\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** react-grid-layout.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 8b721d03b810bad43a05\n **/","module.exports = require('./lib/ReactGridLayout').default;\nmodule.exports.utils = require('./lib/utils');\nmodule.exports.Responsive = require('./lib/ResponsiveReactGridLayout').default;\nmodule.exports.Responsive.utils = require('./lib/responsiveUtils');\nmodule.exports.WidthProvider = require('./lib/components/WidthProvider').default;\n\n\n\n/** WEBPACK FOOTER **\n ** ./index-dev.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n ** module id = 1\n ** module chunks = 0\n **/","// @flow\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\nexport type LayoutItem = LayoutItemRequired &\n {minW?: number, minH?: number, maxW?: number, maxH?: number,\n moved?: boolean, static?: boolean,\n isDraggable?: ?boolean, isResizable?: ?boolean};\nexport type Layout = Array;\nexport type Position = {left: number, top: number, width: number, height: number};\nexport type DragCallbackData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number\n};\nexport type DragEvent = {e: Event} & DragCallbackData;\nexport type Size = {width: number, height: number};\nexport type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\nimport type React from 'react';\n\nconst isProduction = process.env.NODE_ENV === 'production';\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0, bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\n minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Given two layoutitems, check if they collide.\n *\n * @return {Boolean} True if colliding.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1 === l2) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(layout: Layout, verticalCompact: boolean): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItemsByRowCol(layout);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = sorted[i];\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, verticalCompact);\n\n // Add to comparison array. We only collide with items before this one.\n // Statics are already in this array.\n compareWith.push(l);\n }\n\n // Add to output array to make sure they still come out in the right order.\n out[layout.indexOf(l)] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\n if (verticalCompact) {\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while((collides = getFirstCollision(compareWith, l))) {\n l.y = collides.y + collides.h;\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while(getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array {\n return layout.filter((l) => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter((l) => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n * @param {Boolean} [isUserAction] If true, designates that the item we're moving is\n * being dragged/resized by th euser.\n */\nexport function moveElement(layout: Layout, l: LayoutItem, x: ?number, y: ?number, isUserAction: ?boolean): Layout {\n if (l.static) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n const movingUp = y && l.y > y;\n // This is quite a bit faster than extending the object\n if (typeof x === 'number') l.x = x;\n if (typeof y === 'number') l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItemsByRowCol(layout);\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\n if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\n } else {\n layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\n }\n }\n\n return layout;\n}\n\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} collidesWith Layout item we're colliding with.\n * @param {LayoutItem} itemToMove Layout item we're moving.\n * @param {Boolean} [isUserAction] If true, designates that the item we're moving is being dragged/resized\n * by the user.\n */\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\n itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\n\n // If there is enough space above the collision to put this element, move it there.\n // We only do this on the main collision as this can get funky in cascades and cause\n // unwanted swapping behavior.\n if (isUserAction) {\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: itemToMove.x,\n y: itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: '-1'\n };\n fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n if (!getFirstCollision(layout, fakeItem)) {\n return moveElement(layout, itemToMove, undefined, fakeItem.y);\n }\n }\n\n // Previously this was optimized to move below the collision directly, but this can cause problems\n // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\n return moveElement(layout, itemToMove, undefined, itemToMove.y + 1);\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + '%';\n}\n\nexport function setTransform({top, left, width, height}: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute'\n };\n}\n\nexport function setTopLeft({top, left, width, height}: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute'\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout vertically.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array|React.Element,\n cols: number, verticalCompact: boolean): Layout {\n // ensure 'children' is always an array\n if (!Array.isArray(children)) {\n children = [children];\n }\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n for (let i = 0, len = children.length; i < len; i++) {\n let newItem;\n const child = children[i];\n\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, child.key || \"1\" /* FIXME satisfies Flow */);\n if (exists) {\n newItem = exists;\n } else {\n const g = child.props._grid;\n\n // Hey, this item has a _grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], 'ReactGridLayout.children');\n }\n // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n if (verticalCompact) {\n newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\n } else {\n newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\n }\n }\n // Nothing provided: ensure this is added to the bottom\n else {\n newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\n }\n }\n layout[i] = newItem;\n }\n\n // Correct the layout.\n layout = correctBounds(layout, {cols: cols});\n layout = compact(layout, verticalCompact);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(layout: Layout, contextName: string): void {\n contextName = contextName || \"Layout\";\n const subProps = ['x', 'y', 'w', 'h'];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== 'number') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\n }\n }\n if (item.i && typeof item.i !== 'string') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].i must be a string!');\n }\n if (item.static !== undefined && typeof item.static !== 'boolean') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach((key) => el[key] = el[key].bind(el));\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/utils.js\n **/","// @flow\nimport React, {PropTypes} from 'react';\nimport isEqual from 'lodash.isequal';\nimport {autoBindHandlers, bottom, cloneLayoutItem, compact, getLayoutItem, moveElement,\n synchronizeLayoutWithChildren, validateLayout} from './utils';\nimport GridItem from './GridItem';\nconst noop = function() {};\n\n// Types\nimport type {ResizeEvent, DragEvent, Layout, LayoutItem} from './utils';\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldResizeItem: ?LayoutItem\n};\n// End Types\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n static propTypes = {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // If true, the layout will compact vertically\n verticalCompact: PropTypes.bool,\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function (props) {\n var layout = props.layout;\n // I hope you're setting the _grid property on the grid items\n if (layout === undefined) return;\n validateLayout(layout, 'layout');\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n\n //\n // Other validations\n //\n\n // Children must not have duplicate keys.\n children: function (props, propName, _componentName) {\n PropTypes.node.apply(this, arguments);\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function (child) {\n if (keys[child.key]) {\n throw new Error(\"Duplicate child key found! This will cause problems in ReactGridLayout.\");\n }\n keys[child.key] = true;\n });\n }\n };\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: '',\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n verticalCompact: true,\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(this.props.layout, this.props.children,\n this.props.cols, this.props.verticalCompact),\n mounted: false,\n oldDragItem: null,\n oldResizeItem: null\n };\n\n constructor(props: typeof ReactGridLayout.prototype.props, context: any): void {\n super(props, context);\n autoBindHandlers(this, ['onDragStart', 'onDrag', 'onDragStop', 'onResizeStart', 'onResize', 'onResizeStop']);\n }\n\n componentDidMount() {\n this.setState({mounted: true});\n // Call back with layout on mount. This should be done after correcting the layout width\n // to ensure we don't rerender with the wrong width.\n this.props.onLayoutChange(this.state.layout);\n }\n\n componentWillReceiveProps(nextProps: typeof ReactGridLayout.prototype.props) {\n let newLayoutBase;\n // Allow parent to set layout directly.\n if (!isEqual(nextProps.layout, this.props.layout)) {\n newLayoutBase = nextProps.layout;\n }\n\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n else if (nextProps.children.length !== this.props.children.length) {\n newLayoutBase = this.state.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(newLayoutBase, nextProps.children,\n nextProps.cols, nextProps.verticalCompact);\n this.setState({layout: newLayout});\n this.props.onLayoutChange(newLayout);\n }\n }\n\n /**\n * Calculates a pixel value for the container.\n * @return {String} Container height in pixels.\n */\n containerHeight() {\n if (!this.props.autoSize) return;\n return bottom(this.state.layout) * (this.props.rowHeight + this.props.margin[1]) + this.props.margin[1] + 'px';\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i:string, x:number, y:number, {e, node}: DragEvent) {\n const {layout} = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({oldDragItem: cloneLayoutItem(l)});\n\n this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i:string, x:number, y:number, {e, node}: DragEvent) {\n const {oldDragItem} = this.state;\n let {layout} = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w, h: l.h, x: l.x, y: l.y, placeholder: true, i: i\n };\n\n // Move the element to the dragged location.\n layout = moveElement(layout, l, x, y, true /* isUserAction */);\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, this.props.verticalCompact),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i:string, x:number, y:number, {e, node}: DragEvent) {\n const {oldDragItem} = this.state;\n let {layout} = this.state;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n layout = moveElement(layout, l, x, y, true /* isUserAction */);\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n this.setState({\n activeDrag: null,\n layout: compact(layout, this.props.verticalCompact),\n oldDragItem: null\n });\n\n this.props.onLayoutChange(this.state.layout);\n }\n\n onResizeStart(i:string, w:number, h:number, {e, node}: ResizeEvent) {\n const {layout} = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({oldResizeItem: cloneLayoutItem(l)});\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i:string, w:number, h:number, {e, node}: ResizeEvent) {\n const {layout, oldResizeItem} = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Set new width and height.\n l.w = w;\n l.h = h;\n\n // Create placeholder element (display only)\n var placeholder = {\n w: w, h: h, x: l.x, y: l.y, static: true, i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({layout: compact(layout, this.props.verticalCompact), activeDrag: placeholder});\n }\n\n onResizeStop(i:string, w:number, h:number, {e, node}: ResizeEvent) {\n const {layout, oldResizeItem} = this.state;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n this.setState({\n activeDrag: null,\n layout: compact(layout, this.props.verticalCompact),\n oldResizeItem: null\n });\n\n this.props.onLayoutChange(this.state.layout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?React.Element {\n const {activeDrag} = this.state;\n if (!activeDrag) return null;\n const {width, cols, margin, rowHeight, maxRows, useCSSTransforms} = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
\n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(child: React.Element): ?React.Element {\n if (!child.key) return;\n const l = getLayoutItem(this.state.layout, child.key);\n if (!l) return null;\n const {width, cols, margin, rowHeight, maxRows, isDraggable, isResizable,\n useCSSTransforms, draggableCancel, draggableHandle} = this.props;\n const {mounted} = this.state;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n const draggable = Boolean(!l.static && isDraggable && (l.isDraggable || l.isDraggable == null));\n const resizable = Boolean(!l.static && isResizable && (l.isResizable || l.isResizable == null));\n\n return (\n \n {child}\n \n );\n }\n\n render(): React.Element {\n const {className, style} = this.props;\n\n const mergedClassName = `react-grid-layout ${className}`;\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n
\n {React.Children.map(this.props.children, (child) => this.processGridItem(child))}\n {this.placeholder()}\n
\n );\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/ReactGridLayout.jsx\n **/","// @flow\n\nimport {cloneLayout, compact, correctBounds} from './utils';\n\nimport type {Layout} from './utils';\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\ntype Breakpoint = string;\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\n if (!cols[breakpoint]) {\n throw new Error(\"ResponsiveReactGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(layouts: ResponsiveLayout, breakpoints: Breakpoints,\n breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n cols: number, verticalCompact: boolean): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/responsiveUtils.js\n **/","/**\n * lodash 4.1.4 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar Stack = require('lodash._stack'),\n keys = require('lodash.keys'),\n root = require('lodash._root');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to an array.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototype(object) === null);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var index = -1,\n isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isUnordered) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack);\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and\n // booleans to `1` or `0` treating invalid dates coerced to `NaN` as\n // not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n stack.set(object, other);\n\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are **not** supported.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent,\n * else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nmodule.exports = isEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.isequal/index.js\n ** module id = 5\n ** module chunks = 0\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDraggable\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactDraggable\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(1).default;\n\tmodule.exports.DraggableCore = __webpack_require__(9).default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(3);\n\t\n\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\n\tvar _classnames = __webpack_require__(4);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _domFns = __webpack_require__(5);\n\t\n\tvar _positionFns = __webpack_require__(8);\n\t\n\tvar _shims = __webpack_require__(6);\n\t\n\tvar _DraggableCore = __webpack_require__(9);\n\t\n\tvar _DraggableCore2 = _interopRequireDefault(_DraggableCore);\n\t\n\tvar _log = __webpack_require__(10);\n\t\n\tvar _log2 = _interopRequireDefault(_log);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t// $FlowIgnore\n\t\n\t\n\t/*:: import type {DraggableEventHandler} from './utils/types';*/\n\t/*:: type DraggableState = {\n\t dragging: boolean,\n\t dragged: boolean,\n\t x: number, y: number,\n\t slackX: number, slackY: number,\n\t isElementSVG: boolean\n\t};*/\n\t\n\t\n\t//\n\t// Define \n\t//\n\t\n\t/*:: type ConstructorProps = {\n\t position: { x: number, y: number },\n\t defaultPosition: { x: number, y: number }\n\t}*/\n\t\n\tvar Draggable = function (_React$Component) {\n\t _inherits(Draggable, _React$Component);\n\t\n\t function Draggable(props /*: ConstructorProps*/) {\n\t _classCallCheck(this, Draggable);\n\t\n\t var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Draggable).call(this, props));\n\t\n\t _this.onDragStart = function (e, coreData) {\n\t (0, _log2.default)('Draggable: onDragStart: %j', coreData);\n\t\n\t // Short-circuit if user's callback killed it.\n\t var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_this, coreData));\n\t // Kills start event on core as well, so move handlers are never bound.\n\t if (shouldStart === false) return false;\n\t\n\t _this.setState({ dragging: true, dragged: true });\n\t };\n\t\n\t _this.onDrag = function (e, coreData) {\n\t if (!_this.state.dragging) return false;\n\t (0, _log2.default)('Draggable: onDrag: %j', coreData);\n\t\n\t var uiData = (0, _positionFns.createDraggableData)(_this, coreData);\n\t\n\t var newState /*: $Shape*/ = {\n\t x: uiData.x,\n\t y: uiData.y\n\t };\n\t\n\t // Keep within bounds.\n\t if (_this.props.bounds) {\n\t // Save original x and y.\n\t var _x = newState.x;\n\t var _y = newState.y;\n\t\n\t // Add slack to the values used to calculate bound position. This will ensure that if\n\t // we start removing slack, the element won't react to it right away until it's been\n\t // completely removed.\n\t\n\t newState.x += _this.state.slackX;\n\t newState.y += _this.state.slackY;\n\t\n\t // Get bound position. This will ceil/floor the x and y within the boundaries.\n\t // $FlowBug\n\t\n\t\n\t // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\t\n\t var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y);\n\t\n\t var _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2);\n\t\n\t newState.x = _getBoundPosition2[0];\n\t newState.y = _getBoundPosition2[1];\n\t newState.slackX = _this.state.slackX + (_x - newState.x);\n\t newState.slackY = _this.state.slackY + (_y - newState.y);\n\t\n\t // Update the event we fire to reflect what really happened after bounds took effect.\n\t uiData.x = _x;\n\t uiData.y = _y;\n\t uiData.deltaX = newState.x - _this.state.x;\n\t uiData.deltaY = newState.y - _this.state.y;\n\t }\n\t\n\t // Short-circuit if user's callback killed it.\n\t var shouldUpdate = _this.props.onDrag(e, uiData);\n\t if (shouldUpdate === false) return false;\n\t\n\t _this.setState(newState);\n\t };\n\t\n\t _this.onDragStop = function (e, coreData) {\n\t if (!_this.state.dragging) return false;\n\t\n\t // Short-circuit if user's callback killed it.\n\t var shouldStop = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_this, coreData));\n\t if (shouldStop === false) return false;\n\t\n\t (0, _log2.default)('Draggable: onDragStop: %j', coreData);\n\t\n\t var newState /*: $Shape*/ = {\n\t dragging: false,\n\t slackX: 0,\n\t slackY: 0\n\t };\n\t\n\t // If this is a controlled component, the result of this operation will be to\n\t // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\t var controlled = Boolean(_this.props.position);\n\t if (controlled) {\n\t var _this$props$position = _this.props.position;\n\t var _x2 = _this$props$position.x;\n\t var _y2 = _this$props$position.y;\n\t\n\t newState.x = _x2;\n\t newState.y = _y2;\n\t }\n\t\n\t _this.setState(newState);\n\t };\n\t\n\t _this.state = {\n\t // Whether or not we are currently dragging.\n\t dragging: false,\n\t\n\t // Whether or not we have been dragged before.\n\t dragged: false,\n\t\n\t // Current transform x and y.\n\t x: props.position ? props.position.x : props.defaultPosition.x,\n\t y: props.position ? props.position.y : props.defaultPosition.y,\n\t\n\t // Used for compensating for out-of-bounds drags\n\t slackX: 0, slackY: 0,\n\t\n\t // Can only determine if SVG after mounting\n\t isElementSVG: false\n\t };\n\t return _this;\n\t }\n\t\n\t _createClass(Draggable, [{\n\t key: 'componentWillMount',\n\t value: function componentWillMount() {\n\t if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n\t // eslint-disable-next-line\n\t console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n\t }\n\t }\n\t }, {\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t // Check to see if the element passed is an instanceof SVGElement\n\t if (typeof global.SVGElement !== 'undefined' && _reactDom2.default.findDOMNode(this) instanceof global.SVGElement) {\n\t this.setState({ isElementSVG: true });\n\t }\n\t }\n\t }, {\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps /*: Object*/) {\n\t // Set x/y if position has changed\n\t if (nextProps.position && (!this.props.position || nextProps.position.x !== this.props.position.x || nextProps.position.y !== this.props.position.y)) {\n\t this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n\t }\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t this.setState({ dragging: false }); // prevents invariant if unmounted while dragging\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var style = {},\n\t svgTransform = null;\n\t\n\t // If this is controlled, we don't want to move it - unless it's dragging.\n\t var controlled = Boolean(this.props.position);\n\t var draggable = !controlled || this.state.dragging;\n\t\n\t var position = this.props.position || this.props.defaultPosition;\n\t var transformOpts = {\n\t // Set left if horizontal drag is enabled\n\t x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : position.x,\n\t\n\t // Set top if vertical drag is enabled\n\t y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : position.y\n\t };\n\t\n\t // If this element was SVG, we use the `transform` attribute.\n\t if (this.state.isElementSVG) {\n\t svgTransform = (0, _domFns.createSVGTransform)(transformOpts);\n\t } else {\n\t // Add a CSS transform to move the element around. This allows us to move the element around\n\t // without worrying about whether or not it is relatively or absolutely positioned.\n\t // If the item you are dragging already has a transform set, wrap it in a so \n\t // has a clean slate.\n\t style = (0, _domFns.createCSSTransform)(transformOpts);\n\t }\n\t\n\t // Mark with class while dragging\n\t var className = (0, _classnames2.default)(this.props.children.props.className || '', 'react-draggable', {\n\t 'react-draggable-dragging': this.state.dragging,\n\t 'react-draggable-dragged': this.state.dragged\n\t });\n\t\n\t // Reuse the child provided\n\t // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\t return _react2.default.createElement(\n\t _DraggableCore2.default,\n\t _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }),\n\t _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {\n\t className: className,\n\t style: _extends({}, this.props.children.props.style, style),\n\t transform: svgTransform\n\t })\n\t );\n\t }\n\t }]);\n\t\n\t return Draggable;\n\t}(_react2.default.Component);\n\t\n\tDraggable.displayName = 'Draggable';\n\tDraggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, {\n\t\n\t /**\n\t * `axis` determines which axis the draggable can move.\n\t *\n\t * Note that all callbacks will still return data as normal. This only\n\t * controls flushing to the DOM.\n\t *\n\t * 'both' allows movement horizontally and vertically.\n\t * 'x' limits movement to horizontal axis.\n\t * 'y' limits movement to vertical axis.\n\t * 'none' limits all movement.\n\t *\n\t * Defaults to 'both'.\n\t */\n\t axis: _react.PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\t\n\t /**\n\t * `bounds` determines the range of movement available to the element.\n\t * Available values are:\n\t *\n\t * 'parent' restricts movement within the Draggable's parent node.\n\t *\n\t * Alternatively, pass an object with the following properties, all of which are optional:\n\t *\n\t * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n\t *\n\t * All values are in px.\n\t *\n\t * Example:\n\t *\n\t * ```jsx\n\t * let App = React.createClass({\n\t * render: function () {\n\t * return (\n\t * \n\t *
Content
\n\t *
\n\t * );\n\t * }\n\t * });\n\t * ```\n\t */\n\t bounds: _react.PropTypes.oneOfType([_react.PropTypes.shape({\n\t left: _react.PropTypes.number,\n\t right: _react.PropTypes.number,\n\t top: _react.PropTypes.number,\n\t bottom: _react.PropTypes.number\n\t }), _react.PropTypes.string, _react.PropTypes.oneOf([false])]),\n\t\n\t /**\n\t * `defaultPosition` specifies the x and y that the dragged item should start at\n\t *\n\t * Example:\n\t *\n\t * ```jsx\n\t * let App = React.createClass({\n\t * render: function () {\n\t * return (\n\t * \n\t *
I start with transformX: 25px and transformY: 25px;
\n\t *
\n\t * );\n\t * }\n\t * });\n\t * ```\n\t */\n\t defaultPosition: _react.PropTypes.shape({\n\t x: _react.PropTypes.number,\n\t y: _react.PropTypes.number\n\t }),\n\t\n\t /**\n\t * `position`, if present, defines the current position of the element.\n\t *\n\t * This is similar to how form elements in React work - if no `position` is supplied, the component\n\t * is uncontrolled.\n\t *\n\t * Example:\n\t *\n\t * ```jsx\n\t * let App = React.createClass({\n\t * render: function () {\n\t * return (\n\t * \n\t *
I start with transformX: 25px and transformY: 25px;
\n\t *
\n\t * );\n\t * }\n\t * });\n\t * ```\n\t */\n\t position: _react.PropTypes.shape({\n\t x: _react.PropTypes.number,\n\t y: _react.PropTypes.number\n\t }),\n\t\n\t /**\n\t * These properties should be defined on the child, not here.\n\t */\n\t className: _shims.dontSetMe,\n\t style: _shims.dontSetMe,\n\t transform: _shims.dontSetMe\n\t});\n\tDraggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, {\n\t axis: 'both',\n\t bounds: false,\n\t defaultPosition: { x: 0, y: 0 },\n\t position: null\n\t});\n\texports.default = Draggable;\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n\t Copyright (c) 2016 Jed Watson.\n\t Licensed under the MIT License (MIT), see\n\t http://jedwatson.github.io/classnames\n\t*/\n\t/* global define */\n\t\n\t(function () {\n\t\t'use strict';\n\t\n\t\tvar hasOwn = {}.hasOwnProperty;\n\t\n\t\tfunction classNames () {\n\t\t\tvar classes = [];\n\t\n\t\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\t\tvar arg = arguments[i];\n\t\t\t\tif (!arg) continue;\n\t\n\t\t\t\tvar argType = typeof arg;\n\t\n\t\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\t\tclasses.push(arg);\n\t\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t\t} else if (argType === 'object') {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn classes.join(' ');\n\t\t}\n\t\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\tmodule.exports = classNames;\n\t\t} else if (true) {\n\t\t\t// register as 'classnames', consistent with npm package name\n\t\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\t\treturn classNames;\n\t\t\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else {\n\t\t\twindow.classNames = classNames;\n\t\t}\n\t}());\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports.matchesSelector = matchesSelector;\n\texports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\n\texports.addEvent = addEvent;\n\texports.removeEvent = removeEvent;\n\texports.outerHeight = outerHeight;\n\texports.outerWidth = outerWidth;\n\texports.innerHeight = innerHeight;\n\texports.innerWidth = innerWidth;\n\texports.offsetXYFromParentOf = offsetXYFromParentOf;\n\texports.createCSSTransform = createCSSTransform;\n\texports.createSVGTransform = createSVGTransform;\n\texports.getTouch = getTouch;\n\texports.getTouchIdentifier = getTouchIdentifier;\n\texports.addUserSelectStyles = addUserSelectStyles;\n\texports.removeUserSelectStyles = removeUserSelectStyles;\n\texports.styleHacks = styleHacks;\n\t\n\tvar _shims = __webpack_require__(6);\n\t\n\tvar _getPrefix = __webpack_require__(7);\n\t\n\tvar _getPrefix2 = _interopRequireDefault(_getPrefix);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\t/*:: import type {ControlPosition} from './types';*/\n\t\n\t\n\tvar matchesSelectorFunc = '';\n\tfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ {\n\t if (!matchesSelectorFunc) {\n\t matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n\t // $FlowIgnore: Doesn't think elements are indexable\n\t return (0, _shims.isFunction)(el[method]);\n\t });\n\t }\n\t\n\t // $FlowIgnore: Doesn't think elements are indexable\n\t return el[matchesSelectorFunc].call(el, selector);\n\t}\n\t\n\t// Works up the tree to the draggable itself attempting to match selector.\n\tfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/ {\n\t var node = el;\n\t do {\n\t if (matchesSelector(node, selector)) return true;\n\t if (node === baseNode) return false;\n\t node = node.parentNode;\n\t } while (node);\n\t\n\t return false;\n\t}\n\t\n\tfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n\t if (!el) {\n\t return;\n\t }\n\t if (el.attachEvent) {\n\t el.attachEvent('on' + event, handler);\n\t } else if (el.addEventListener) {\n\t el.addEventListener(event, handler, true);\n\t } else {\n\t // $FlowIgnore: Doesn't think elements are indexable\n\t el['on' + event] = handler;\n\t }\n\t}\n\t\n\tfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n\t if (!el) {\n\t return;\n\t }\n\t if (el.detachEvent) {\n\t el.detachEvent('on' + event, handler);\n\t } else if (el.removeEventListener) {\n\t el.removeEventListener(event, handler, true);\n\t } else {\n\t // $FlowIgnore: Doesn't think elements are indexable\n\t el['on' + event] = null;\n\t }\n\t}\n\t\n\tfunction outerHeight(node /*: HTMLElement*/) /*: number*/ {\n\t // This is deliberately excluding margin for our calculations, since we are using\n\t // offsetTop which is including margin. See getBoundPosition\n\t var height = node.clientHeight;\n\t var computedStyle = window.getComputedStyle(node);\n\t height += (0, _shims.int)(computedStyle.borderTopWidth);\n\t height += (0, _shims.int)(computedStyle.borderBottomWidth);\n\t return height;\n\t}\n\t\n\tfunction outerWidth(node /*: HTMLElement*/) /*: number*/ {\n\t // This is deliberately excluding margin for our calculations, since we are using\n\t // offsetLeft which is including margin. See getBoundPosition\n\t var width = node.clientWidth;\n\t var computedStyle = window.getComputedStyle(node);\n\t width += (0, _shims.int)(computedStyle.borderLeftWidth);\n\t width += (0, _shims.int)(computedStyle.borderRightWidth);\n\t return width;\n\t}\n\tfunction innerHeight(node /*: HTMLElement*/) /*: number*/ {\n\t var height = node.clientHeight;\n\t var computedStyle = window.getComputedStyle(node);\n\t height -= (0, _shims.int)(computedStyle.paddingTop);\n\t height -= (0, _shims.int)(computedStyle.paddingBottom);\n\t return height;\n\t}\n\t\n\tfunction innerWidth(node /*: HTMLElement*/) /*: number*/ {\n\t var width = node.clientWidth;\n\t var computedStyle = window.getComputedStyle(node);\n\t width -= (0, _shims.int)(computedStyle.paddingLeft);\n\t width -= (0, _shims.int)(computedStyle.paddingRight);\n\t return width;\n\t}\n\t\n\t// Get from offsetParent\n\tfunction offsetXYFromParentOf(evt /*: {clientX: number, clientY: number}*/, node /*: HTMLElement & {offsetParent: HTMLElement}*/) /*: ControlPosition*/ {\n\t var offsetParent = node.offsetParent || document.body;\n\t var offsetParentRect = node.offsetParent === document.body ? { left: 0, top: 0 } : offsetParent.getBoundingClientRect();\n\t\n\t var x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n\t var y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\t\n\t return { x: x, y: y };\n\t}\n\t\n\tfunction createCSSTransform(_ref) /*: Object*/ {\n\t var x = _ref.x;\n\t var y = _ref.y;\n\t\n\t // Replace unitless items with px\n\t return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix2.default), 'translate(' + x + 'px,' + y + 'px)');\n\t}\n\t\n\tfunction createSVGTransform(_ref3) /*: string*/ {\n\t var x = _ref3.x;\n\t var y = _ref3.y;\n\t\n\t return 'translate(' + x + ',' + y + ')';\n\t}\n\t\n\tfunction getTouch(e /*: MouseEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/ {\n\t return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n\t return identifier === t.identifier;\n\t }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n\t return identifier === t.identifier;\n\t });\n\t}\n\t\n\tfunction getTouchIdentifier(e /*: MouseEvent*/) /*: ?number*/ {\n\t if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n\t if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n\t}\n\t\n\t// User-select Hacks:\n\t//\n\t// Useful for preventing blue highlights all over everything when dragging.\n\tvar userSelectPrefix = (0, _getPrefix.getPrefix)('user-select');\n\tvar userSelect = (0, _getPrefix.browserPrefixToStyle)('user-select', userSelectPrefix);\n\tvar userSelectStyle = ';' + userSelect + ': none;';\n\t\n\tfunction addUserSelectStyles() {\n\t var style = document.body.getAttribute('style') || '';\n\t document.body.setAttribute('style', style + userSelectStyle);\n\t}\n\t\n\tfunction removeUserSelectStyles() {\n\t var style = document.body.getAttribute('style') || '';\n\t document.body.setAttribute('style', style.replace(userSelectStyle, ''));\n\t}\n\t\n\tfunction styleHacks() /*: Object*/ {\n\t var childStyle /*: Object*/ = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t // Workaround IE pointer events; see #51\n\t // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n\t return _extends({\n\t touchAction: 'none'\n\t }, childStyle);\n\t}\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.findInArray = findInArray;\n\texports.isFunction = isFunction;\n\texports.isNum = isNum;\n\texports.int = int;\n\texports.dontSetMe = dontSetMe;\n\t\n\t// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\n\tfunction findInArray(array /*: Array*/, callback /*: Function*/) /*: any*/ {\n\t for (var i = 0, length = array.length; i < length; i++) {\n\t if (callback.apply(callback, [array[i], i, array])) return array[i];\n\t }\n\t}\n\t\n\tfunction isFunction(func /*: any*/) /*: boolean*/ {\n\t return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n\t}\n\t\n\tfunction isNum(num /*: any*/) /*: boolean*/ {\n\t return typeof num === 'number' && !isNaN(num);\n\t}\n\t\n\tfunction int(a /*: string*/) /*: number*/ {\n\t return parseInt(a, 10);\n\t}\n\t\n\tfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) {\n\t if (props[propName]) {\n\t return new Error('Invalid prop ' + propName + ' passed to ' + componentName + ' - do not set this, set it on the child.');\n\t }\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getPrefix = getPrefix;\n\texports.browserPrefixToKey = browserPrefixToKey;\n\texports.browserPrefixToStyle = browserPrefixToStyle;\n\t\n\tvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\tfunction getPrefix() /*: string*/ {\n\t var prop /*: string*/ = arguments.length <= 0 || arguments[0] === undefined ? 'transform' : arguments[0];\n\t\n\t // Checking specifically for 'window.document' is for pseudo-browser server-side\n\t // environments that define 'window' as the global context.\n\t // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n\t if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\t\n\t var style = window.document.documentElement.style;\n\t\n\t if (prop in style) return '';\n\t\n\t for (var i = 0; i < prefixes.length; i++) {\n\t if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n\t }\n\t\n\t return '';\n\t}\n\t\n\tfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n\t return prefix ? '' + prefix + kebabToTitleCase(prop) : prop;\n\t}\n\t\n\tfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n\t return prefix ? '-' + prefix.toLowerCase() + '-' + prop : prop;\n\t}\n\t\n\tfunction kebabToTitleCase(str /*: string*/) /*: string*/ {\n\t var out = '';\n\t var shouldCapitalize = true;\n\t for (var i = 0; i < str.length; i++) {\n\t if (shouldCapitalize) {\n\t out += str[i].toUpperCase();\n\t shouldCapitalize = false;\n\t } else if (str[i] === '-') {\n\t shouldCapitalize = true;\n\t } else {\n\t out += str[i];\n\t }\n\t }\n\t return out;\n\t}\n\t\n\t// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n\t// Note that you may have to re-test for certain things; for instance, Chrome 50\n\t// can handle unprefixed `transform`, but not unprefixed `user-select`\n\texports.default = getPrefix();\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getBoundPosition = getBoundPosition;\n\texports.snapToGrid = snapToGrid;\n\texports.canDragX = canDragX;\n\texports.canDragY = canDragY;\n\texports.getControlPosition = getControlPosition;\n\texports.createCoreData = createCoreData;\n\texports.createDraggableData = createDraggableData;\n\t\n\tvar _shims = __webpack_require__(6);\n\t\n\tvar _reactDom = __webpack_require__(3);\n\t\n\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\n\tvar _domFns = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/*:: import type Draggable from '../Draggable';*/\n\t/*:: import type {Bounds, ControlPosition, DraggableData} from './types';*/\n\t/*:: import type DraggableCore from '../DraggableCore';*/\n\tfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/ {\n\t // If no bounds, short-circuit and move on\n\t if (!draggable.props.bounds) return [x, y];\n\t\n\t // Clone new bounds\n\t var bounds = draggable.props.bounds;\n\t\n\t bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n\t var node = _reactDom2.default.findDOMNode(draggable);\n\t\n\t if (typeof bounds === 'string') {\n\t var boundNode = void 0;\n\t if (bounds === 'parent') {\n\t boundNode = node.parentNode;\n\t } else {\n\t boundNode = document.querySelector(bounds);\n\t if (!boundNode) throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n\t }\n\t var nodeStyle = window.getComputedStyle(node);\n\t var boundNodeStyle = window.getComputedStyle(boundNode);\n\t // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\t bounds = {\n\t left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.borderLeftWidth) + (0, _shims.int)(nodeStyle.marginLeft),\n\t top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.borderTopWidth) + (0, _shims.int)(nodeStyle.marginTop),\n\t right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft,\n\t bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop\n\t };\n\t }\n\t\n\t // Keep x and y below right and bottom limits...\n\t if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n\t if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\t\n\t // But above left and top limits.\n\t if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n\t if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n\t\n\t return [x, y];\n\t}\n\t\n\tfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ {\n\t var x = Math.round(pendingX / grid[0]) * grid[0];\n\t var y = Math.round(pendingY / grid[1]) * grid[1];\n\t return [x, y];\n\t}\n\t\n\tfunction canDragX(draggable /*: Draggable*/) /*: boolean*/ {\n\t return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n\t}\n\t\n\tfunction canDragY(draggable /*: Draggable*/) /*: boolean*/ {\n\t return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n\t}\n\t\n\t// Get {x, y} positions from event.\n\tfunction getControlPosition(e /*: MouseEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/ {\n\t var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n\t if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\t return (0, _domFns.offsetXYFromParentOf)(touchObj || e, _reactDom2.default.findDOMNode(draggableCore));\n\t}\n\t\n\t// Create an data object exposed by 's events\n\tfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ {\n\t // State changes are often (but not always!) async. We want the latest value.\n\t var state = draggable._pendingState || draggable.state;\n\t var isStart = !(0, _shims.isNum)(state.lastX);\n\t\n\t if (isStart) {\n\t // If this is our first move, use the x and y as last coords.\n\t return {\n\t node: _reactDom2.default.findDOMNode(draggable),\n\t deltaX: 0, deltaY: 0,\n\t lastX: x, lastY: y,\n\t x: x, y: y\n\t };\n\t } else {\n\t // Otherwise calculate proper values.\n\t return {\n\t node: _reactDom2.default.findDOMNode(draggable),\n\t deltaX: x - state.lastX, deltaY: y - state.lastY,\n\t lastX: state.lastX, lastY: state.lastY,\n\t x: x, y: y\n\t };\n\t }\n\t}\n\t\n\t// Create an data exposed by 's events\n\tfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ {\n\t return {\n\t node: coreData.node,\n\t x: draggable.state.x + coreData.deltaX,\n\t y: draggable.state.y + coreData.deltaY,\n\t deltaX: coreData.deltaX,\n\t deltaY: coreData.deltaY,\n\t lastX: draggable.state.x,\n\t lastY: draggable.state.y\n\t };\n\t}\n\t\n\t// A lot faster than stringify/parse\n\tfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/ {\n\t return {\n\t left: bounds.left,\n\t top: bounds.top,\n\t right: bounds.right,\n\t bottom: bounds.bottom\n\t };\n\t}\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(3);\n\t\n\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\n\tvar _domFns = __webpack_require__(5);\n\t\n\tvar _positionFns = __webpack_require__(8);\n\t\n\tvar _shims = __webpack_require__(6);\n\t\n\tvar _log = __webpack_require__(10);\n\t\n\tvar _log2 = _interopRequireDefault(_log);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t// Simple abstraction for dragging events names.\n\t/*:: import type {EventHandler} from './utils/types';*/\n\tvar eventsFor = {\n\t touch: {\n\t start: 'touchstart',\n\t move: 'touchmove',\n\t stop: 'touchend'\n\t },\n\t mouse: {\n\t start: 'mousedown',\n\t move: 'mousemove',\n\t stop: 'mouseup'\n\t }\n\t};\n\t\n\t// Default to mouse events.\n\tvar dragEventFor = eventsFor.mouse;\n\t\n\t//\n\t// Define .\n\t//\n\t// is for advanced usage of . It maintains minimal internal state so it can\n\t// work well with libraries that require more control over the element.\n\t//\n\t\n\t/*:: type CoreState = {\n\t dragging: boolean,\n\t lastX: number,\n\t lastY: number,\n\t touchIdentifier: ?number\n\t};*/\n\t\n\tvar DraggableCore = function (_React$Component) {\n\t _inherits(DraggableCore, _React$Component);\n\t\n\t function DraggableCore() {\n\t var _Object$getPrototypeO;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, DraggableCore);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(DraggableCore)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.state = {\n\t dragging: false,\n\t // Used while dragging to determine deltas.\n\t lastX: NaN, lastY: NaN,\n\t touchIdentifier: null\n\t }, _this.handleDragStart = function (e) {\n\t // Make it possible to attach event handlers on top of this one.\n\t _this.props.onMouseDown(e);\n\t\n\t // Only accept left-clicks.\n\t if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\t\n\t // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\t if (_this.props.disabled || !(e.target instanceof Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, _reactDom2.default.findDOMNode(_this)) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, _reactDom2.default.findDOMNode(_this))) {\n\t return;\n\t }\n\t\n\t // Set touch identifier in component state if this is a touch event. This allows us to\n\t // distinguish between individual touches on multitouch screens by identifying which\n\t // touchpoint was set to this element.\n\t var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\t _this.setState({ touchIdentifier: touchIdentifier });\n\t\n\t // Get the current drag point from the event. This is used as the offset.\n\t var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _this);\n\t if (position == null) return; // not possible but satisfies flow\n\t var x = position.x;\n\t var y = position.y;\n\t\n\t // Create an event object with all the data parents need to make a decision here.\n\t\n\t var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\t\n\t (0, _log2.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\t\n\t // Call event handler. If it returns explicit false, cancel.\n\t (0, _log2.default)('calling', _this.props.onStart);\n\t var shouldUpdate = _this.props.onStart(e, coreEvent);\n\t if (shouldUpdate === false) return;\n\t\n\t // Add a style to the body to disable user-select. This prevents text from\n\t // being selected all over the page.\n\t if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)();\n\t\n\t // Initiate dragging. Set the current x and y as offsets\n\t // so we know how much we've moved during the drag. This allows us\n\t // to drag elements around even if they have been moved, without issue.\n\t _this.setState({\n\t dragging: true,\n\t\n\t lastX: x,\n\t lastY: y\n\t });\n\t\n\t // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n\t // this element. We use different events depending on whether or not we have detected that this\n\t // is a touch-capable device.\n\t (0, _domFns.addEvent)(document, dragEventFor.move, _this.handleDrag);\n\t (0, _domFns.addEvent)(document, dragEventFor.stop, _this.handleDragStop);\n\t }, _this.handleDrag = function (e) {\n\t\n\t // Get the current drag point from the event. This is used as the offset.\n\t var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n\t if (position == null) return;\n\t var x = position.x;\n\t var y = position.y;\n\t\n\t // Snap to grid if prop has been provided\n\t\n\t if (x !== x) debugger;\n\t\n\t if (Array.isArray(_this.props.grid)) {\n\t var deltaX = x - _this.state.lastX,\n\t deltaY = y - _this.state.lastY;\n\t\n\t var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\t\n\t var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\t\n\t deltaX = _snapToGrid2[0];\n\t deltaY = _snapToGrid2[1];\n\t\n\t if (!deltaX && !deltaY) return; // skip useless drag\n\t x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n\t }\n\t\n\t var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\t\n\t (0, _log2.default)('DraggableCore: handleDrag: %j', coreEvent);\n\t\n\t // Call event handler. If it returns explicit false, trigger end.\n\t var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\t if (shouldUpdate === false) {\n\t _this.handleDragStop(new MouseEvent());\n\t return;\n\t }\n\t\n\t _this.setState({\n\t lastX: x,\n\t lastY: y\n\t });\n\t }, _this.handleDragStop = function (e) {\n\t if (!_this.state.dragging) return;\n\t\n\t var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n\t if (position == null) return;\n\t var x = position.x;\n\t var y = position.y;\n\t\n\t var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\t\n\t // Remove user-select hack\n\t if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)();\n\t\n\t (0, _log2.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\t\n\t // Reset the el.\n\t _this.setState({\n\t dragging: false,\n\t lastX: NaN,\n\t lastY: NaN\n\t });\n\t\n\t // Call event handler\n\t _this.props.onStop(e, coreEvent);\n\t\n\t // Remove event handlers\n\t (0, _log2.default)('DraggableCore: Removing handlers');\n\t (0, _domFns.removeEvent)(document, dragEventFor.move, _this.handleDrag);\n\t (0, _domFns.removeEvent)(document, dragEventFor.stop, _this.handleDragStop);\n\t }, _this.onMouseDown = function (e) {\n\t dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\t\n\t return _this.handleDragStart(e);\n\t }, _this.onMouseUp = function (e) {\n\t dragEventFor = eventsFor.mouse;\n\t\n\t return _this.handleDragStop(e);\n\t }, _this.onTouchStart = function (e) {\n\t // We're on a touch device now, so change the event handlers\n\t dragEventFor = eventsFor.touch;\n\t\n\t return _this.handleDragStart(e);\n\t }, _this.onTouchEnd = function (e) {\n\t // We're on a touch device now, so change the event handlers\n\t dragEventFor = eventsFor.touch;\n\t\n\t return _this.handleDragStop(e);\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(DraggableCore, [{\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n\t // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\t (0, _domFns.removeEvent)(document, eventsFor.mouse.move, this.handleDrag);\n\t (0, _domFns.removeEvent)(document, eventsFor.touch.move, this.handleDrag);\n\t (0, _domFns.removeEvent)(document, eventsFor.mouse.stop, this.handleDragStop);\n\t (0, _domFns.removeEvent)(document, eventsFor.touch.stop, this.handleDragStop);\n\t if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)();\n\t }\n\t\n\t // Same as onMouseDown (start drag), but now consider this a touch device.\n\t\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t // Reuse the child provided\n\t // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\t return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {\n\t style: (0, _domFns.styleHacks)(this.props.children.props.style),\n\t\n\t // Note: mouseMove handler is attached to document so it will still function\n\t // when the user drags quickly and leaves the bounds of the element.\n\t onMouseDown: this.onMouseDown,\n\t onTouchStart: this.onTouchStart,\n\t onMouseUp: this.onMouseUp,\n\t onTouchEnd: this.onTouchEnd\n\t });\n\t }\n\t }]);\n\t\n\t return DraggableCore;\n\t}(_react2.default.Component);\n\t\n\tDraggableCore.displayName = 'DraggableCore';\n\tDraggableCore.propTypes = {\n\t /**\n\t * `allowAnyClick` allows dragging using any mouse button.\n\t * By default, we only accept the left button.\n\t *\n\t * Defaults to `false`.\n\t */\n\t allowAnyClick: _react.PropTypes.bool,\n\t\n\t /**\n\t * `disabled`, if true, stops the from dragging. All handlers,\n\t * with the exception of `onMouseDown`, will not fire.\n\t */\n\t disabled: _react.PropTypes.bool,\n\t\n\t /**\n\t * By default, we add 'user-select:none' attributes to the document body\n\t * to prevent ugly text selection during drag. If this is causing problems\n\t * for your app, set this to `false`.\n\t */\n\t enableUserSelectHack: _react.PropTypes.bool,\n\t\n\t /**\n\t * `grid` specifies the x and y that dragging should snap to.\n\t */\n\t grid: _react.PropTypes.arrayOf(_react.PropTypes.number),\n\t\n\t /**\n\t * `handle` specifies a selector to be used as the handle that initiates drag.\n\t *\n\t * Example:\n\t *\n\t * ```jsx\n\t * let App = React.createClass({\n\t * render: function () {\n\t * return (\n\t * \n\t *
\n\t *
Click me to drag
\n\t *
This is some other content
\n\t *
\n\t *
\n\t * );\n\t * }\n\t * });\n\t * ```\n\t */\n\t handle: _react.PropTypes.string,\n\t\n\t /**\n\t * `cancel` specifies a selector to be used to prevent drag initialization.\n\t *\n\t * Example:\n\t *\n\t * ```jsx\n\t * let App = React.createClass({\n\t * render: function () {\n\t * return(\n\t * \n\t *
\n\t *
You can't drag from here
\n\t *
Dragging here works fine
\n\t *
\n\t *
\n\t * );\n\t * }\n\t * });\n\t * ```\n\t */\n\t cancel: _react.PropTypes.string,\n\t\n\t /**\n\t * Called when dragging starts.\n\t * If this function returns the boolean false, dragging will be canceled.\n\t */\n\t onStart: _react.PropTypes.func,\n\t\n\t /**\n\t * Called while dragging.\n\t * If this function returns the boolean false, dragging will be canceled.\n\t */\n\t onDrag: _react.PropTypes.func,\n\t\n\t /**\n\t * Called when dragging stops.\n\t * If this function returns the boolean false, the drag will remain active.\n\t */\n\t onStop: _react.PropTypes.func,\n\t\n\t /**\n\t * A workaround option which can be passed if onMouseDown needs to be accessed,\n\t * since it'll always be blocked (as there is internal use of onMouseDown)\n\t */\n\t onMouseDown: _react.PropTypes.func,\n\t\n\t /**\n\t * These properties should be defined on the child, not here.\n\t */\n\t className: _shims.dontSetMe,\n\t style: _shims.dontSetMe,\n\t transform: _shims.dontSetMe\n\t};\n\tDraggableCore.defaultProps = {\n\t allowAnyClick: false, // by default only accept left click\n\t cancel: null,\n\t disabled: false,\n\t enableUserSelectHack: true,\n\t handle: null,\n\t grid: null,\n\t transform: null,\n\t onStart: function onStart() {},\n\t onDrag: function onDrag() {},\n\t onStop: function onStop() {},\n\t onMouseDown: function onMouseDown() {}\n\t};\n\texports.default = DraggableCore;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = log;\n\t\n\t/*eslint no-console:0*/\n\tfunction log() {\n\t var _console;\n\t\n\t if ((undefined)) (_console = console).log.apply(_console, arguments);\n\t}\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=react-draggable.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-draggable/dist/react-draggable.js\n ** module id = 6\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDraggable = require('react-draggable');\n\nvar _cloneElement = require('./cloneElement');\n\nvar _cloneElement2 = _interopRequireDefault(_cloneElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*:: type Position = {\n\n};*/\n/*:: type State = {\n resizing: boolean,\n width: number, height: number,\n slackW: number, slackH: number\n};*/\n/*:: type DragCallbackData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number\n};*/\n\nvar Resizable = function (_React$Component) {\n _inherits(Resizable, _React$Component);\n\n function Resizable() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Resizable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n resizing: false,\n width: _this.props.width, height: _this.props.height,\n slackW: 0, slackH: 0\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Resizable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps /*: Object*/) {\n // If parent changes height/width, set that in our state.\n if (!this.state.resizing && (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) {\n this.setState({\n width: nextProps.width,\n height: nextProps.height\n });\n }\n };\n\n Resizable.prototype.lockAspectRatio = function lockAspectRatio(width /*: number*/, height /*: number*/, aspectRatio /*: number*/) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n };\n\n // If you do this, be careful of constraints\n\n\n Resizable.prototype.runConstraints = function runConstraints(width /*: number*/, height /*: number*/) {\n var min = this.props.minConstraints;\n var max = this.props.maxConstraints;\n\n\n if (this.props.lockAspectRatio) {\n var ratio = this.state.width / this.state.height;\n height = width / ratio;\n width = height * ratio;\n }\n\n if (!min && !max) return [width, height];\n\n var oldW = width;\n var oldH = height;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _state = this.state;\n var slackW = _state.slackW;\n var slackH = _state.slackH;\n\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n }\n\n // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n slackW += oldW - width;\n slackH += oldH - height;\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({ slackW: slackW, slackH: slackH });\n }\n\n return [width, height];\n };\n\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n\n\n Resizable.prototype.resizeHandler = function resizeHandler(handlerName /*: string*/) {\n var _this2 = this;\n\n return function (e, _ref) {\n var node = _ref.node;\n var deltaX = _ref.deltaX;\n var deltaY = _ref.deltaY;\n\n var width = _this2.state.width + deltaX,\n height = _this2.state.height + deltaY;\n\n // Early return if no change\n var widthChanged = width !== _this2.state.width,\n heightChanged = height !== _this2.state.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n // Set the appropriate state for this handler.\n\n var _runConstraints = _this2.runConstraints(width, height);\n\n width = _runConstraints[0];\n height = _runConstraints[1];\n var newState = {};\n if (handlerName === 'onResizeStart') {\n newState.resizing = true;\n } else if (handlerName === 'onResizeStop') {\n newState.resizing = false;\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.state.width && height === _this2.state.height) return;\n newState.width = width;\n newState.height = height;\n }\n\n _this2.setState(newState, function () {\n _this2.props[handlerName] && _this2.props[handlerName](e, { node: node, size: { width: width, height: height } });\n });\n };\n };\n\n Resizable.prototype.render = function render() {\n var _props = this.props;\n var width = _props.width;\n var height = _props.height;\n\n var p = _objectWithoutProperties(_props, ['width', 'height']);\n\n var className = p.className ? p.className + ' react-resizable' : 'react-resizable';\n\n // What we're doing here is getting the child of this element, and cloning it with this element's props.\n // We are then defining its children as:\n // Its original children (resizable's child's children), and\n // A draggable handle.\n return (0, _cloneElement2.default)(p.children, _extends({}, p, {\n className: className,\n children: [p.children.props.children, _react2.default.createElement(\n _reactDraggable.DraggableCore,\n _extends({}, p.draggableOpts, {\n key: 'resizableHandle',\n ref: 'draggable',\n onStop: this.resizeHandler('onResizeStop'),\n onStart: this.resizeHandler('onResizeStart'),\n onDrag: this.resizeHandler('onResize')\n }),\n _react2.default.createElement('span', { className: 'react-resizable-handle' })\n )]\n }));\n };\n\n return Resizable;\n}(_react2.default.Component);\n\nResizable.propTypes = {\n //\n // Required Props\n //\n\n // Require that one and only one child be present.\n children: _react.PropTypes.element.isRequired,\n\n // Initial w/h\n width: _react.PropTypes.number.isRequired,\n height: _react.PropTypes.number.isRequired,\n\n //\n // Optional props\n //\n\n // If you change this, be sure to update your css\n handleSize: _react.PropTypes.array,\n\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _react.PropTypes.bool,\n\n // Min/max size\n minConstraints: _react.PropTypes.arrayOf(_react.PropTypes.number),\n maxConstraints: _react.PropTypes.arrayOf(_react.PropTypes.number),\n\n // Callbacks\n onResizeStop: _react.PropTypes.func,\n onResizeStart: _react.PropTypes.func,\n onResize: _react.PropTypes.func,\n\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _react.PropTypes.object\n};\nResizable.defaultProps = {\n handleSize: [20, 20],\n lockAspectRatio: false,\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity]\n};\nexports.default = Resizable;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/Resizable.js\n ** module id = 7\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 8\n ** module chunks = 0\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_9__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n ** module id = 9\n ** module chunks = 0\n **/","// @flow\nimport React, {PropTypes} from 'react';\nimport {DraggableCore} from 'react-draggable';\nimport {Resizable} from 'react-resizable';\nimport {perc, setTopLeft, setTransform} from './utils';\n\nimport type {DragCallbackData, Position} from './utils';\n\ntype State = {\n resizing: ?{width: number, height: number},\n dragging: ?{top: number, left: number},\n className: string\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function (props, propName, componentName, location, propFullName) {\n PropTypes.number(props, propName, componentName, location, propFullName);\n const value = props[propName];\n if (value > props.w || value > props.maxW) return new Error('minWidth bigger than item width/maxWidth');\n },\n maxW: function (props, propName, componentName, location, propFullName) {\n PropTypes.number(props, propName, componentName, location, propFullName);\n const value = props[propName];\n if (value < props.w || value < props.minW) return new Error('maxWidth smaller than item width/minWidth');\n\n },\n minH: function (props, propName, componentName, location, propFullName) {\n PropTypes.number(props, propName, componentName, location, propFullName);\n const value = props[propName];\n if (value > props.h || value > props.maxH) return new Error('minHeight bigger than item height/maxHeight');\n },\n maxH: function (props, propName, componentName, location, propFullName) {\n PropTypes.number(props, propName, componentName, location, propFullName);\n const value = props[propName];\n if (value < props.h || value < props.minH) return new Error('maxHeight smaller than item height/minHeight');\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string\n };\n\n static defaultProps = {\n className: '',\n cancel: '',\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: ''\n };\n\n // Helper for generating column width\n calcColWidth(): number {\n const {margin, containerWidth, cols} = this.props;\n return (containerWidth - (margin[0] * (cols + 1))) / cols;\n }\n\n /**\n * Return position on the page given an x, y, w, h.\n * left, top, width, height are all in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} Object containing coords.\n */\n calcPosition(x: number, y: number, w: number, h: number, state: ?Object): Position {\n const {margin, rowHeight} = this.props;\n const colWidth = this.calcColWidth();\n\n const out = {\n left: Math.round(colWidth * x + (x + 1) * margin[0]),\n top: Math.round(rowHeight * y + (y + 1) * margin[1]),\n // 0 * Infinity === NaN, which causes problems with resize constriants;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]),\n height: h === Infinity ? h : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1])\n };\n\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n\n return out;\n }\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY(top: number, left: number): {x: number, y: number} {\n const {margin, cols, rowHeight, w, h, maxRows} = this.props;\n const colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return {x, y};\n }\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({height, width}: {height: number, width: number}): {w: number, h: number} {\n const {margin, maxRows, cols, rowHeight, x, y} = this.props;\n const colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return {w, h};\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): {[key: string]: ?string} {\n const {usePercentages, containerWidth, useCSSTransforms} = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n }\n // top,left (slow)\n else {\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child: React.Element): React.Element {\n return (\n \n {child}\n
\n );\n }\n\n /**\n * Mix a Resizable instance into a child.\n * @param {Element} child Child element.\n * @param {Object} position Position object (pixel values)\n * @return {Element} Child wrapped in Resizable.\n */\n mixinResizable(child: React.Element, position: Position): React.Element {\n const {cols, x, minW, minH, maxW, maxH} = this.props;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = this.calcPosition(0, 0, minW, minH);\n const maxes = this.calcPosition(0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n return (\n \n {child}\n \n );\n }\n\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n onDragHandler(handlerName:string): Function {\n return (e:Event, {node, deltaX, deltaY}: DragCallbackData) => {\n if (!this.props[handlerName]) return;\n\n const newPosition: {top: number, left: number} = {top: 0, left: 0};\n\n // Get new XY\n switch (handlerName) {\n case 'onDragStart':\n // ToDo this wont work on nested parents\n const parentRect = node.offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n newPosition.left = clientRect.left - parentRect.left;\n newPosition.top = clientRect.top - parentRect.top;\n this.setState({dragging: newPosition});\n break;\n case 'onDrag':\n if (!this.state.dragging) throw new Error('onDrag called before onDragStart.');\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({dragging: newPosition});\n break;\n case 'onDragStop':\n if (!this.state.dragging) throw new Error('onDragEnd called before onDragStart.');\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({dragging: null});\n break;\n default:\n throw new Error('onDragHandler called with unrecognized handlerName: ' + handlerName);\n }\n\n const {x, y} = this.calcXY(newPosition.top, newPosition.left);\n\n this.props[handlerName](this.props.i, x, y, {e, node, newPosition});\n };\n }\n\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n onResizeHandler(handlerName:string): Function {\n return (e:Event, {element, size}: {element: HTMLElement, size: Position}) => {\n if (!this.props[handlerName]) return;\n const {cols, x, i, maxW, minW, maxH, minH} = this.props;\n\n // Get new XY\n let {w, h} = this.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({resizing: handlerName === 'onResizeStop' ? null : size});\n\n this.props[handlerName](i, w, h, {e, element, size});\n };\n }\n\n render(): React.Element {\n const {x, y, w, h, isDraggable, isResizable, useCSSTransforms} = this.props;\n\n const pos = this.calcPosition(x, y, w, h, this.state);\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n // Munge a classname. Use passed in classnames and resizing.\n // React with merge the classNames.\n className: [\n 'react-grid-item',\n child.props.className || '',\n this.props.className,\n this.props.static ? 'static' : '',\n this.state.resizing ? 'resizing' : '',\n this.state.dragging ? 'react-draggable-dragging' : '',\n useCSSTransforms ? 'cssTransforms' : ''\n ].join(' '),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {...this.props.style, ...child.props.style, ...this.createStyle(pos)}\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/GridItem.jsx\n **/","// @flow\nimport React from 'react';\nimport isEqual from 'lodash.isequal';\n\nimport {cloneLayout, synchronizeLayoutWithChildren, validateLayout} from './utils';\nimport {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from './responsiveUtils';\nimport ReactGridLayout from './ReactGridLayout';\n\nconst noop = function(){};\n\nimport type {Layout} from './utils';\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component {\n\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n\n //\n // Basic props\n //\n\n // Optional, but if you are managing width yourself you may want to set the breakpoint\n // yourself as well.\n breakpoint: React.PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: React.PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: React.PropTypes.object,\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts: function (props) {\n React.PropTypes.object.isRequired.apply(this, arguments);\n Object.keys(props.layouts).forEach((key) => validateLayout(props.layouts[key], 'layouts.' + key));\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: React.PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: React.PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: React.PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols)\n onWidthChange: React.PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: {lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0},\n cols: {lg: 12, md: 10, sm: 6, xs: 4, xxs: 2},\n layouts: {},\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop,\n };\n\n state: State = this.generateInitialState();\n\n generateInitialState(): State {\n const {width, breakpoints, layouts, verticalCompact, cols} = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint,\n breakpoint, colNo, verticalCompact);\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n componentWillReceiveProps(nextProps: Object) {\n\n // Allow parent to set width or breakpoint directly.\n if (\n nextProps.width != this.props.width\n || nextProps.breakpoint !== this.props.breakpoint\n || nextProps.breakpoints !== this.props.breakpoints\n || nextProps.cols !== this.props.cols\n ) {\n this.onWidthChange(nextProps);\n }\n\n // Allow parent to set layouts directly.\n else if (!isEqual(nextProps.layouts, this.props.layouts)) {\n const {breakpoint, cols} = this.state;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts, nextProps.breakpoints,\n breakpoint, breakpoint, cols, nextProps.verticalLayout\n );\n this.setState({layout: newLayout});\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout) => {\n this.props.onLayoutChange(layout, {...this.props.layouts, [this.state.breakpoint]: layout});\n };\n onLayoutChange: (layout: Layout) => void;\n\n /**\n * When the width changes work through breakpoints and reset state with the new width & breakpoint.\n * Width changes are necessary to figure out the widget widths.\n */\n onWidthChange(nextProps: typeof ResponsiveReactGridLayout.prototype.props) {\n const {breakpoints, verticalLayout, verticalCompact, cols} = nextProps;\n const newBreakpoint = nextProps.breakpoint || getBreakpointFromWidth(nextProps.breakpoints, nextProps.width);\n\n const lastBreakpoint = this.state.breakpoint;\n\n // Breakpoint change\n if (lastBreakpoint !== newBreakpoint || this.props.breakpoints !== breakpoints || this.props.cols !== cols) {\n\n // Store the current layout\n const layouts = nextProps.layouts;\n layouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new one.\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n let layout = findOrGenerateResponsiveLayout(layouts, breakpoints, newBreakpoint,\n lastBreakpoint, newCols, verticalLayout);\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(layout, nextProps.children, newCols, verticalCompact);\n\n // Store this new layout as well.\n layouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n this.props.onWidthChange(nextProps.width, nextProps.margin, newCols);\n\n this.setState({breakpoint: newBreakpoint, layout: layout, cols: newCols});\n }\n }\n\n render(): React.Element {\n const {breakpoint, breakpoints, cols, layouts, onBreakpointChange,\n onLayoutChange, onWidthChange, ...other} = this.props;\n\n return (\n \n );\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/ResponsiveReactGridLayout.jsx\n **/","// @noflow\n// Intentional; Flow can't handle the bind on L20\nimport React from \"react\";\nimport ReactDOM from 'react-dom';\n\ntype State = {\n mounted: boolean,\n width: number\n};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default (ComposedComponent: ReactClass): ReactClass => class extends React.Component {\n\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: React.PropTypes.bool\n };\n\n state: State = {\n mounted: false,\n width: 1280\n };\n\n componentDidMount() {\n this.setState({mounted: true});\n\n window.addEventListener('resize', this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.onWindowResize);\n }\n\n onWindowResize = (_event: Event, cb: ?Function) => {\n const node = ReactDOM.findDOMNode(this);\n this.setState({width: node.offsetWidth}, cb);\n }\n\n render() {\n if (this.props.measureBeforeMount && !this.state.mounted) return
;\n return ;\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/components/WidthProvider.jsx\n **/","/**\n * lodash 3.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\nmodule.exports = root;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._root/index.js\n ** module id = 13\n ** module chunks = 0\n **/","/**\n * lodash 4.1.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\n/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @returns {Object} Returns the new hash object.\n */\nfunction Hash() {}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(hash, key) {\n return hashHas(hash, key) && delete hash[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(hash, key) {\n if (nativeCreate) {\n var result = hash[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(hash, key) {\n return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction hashSet(hash, key, value) {\n hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n}\n\n// Avoid inheriting from `Object.prototype` when possible.\nHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction MapCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': Map ? new Map : [],\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapDelete(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapGet(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.get(key) : assocGet(data.map, key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapHas(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.has(key) : assocHas(data.map, key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapSet(key, value) {\n var data = this.__data__;\n if (isKeyable(key)) {\n hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n } else if (Map) {\n data.map.set(key, value);\n } else {\n assocSet(data.map, key, value);\n }\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapClear;\nMapCache.prototype['delete'] = mapDelete;\nMapCache.prototype.get = mapGet;\nMapCache.prototype.has = mapHas;\nMapCache.prototype.set = mapSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction Stack(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = { 'array': [], 'map': null };\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocDelete(array, key) : data.map['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocGet(array, key) : data.map.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocHas(array, key) : data.map.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__,\n array = data.array;\n\n if (array) {\n if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n assocSet(array, key, value);\n } else {\n data.array = null;\n data.map = new MapCache(array);\n }\n }\n var map = data.map;\n if (map) {\n map.set(key, value);\n }\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Removes `key` and its value from the associative array.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction assocDelete(array, key) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = array.length - 1;\n if (index == lastIndex) {\n array.pop();\n } else {\n splice.call(array, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the associative array value for `key`.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction assocGet(array, key) {\n var index = assocIndexOf(array, key);\n return index < 0 ? undefined : array[index][1];\n}\n\n/**\n * Checks if an associative array value for `key` exists.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction assocHas(array, key) {\n return assocIndexOf(array, key) > -1;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * Sets the associative array `key` to `value`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction assocSet(array, key, value) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n array.push([key, value]);\n } else {\n array[index][1] = value;\n }\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'number' || type == 'boolean' ||\n (type == 'string' && value != '__proto__') || value == null;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = Stack;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash._stack/index.js\n ** module id = 14\n ** module chunks = 0\n **/","/**\n * lodash 4.0.6 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf,\n nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototype(object) === null);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a\n * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n * Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length,\n * else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash.keys/index.js\n ** module id = 15\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Resizable = require('./Resizable');\n\nvar _Resizable2 = _interopRequireDefault(_Resizable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*:: type State = {width: number, height: number, aspectRatio: number};*/\n/*:: type Size = {width: number, height: number};*/\n\n\n// An example use of Resizable.\n/*:: type ResizeData = {element: Element, size: Size};*/\n\nvar ResizableBox = function (_React$Component) {\n _inherits(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, ResizableBox);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n width: _this.props.width,\n height: _this.props.height\n }, _this.onResize = function (event, _ref) {\n var element = _ref.element;\n var size = _ref.size;\n var width = size.width;\n var height = size.height;\n\n\n _this.setState(size, function () {\n _this.props.onResize && _this.props.onResize(event, { element: element, size: size });\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n ResizableBox.prototype.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _props = this.props;\n var handleSize = _props.handleSize;\n var onResizeStart = _props.onResizeStart;\n var onResizeStop = _props.onResizeStop;\n var draggableOpts = _props.draggableOpts;\n var minConstraints = _props.minConstraints;\n var maxConstraints = _props.maxConstraints;\n var lockAspectRatio = _props.lockAspectRatio;\n var width = _props.width;\n var height = _props.height;\n\n var props = _objectWithoutProperties(_props, ['handleSize', 'onResizeStart', 'onResizeStop', 'draggableOpts', 'minConstraints', 'maxConstraints', 'lockAspectRatio', 'width', 'height']);\n\n return _react2.default.createElement(\n _Resizable2.default,\n {\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio\n },\n _react2.default.createElement('div', _extends({ style: { width: this.state.width + 'px', height: this.state.height + 'px' } }, props))\n );\n };\n\n return ResizableBox;\n}(_react2.default.Component);\n\nResizableBox.propTypes = {\n height: _react.PropTypes.number,\n width: _react.PropTypes.number\n};\nResizableBox.defaultProps = {\n handleSize: [20, 20]\n};\nexports.default = ResizableBox;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/ResizableBox.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nmodule.exports = function cloneElement(element /*: React.Element*/, props /*: Object*/) /*: React.Element*/ {\n if (props.style && element.props.style) {\n props.style = _extends({}, element.props.style, props.style);\n }\n if (props.className && element.props.className) {\n props.className = element.props.className + ' ' + props.className;\n }\n return _react2.default.cloneElement(element, props);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/cloneElement.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/index.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/examples/4-grid-property.html b/examples/4-grid-property.html index 0cc6b44c5..0a831ba21 100644 --- a/examples/4-grid-property.html +++ b/examples/4-grid-property.html @@ -9,7 +9,7 @@

React-Grid-Layout Demo 4 - Grid Item Properties

-

This demo uses a layout assigned on the grid items themselves as the _grid property.

+

This demo uses a layout assigned on the grid items themselves as the data-grid property.

  • View project on GitHub
  • View this example's source
  • diff --git a/examples/example-styles.css b/examples/example-styles.css index 354c624bf..010cbfd82 100644 --- a/examples/example-styles.css +++ b/examples/example-styles.css @@ -20,6 +20,9 @@ body { -webkit-columns: 120px; columns: 120px; } +.react-grid-item { + box-sizing: border-box; +} .react-grid-item:not(.react-grid-placeholder) { background: #ccc; border: 1px solid black; @@ -47,3 +50,9 @@ body { .react-grid-item .add { cursor: pointer; } +.react-grid-dragHandleExample{ + cursor: move; /* fallback if grab cursor is unsupported */ + cursor: grab; + cursor: -moz-grab; + cursor: -webkit-grab; +} diff --git a/examples/vars.js b/examples/vars.js index d6036ff0f..e75cc88c6 100644 --- a/examples/vars.js +++ b/examples/vars.js @@ -41,7 +41,7 @@ module.exports = [ title: 'Grid Item Properties', source: 'grid-property', paragraphs: [ - 'This demo uses a layout assigned on the grid items themselves as the _grid property.', + 'This demo uses a layout assigned on the grid items themselves as the data-grid property.', ] }, { diff --git a/index.html b/index.html index d1faeb868..aeaa0767f 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@

    React-Grid-Layout Dev

    Try dragging the elements around.

    -

    If you don't see any content, run webpack (npm run dev-server) +

    If you don't see any content, run webpack (npm run dev) and load this file from the server it opens.

    diff --git a/interfaces/classnames.js b/interfaces/classnames.js new file mode 100644 index 000000000..9369c5821 --- /dev/null +++ b/interfaces/classnames.js @@ -0,0 +1,15 @@ +// flow-typed signature: 3fba12a77525f37b0492c8dab3e04f0e +// flow-typed version: 94e9f7e0a4/classnames_v2.x.x/flow_>=v0.28.x + +type $npm$classnames$Classes = + string | + {[className: string]: ?boolean } | + Array | + void | + null + +declare module 'classnames' { + declare function exports( + ...classes: Array<$npm$classnames$Classes> + ): string; +} diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index b55eca9eb..000ce52e9 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -3,6 +3,7 @@ import React, {PropTypes} from 'react'; import {DraggableCore} from 'react-draggable'; import {Resizable} from 'react-resizable'; import {perc, setTopLeft, setTransform} from './utils'; +import classNames from 'classnames'; import type {DragCallbackData, Position} from './utils'; @@ -27,6 +28,7 @@ export default class GridItem extends React.Component { rowHeight: PropTypes.number.isRequired, margin: PropTypes.array.isRequired, maxRows: PropTypes.number.isRequired, + containerPadding: PropTypes.array.isRequired, // These are all in grid units x: PropTypes.number.isRequired, @@ -35,25 +37,27 @@ export default class GridItem extends React.Component { h: PropTypes.number.isRequired, // All optional - minW: function (props, propName, componentName, location, propFullName) { - PropTypes.number(props, propName, componentName, location, propFullName); + minW: function (props, propName) { const value = props[propName]; - if (value > props.w || value > props.maxW) return new Error('minWidth bigger than item width/maxWidth'); + if (typeof value !== 'number') return new Error('minWidth not Number'); + if (value > props.w || value > props.maxW) return new Error('minWidth larger than item width/maxWidth'); }, - maxW: function (props, propName, componentName, location, propFullName) { - PropTypes.number(props, propName, componentName, location, propFullName); + + maxW: function (props, propName) { const value = props[propName]; + if (typeof value !== 'number') return new Error('maxWidth not Number'); if (value < props.w || value < props.minW) return new Error('maxWidth smaller than item width/minWidth'); - }, - minH: function (props, propName, componentName, location, propFullName) { - PropTypes.number(props, propName, componentName, location, propFullName); + + minH: function (props, propName) { const value = props[propName]; - if (value > props.h || value > props.maxH) return new Error('minHeight bigger than item height/maxHeight'); + if (typeof value !== 'number') return new Error('minHeight not Number'); + if (value > props.h || value > props.maxH) return new Error('minHeight larger than item height/maxHeight'); }, - maxH: function (props, propName, componentName, location, propFullName) { - PropTypes.number(props, propName, componentName, location, propFullName); + + maxH: function (props, propName) { const value = props[propName]; + if (typeof value !== 'number') return new Error('maxHeight not Number'); if (value < props.h || value < props.minH) return new Error('maxHeight smaller than item height/minHeight'); }, @@ -101,8 +105,8 @@ export default class GridItem extends React.Component { // Helper for generating column width calcColWidth(): number { - const {margin, containerWidth, cols} = this.props; - return (containerWidth - (margin[0] * (cols + 1))) / cols; + const {margin, containerPadding, containerWidth, cols} = this.props; + return (containerWidth - (margin[0] * (cols - 1)) - (containerPadding[0] * 2)) / cols; } /** @@ -115,13 +119,13 @@ export default class GridItem extends React.Component { * @return {Object} Object containing coords. */ calcPosition(x: number, y: number, w: number, h: number, state: ?Object): Position { - const {margin, rowHeight} = this.props; + const {margin, containerPadding, rowHeight} = this.props; const colWidth = this.calcColWidth(); const out = { - left: Math.round(colWidth * x + (x + 1) * margin[0]), - top: Math.round(rowHeight * y + (y + 1) * margin[1]), - // 0 * Infinity === NaN, which causes problems with resize constriants; + left: Math.round((colWidth + margin[0]) * x + containerPadding[0]), + top: Math.round((rowHeight + margin[1]) * y + containerPadding[1]), + // 0 * Infinity === NaN, which causes problems with resize constraints; // Fix this if it occurs. // Note we do it here rather than later because Math.round(Infinity) causes deopt width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]), @@ -227,7 +231,7 @@ export default class GridItem extends React.Component { * @param {Element} child Child element. * @return {Element} Child wrapped in Draggable. */ - mixinDraggable(child: React.Element): React.Element { + mixinDraggable(child: React.Element): React.Element { return ( , position: Position): React.Element { const {cols, x, minW, minH, maxW, maxH} = this.props; // This is the max possible width - doesn't go to infinity because of the width of the window @@ -279,7 +283,7 @@ export default class GridItem extends React.Component { * @param {String} handlerName Handler name to wrap. * @return {Function} Handler function. */ - onDragHandler(handlerName:string): Function { + onDragHandler(handlerName:string) { return (e:Event, {node, deltaX, deltaY}: DragCallbackData) => { if (!this.props[handlerName]) return; @@ -287,7 +291,7 @@ export default class GridItem extends React.Component { // Get new XY switch (handlerName) { - case 'onDragStart': + case 'onDragStart': { // ToDo this wont work on nested parents const parentRect = node.offsetParent.getBoundingClientRect(); const clientRect = node.getBoundingClientRect(); @@ -295,6 +299,7 @@ export default class GridItem extends React.Component { newPosition.top = clientRect.top - parentRect.top; this.setState({dragging: newPosition}); break; + } case 'onDrag': if (!this.state.dragging) throw new Error('onDrag called before onDragStart.'); newPosition.left = this.state.dragging.left + deltaX; @@ -325,8 +330,8 @@ export default class GridItem extends React.Component { * @param {String} handlerName Handler name to wrap. * @return {Function} Handler function. */ - onResizeHandler(handlerName:string): Function { - return (e:Event, {element, size}: {element: HTMLElement, size: Position}) => { + onResizeHandler(handlerName: string) { + return (e:Event, {node, size}: {node: HTMLElement, size: Position}) => { if (!this.props[handlerName]) return; const {cols, x, i, maxW, minW, maxH, minH} = this.props; @@ -344,11 +349,11 @@ export default class GridItem extends React.Component { this.setState({resizing: handlerName === 'onResizeStop' ? null : size}); - this.props[handlerName](i, w, h, {e, element, size}); + this.props[handlerName](i, w, h, {e, node, size}); }; } - render(): React.Element { + render(): React.Element { const {x, y, w, h, isDraggable, isResizable, useCSSTransforms} = this.props; const pos = this.calcPosition(x, y, w, h, this.state); @@ -356,17 +361,13 @@ export default class GridItem extends React.Component { // Create the child element. We clone the existing element but modify its className and style. let newChild = React.cloneElement(child, { - // Munge a classname. Use passed in classnames and resizing. - // React with merge the classNames. - className: [ - 'react-grid-item', - child.props.className || '', - this.props.className, - this.props.static ? 'static' : '', - this.state.resizing ? 'resizing' : '', - this.state.dragging ? 'react-draggable-dragging' : '', - useCSSTransforms ? 'cssTransforms' : '' - ].join(' '), + className: classNames('react-grid-item', child.props.className, this.props.className, { + static: this.props.static, + resizing: Boolean(this.state.resizing), + 'react-draggable': isDraggable, + 'react-draggable-dragging': Boolean(this.state.dragging), + cssTransforms: useCSSTransforms + }), // We can set the width and height on the child, but unfortunately we can't set the position. style: {...this.props.style, ...child.props.style, ...this.createStyle(pos)} }); diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index ca4c05616..7eb247fa0 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -1,7 +1,8 @@ // @flow import React, {PropTypes} from 'react'; import isEqual from 'lodash.isequal'; -import {autoBindHandlers, bottom, cloneLayoutItem, compact, getLayoutItem, moveElement, +import classNames from 'classnames'; +import {autoBindHandlers, bottom, childrenEqual, cloneLayoutItem, compact, getLayoutItem, moveElement, synchronizeLayoutWithChildren, validateLayout} from './utils'; import GridItem from './GridItem'; const noop = function() {}; @@ -13,6 +14,7 @@ type State = { layout: Layout, mounted: boolean, oldDragItem: ?LayoutItem, + oldLayout: ?Layout, oldResizeItem: ?LayoutItem }; // End Types @@ -54,7 +56,7 @@ export default class ReactGridLayout extends React.Component { // {x: Number, y: Number, w: Number, h: Number, i: String} layout: function (props) { var layout = props.layout; - // I hope you're setting the _grid property on the grid items + // I hope you're setting the data-grid property on the grid items if (layout === undefined) return; validateLayout(layout, 'layout'); }, @@ -65,6 +67,8 @@ export default class ReactGridLayout extends React.Component { // Margin between items [x, y] in px margin: PropTypes.arrayOf(PropTypes.number), + // Padding inside the container [x, y] in px + containerPadding: PropTypes.arrayOf(PropTypes.number), // Rows have a static height, but you can change this based on breakpoints if you like rowHeight: PropTypes.number, // Default Infinity, but you can specify a max here if you like. @@ -109,7 +113,6 @@ export default class ReactGridLayout extends React.Component { // Children must not have duplicate keys. children: function (props, propName, _componentName) { - PropTypes.node.apply(this, arguments); var children = props[propName]; // Check children keys for duplicates. Throw if found. @@ -150,22 +153,23 @@ export default class ReactGridLayout extends React.Component { this.props.cols, this.props.verticalCompact), mounted: false, oldDragItem: null, - oldResizeItem: null + oldLayout: null, + oldResizeItem: null, }; - constructor(props: typeof ReactGridLayout.prototype.props, context: any): void { + constructor(props: $PropertyType, context: any): void { super(props, context); autoBindHandlers(this, ['onDragStart', 'onDrag', 'onDragStop', 'onResizeStart', 'onResize', 'onResizeStop']); } componentDidMount() { this.setState({mounted: true}); - // Call back with layout on mount. This should be done after correcting the layout width + // Possibly call back with layout on mount. This should be done after correcting the layout width // to ensure we don't rerender with the wrong width. - this.props.onLayoutChange(this.state.layout); + this.onLayoutMaybeChanged(this.state.layout, this.props.layout); } - componentWillReceiveProps(nextProps: typeof ReactGridLayout.prototype.props) { + componentWillReceiveProps(nextProps: $PropertyType) { let newLayoutBase; // Allow parent to set layout directly. if (!isEqual(nextProps.layout, this.props.layout)) { @@ -175,7 +179,7 @@ export default class ReactGridLayout extends React.Component { // If children change, also regenerate the layout. Use our state // as the base in case because it may be more up to date than // what is in props. - else if (nextProps.children.length !== this.props.children.length) { + else if (!childrenEqual(this.props.children, nextProps.children)) { newLayoutBase = this.state.layout; } @@ -183,8 +187,9 @@ export default class ReactGridLayout extends React.Component { if (newLayoutBase) { const newLayout = synchronizeLayoutWithChildren(newLayoutBase, nextProps.children, nextProps.cols, nextProps.verticalCompact); + const oldLayout = this.state.layout; this.setState({layout: newLayout}); - this.props.onLayoutChange(newLayout); + this.onLayoutMaybeChanged(newLayout, oldLayout); } } @@ -194,7 +199,9 @@ export default class ReactGridLayout extends React.Component { */ containerHeight() { if (!this.props.autoSize) return; - return bottom(this.state.layout) * (this.props.rowHeight + this.props.margin[1]) + this.props.margin[1] + 'px'; + const nbRow = bottom(this.state.layout); + const containerPaddingY = this.props.containerPadding ? this.props.containerPadding[1] : this.props.margin[1]; + return nbRow * this.props.rowHeight + (nbRow - 1) * this.props.margin[1] + containerPaddingY * 2 + 'px'; } /** @@ -210,7 +217,7 @@ export default class ReactGridLayout extends React.Component { var l = getLayoutItem(layout, i); if (!l) return; - this.setState({oldDragItem: cloneLayoutItem(l)}); + this.setState({oldDragItem: cloneLayoutItem(l), oldLayout: this.state.layout}); this.props.onDragStart(layout, l, l, null, e, node); } @@ -265,13 +272,23 @@ export default class ReactGridLayout extends React.Component { this.props.onDragStop(layout, oldDragItem, l, null, e, node); // Set state + const newLayout = compact(layout, this.props.verticalCompact); + const {oldLayout} = this.state; this.setState({ activeDrag: null, - layout: compact(layout, this.props.verticalCompact), - oldDragItem: null + layout: newLayout, + oldDragItem: null, + oldLayout: null, }); - this.props.onLayoutChange(this.state.layout); + this.onLayoutMaybeChanged(newLayout, oldLayout); + } + + onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) { + if (!oldLayout) oldLayout = this.state.layout; + if (!isEqual(oldLayout, newLayout)) { + this.props.onLayoutChange(newLayout); + } } onResizeStart(i:string, w:number, h:number, {e, node}: ResizeEvent) { @@ -279,7 +296,10 @@ export default class ReactGridLayout extends React.Component { var l = getLayoutItem(layout, i); if (!l) return; - this.setState({oldResizeItem: cloneLayoutItem(l)}); + this.setState({ + oldResizeItem: cloneLayoutItem(l), + oldLayout: this.state.layout + }); this.props.onResizeStart(layout, l, l, null, e, node); } @@ -301,7 +321,10 @@ export default class ReactGridLayout extends React.Component { this.props.onResize(layout, oldResizeItem, l, placeholder, e, node); // Re-compact the layout and set the drag placeholder. - this.setState({layout: compact(layout, this.props.verticalCompact), activeDrag: placeholder}); + this.setState({ + layout: compact(layout, this.props.verticalCompact), + activeDrag: placeholder + }); } onResizeStop(i:string, w:number, h:number, {e, node}: ResizeEvent) { @@ -311,23 +334,26 @@ export default class ReactGridLayout extends React.Component { this.props.onResizeStop(layout, oldResizeItem, l, null, e, node); // Set state + const newLayout = compact(layout, this.props.verticalCompact); + const {oldLayout} = this.state; this.setState({ activeDrag: null, - layout: compact(layout, this.props.verticalCompact), - oldResizeItem: null + layout: newLayout, + oldResizeItem: null, + oldLayout: null }); - this.props.onLayoutChange(this.state.layout); + this.onLayoutMaybeChanged(newLayout, oldLayout); } /** * Create a placeholder object. * @return {Element} Placeholder div. */ - placeholder(): ?React.Element { + placeholder(): ?React.Element { const {activeDrag} = this.state; if (!activeDrag) return null; - const {width, cols, margin, rowHeight, maxRows, useCSSTransforms} = this.props; + const {width, cols, margin, containerPadding, rowHeight, maxRows, useCSSTransforms} = this.props; // {...this.state.activeDrag} is pretty slow, actually return ( @@ -341,6 +367,7 @@ export default class ReactGridLayout extends React.Component { containerWidth={width} cols={cols} margin={margin} + containerPadding={containerPadding || margin} maxRows={maxRows} rowHeight={rowHeight} isDraggable={false} @@ -356,12 +383,13 @@ export default class ReactGridLayout extends React.Component { * @param {Element} child React element. * @return {Element} Element wrapped in draggable and properly placed. */ - processGridItem(child: React.Element): ?React.Element { + processGridItem(child: React.Element): ?React.Element { if (!child.key) return; const l = getLayoutItem(this.state.layout, child.key); if (!l) return null; - const {width, cols, margin, rowHeight, maxRows, isDraggable, isResizable, - useCSSTransforms, draggableCancel, draggableHandle} = this.props; + const {width, cols, margin, containerPadding, rowHeight, + maxRows, isDraggable, isResizable, useCSSTransforms, + draggableCancel, draggableHandle} = this.props; const {mounted} = this.state; // Parse 'static'. Any properties defined directly on the grid item will take precedence. @@ -373,6 +401,7 @@ export default class ReactGridLayout extends React.Component { containerWidth={width} cols={cols} margin={margin} + containerPadding={containerPadding || margin} maxRows={maxRows} rowHeight={rowHeight} cancel={draggableCancel} @@ -404,17 +433,16 @@ export default class ReactGridLayout extends React.Component { ); } - render(): React.Element { + render() { const {className, style} = this.props; - const mergedClassName = `react-grid-layout ${className}`; const mergedStyle = { height: this.containerHeight(), ...style }; return ( -
    +
    {React.Children.map(this.props.children, (child) => this.processGridItem(child))} {this.placeholder()}
    diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index f14a5ed05..1a24f3d01 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -7,6 +7,7 @@ import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveL import ReactGridLayout from './ReactGridLayout'; const noop = function(){}; +const type = (obj) => Object.prototype.toString.call(obj); import type {Layout} from './utils'; type State = { @@ -37,9 +38,16 @@ export default class ResponsiveReactGridLayout extends React.Component { // layouts is an object mapping breakpoints to layouts. // e.g. {lg: Layout, md: Layout, ...} - layouts: function (props) { - React.PropTypes.object.isRequired.apply(this, arguments); - Object.keys(props.layouts).forEach((key) => validateLayout(props.layouts[key], 'layouts.' + key)); + layouts(props, propName) { + if (type(props[propName]) !== '[object Object]') { + throw new Error('Layout property must be an object. Received: ' + type(props[propName])); + } + Object.keys(props[propName]).forEach((key) => { + if (!(key in props.breakpoints)) { + throw new Error('Each key in layouts must align with a key in breakpoints.'); + } + validateLayout(props.layouts[key], 'layouts.' + key); + }); }, // The width of this component. @@ -57,7 +65,7 @@ export default class ResponsiveReactGridLayout extends React.Component { // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint. onLayoutChange: React.PropTypes.func, - // Calls back with (containerWidth, margin, cols) + // Calls back with (containerWidth, margin, cols, containerPadding) onWidthChange: React.PropTypes.func }; @@ -94,8 +102,8 @@ export default class ResponsiveReactGridLayout extends React.Component { if ( nextProps.width != this.props.width || nextProps.breakpoint !== this.props.breakpoint - || nextProps.breakpoints !== this.props.breakpoints - || nextProps.cols !== this.props.cols + || !isEqual(nextProps.breakpoints, this.props.breakpoints) + || !isEqual(nextProps.cols, this.props.cols) ) { this.onWidthChange(nextProps); } @@ -108,58 +116,56 @@ export default class ResponsiveReactGridLayout extends React.Component { // if one does not exist. const newLayout = findOrGenerateResponsiveLayout( nextProps.layouts, nextProps.breakpoints, - breakpoint, breakpoint, cols, nextProps.verticalLayout + breakpoint, breakpoint, cols, nextProps.verticalCompact ); this.setState({layout: newLayout}); } } // wrap layouts so we do not need to pass layouts to child - onLayoutChange = (layout) => { + onLayoutChange = (layout: Layout) => { this.props.onLayoutChange(layout, {...this.props.layouts, [this.state.breakpoint]: layout}); }; - onLayoutChange: (layout: Layout) => void; /** * When the width changes work through breakpoints and reset state with the new width & breakpoint. * Width changes are necessary to figure out the widget widths. */ onWidthChange(nextProps: typeof ResponsiveReactGridLayout.prototype.props) { - const {breakpoints, verticalLayout, verticalCompact, cols} = nextProps; + const {breakpoints, cols, layouts, verticalCompact} = nextProps; const newBreakpoint = nextProps.breakpoint || getBreakpointFromWidth(nextProps.breakpoints, nextProps.width); const lastBreakpoint = this.state.breakpoint; // Breakpoint change if (lastBreakpoint !== newBreakpoint || this.props.breakpoints !== breakpoints || this.props.cols !== cols) { + // Preserve the current layout if the current breakpoint is not present in the next layouts. + if (!(lastBreakpoint in layouts)) layouts[lastBreakpoint] = cloneLayout(this.state.layout); - // Store the current layout - const layouts = nextProps.layouts; - layouts[lastBreakpoint] = cloneLayout(this.state.layout); - - // Find or generate a new one. + // Find or generate a new layout. const newCols: number = getColsFromBreakpoint(newBreakpoint, cols); let layout = findOrGenerateResponsiveLayout(layouts, breakpoints, newBreakpoint, - lastBreakpoint, newCols, verticalLayout); + lastBreakpoint, newCols, verticalCompact); // This adds missing items. layout = synchronizeLayoutWithChildren(layout, nextProps.children, newCols, verticalCompact); - // Store this new layout as well. + // Store the new layout. layouts[newBreakpoint] = layout; // callbacks this.props.onLayoutChange(layout, layouts); this.props.onBreakpointChange(newBreakpoint, newCols); - this.props.onWidthChange(nextProps.width, nextProps.margin, newCols); + this.props.onWidthChange(nextProps.width, nextProps.margin, newCols, nextProps.containerPadding); this.setState({breakpoint: newBreakpoint, layout: layout, cols: newCols}); } } - render(): React.Element { - const {breakpoint, breakpoints, cols, layouts, onBreakpointChange, - onLayoutChange, onWidthChange, ...other} = this.props; + render() { + // eslint-disable-next-line no-unused-vars + const {breakpoint, breakpoints, cols, layouts, onBreakpointChange, onLayoutChange, onWidthChange, + ...other} = this.props; return ( class extends React.Component { +type ProviderT = (ComposedComponent: ReactClass) => ReactClass; +const WidthProvider: ProviderT = (ComposedComponent) => class extends React.Component { static defaultProps = { measureBeforeMount: false @@ -24,12 +23,13 @@ export default (ComposedComponent: ReactClass): ReactClass => class extends Reac }; state: State = { - mounted: false, width: 1280 }; + mounted: boolean = false; + componentDidMount() { - this.setState({mounted: true}); + this.mounted = true; window.addEventListener('resize', this.onWindowResize); // Call to properly set the breakpoint and resize the elements. @@ -39,16 +39,23 @@ export default (ComposedComponent: ReactClass): ReactClass => class extends Reac } componentWillUnmount() { + this.mounted = false; window.removeEventListener('resize', this.onWindowResize); } - onWindowResize = (_event: Event, cb: ?Function) => { + onWindowResize = (_event: ?Event) => { + if (!this.mounted) return; const node = ReactDOM.findDOMNode(this); - this.setState({width: node.offsetWidth}, cb); + this.setState({width: node.offsetWidth}); } render() { - if (this.props.measureBeforeMount && !this.state.mounted) return
    ; + if (this.props.measureBeforeMount && !this.mounted) { + return
    ; + } + return ; } }; + +export default WidthProvider; diff --git a/lib/utils.js b/lib/utils.js index edc5c76bc..86dc9567a 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,4 +1,6 @@ // @flow +import isEqual from 'lodash.isequal'; +import React from 'react'; export type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string}; export type LayoutItem = LayoutItemRequired & {minW?: number, minH?: number, maxW?: number, maxH?: number, @@ -15,7 +17,7 @@ export type DragCallbackData = { export type DragEvent = {e: Event} & DragCallbackData; export type Size = {width: number, height: number}; export type ResizeEvent = {e: Event, node: HTMLElement, size: Size}; -import type React from 'react'; +export type ReactChildren = React.Element[] | React.Element | {[key: string] : React.Element}; const isProduction = process.env.NODE_ENV === 'production'; @@ -53,10 +55,16 @@ export function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem { }; } +/** + * Comparing React `children` is a bit difficult. This is a good way to compare them. + * This will catch differences in keys, order, and length. + */ +export function childrenEqual(a: ReactChildren, b: ReactChildren): boolean { + return isEqual(React.Children.map(a, c => c.key), React.Children.map(b, c => c.key)); +} + /** * Given two layoutitems, check if they collide. - * - * @return {Boolean} True if colliding. */ export function collides(l1: LayoutItem, l2: LayoutItem): boolean { if (l1 === l2) return false; // same element @@ -85,7 +93,7 @@ export function compact(layout: Layout, verticalCompact: boolean): Layout { const out = Array(layout.length); for (let i = 0, len = sorted.length; i < len; i++) { - let l = sorted[i]; + let l = cloneLayoutItem(sorted[i]); // Don't move static elements if (!l.static) { @@ -97,7 +105,7 @@ export function compact(layout: Layout, verticalCompact: boolean): Layout { } // Add to output array to make sure they still come out in the right order. - out[layout.indexOf(l)] = l; + out[layout.indexOf(sorted[i])] = l; // Clear moved flag, if it exists. l.moved = false; @@ -111,6 +119,11 @@ export function compact(layout: Layout, verticalCompact: boolean): Layout { */ export function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem { if (verticalCompact) { + // Bottom 'y' possible is the bottom of the layout. + // This allows you to do nice stuff like specify {y: Infinity} + // This is here because the layout must be sorted in order to get the correct bottom `y`. + l.y = Math.min(bottom(compareWith), l.y); + // Move the element up as far as it can go without colliding. while (l.y > 0 && !getFirstCollision(compareWith, l)) { l.y--; @@ -202,7 +215,7 @@ export function getStatics(layout: Layout): Array { * @param {Number} [x] X position in grid units. * @param {Number} [y] Y position in grid units. * @param {Boolean} [isUserAction] If true, designates that the item we're moving is - * being dragged/resized by th euser. + * being dragged/resized by the user. */ export function moveElement(layout: Layout, l: LayoutItem, x: ?number, y: ?number, isUserAction: ?boolean): Layout { if (l.static) return layout; @@ -278,7 +291,7 @@ export function moveElementAwayFromCollision(layout: Layout, collidesWith: Layou } // Previously this was optimized to move below the collision directly, but this can cause problems - // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order. + // with cascading moves, as an item may actually leapfrog a collision and cause a reversal in order. return moveElement(layout, itemToMove, undefined, itemToMove.y + 1); } @@ -327,6 +340,9 @@ export function sortLayoutItemsByRowCol(layout: Layout): Layout { return [].concat(layout).sort(function(a, b) { if (a.y > b.y || (a.y === b.y && a.x > b.x)) { return 1; + } else if (a.y === b.y && a.x === b.x) { + // Without this, we can get different sort results in IE vs. Chrome/FF + return 0; } return -1; }); @@ -341,47 +357,37 @@ export function sortLayoutItemsByRowCol(layout: Layout): Layout { * @param {Boolean} verticalCompact Whether or not to compact the layout vertically. * @return {Array} Working layout. */ -export function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array|React.Element, +export function synchronizeLayoutWithChildren(initialLayout: Layout, children: ReactChildren, cols: number, verticalCompact: boolean): Layout { - // ensure 'children' is always an array - if (!Array.isArray(children)) { - children = [children]; - } initialLayout = initialLayout || []; // Generate one layout item per child. let layout: Layout = []; - for (let i = 0, len = children.length; i < len; i++) { - let newItem; - const child = children[i]; - + React.Children.forEach(children, (child: React.Element, i: number) => { // Don't overwrite if it already exists. const exists = getLayoutItem(initialLayout, child.key || "1" /* FIXME satisfies Flow */); if (exists) { - newItem = cloneLayoutItem(exists); + layout[i] = cloneLayoutItem(exists); } else { - const g = child.props._grid; + if (!isProduction && child.props._grid) { + console.warn('`_grid` properties on children have been deprecated as of React 15.2. ' + // eslint-disable-line + 'Please use `data-grid` or add your properties directly to the `layout`.'); + } + const g = child.props['data-grid'] || child.props._grid; - // Hey, this item has a _grid property, use it. + // Hey, this item has a data-grid property, use it. if (g) { if (!isProduction) { validateLayout([g], 'ReactGridLayout.children'); } - // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout. - // This allows you to do nice stuff like specify {y: Infinity} - if (verticalCompact) { - newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key}); - } else { - newItem = cloneLayoutItem({...g, y: g.y, i: child.key}); - } - } - // Nothing provided: ensure this is added to the bottom - else { - newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || "1"}); + + layout[i] = cloneLayoutItem({...g, i: child.key}); + } else { + // Nothing provided: ensure this is added to the bottom + layout[i] = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || "1"}); } } - layout[i] = newItem; - } + }); // Correct the layout. layout = correctBounds(layout, {cols: cols}); diff --git a/package.json b/package.json index 175cea689..177e8bc0a 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { "name": "react-grid-layout", - "version": "0.12.6", + "version": "0.14.1", "description": "A draggable and resizable grid layout with responsive breakpoints, for React.", "main": "index.js", "scripts": { "lint": "make lint", - "test": "echo \"Error: no test specified\" && exit 1", + "test": "make test", "build": "make build", "build-example": "make build-example", "dev": "make dev", - "prepublish": "make build", + "prepublishOnly": "make build", "validate": "npm ls" }, "repository": { @@ -33,6 +33,7 @@ }, "homepage": "https://github.com/STRML/react-grid-layout", "dependencies": { + "classnames": "^2.2.5", "lodash.isequal": "^4.0.0", "react-draggable": "^2.1.1", "react-resizable": "^1.4.0" @@ -44,23 +45,24 @@ "devDependencies": { "babel-cli": "^6.5.1", "babel-core": "^6.x", - "babel-eslint": "^4.1.8", + "babel-eslint": "^7.1.1", + "babel-jest": "^18.0.0", "babel-loader": "^6.x", "babel-plugin-react-transform": "^2.0.0", - "babel-plugin-transform-flow-comments": "^6.7.0", "babel-plugin-transform-react-constant-elements": "^6.5.0", "babel-plugin-transform-react-inline-elements": "^6.6.5", "babel-plugin-typecheck": "^3.6.1", "babel-preset-es2015": "^6.5.0", - "babel-preset-es2015-loose": "^7.0.0", "babel-preset-react": "^6.5.0", "babel-preset-stage-1": "^6.5.0", - "css-loader": "^0.23.1", + "css-loader": "^0.26.1", "ejs": "^2.4.1", - "eslint": "^1.10.3", - "eslint-plugin-react": "^3.16.1", + "eslint": "^3.11.1", + "eslint-plugin-react": "^6.8.0", "exports-loader": "^0.6.3", - "imports-loader": "^0.6.5", + "flow-bin": "^0.39.0", + "imports-loader": "^0.7.0", + "jest-cli": "^18.0.0", "jsxhint": "^0.15.1", "lodash": "^4.3.0", "pre-commit": "^1.1.2", @@ -71,8 +73,8 @@ "react-transform-hmr": "^1.0.2", "style-loader": "^0.13.0", "valiquire": "^0.3.0", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" + "webpack": "^2.2.1", + "webpack-dev-server": "^2.3.0" }, "publishConfig": { "registry": "https://registry.npmjs.org" diff --git a/test/examples/10-dynamic-min-max-wh.jsx b/test/examples/10-dynamic-min-max-wh.jsx index aa181c43c..925d2f93c 100644 --- a/test/examples/10-dynamic-min-max-wh.jsx +++ b/test/examples/10-dynamic-min-max-wh.jsx @@ -34,7 +34,7 @@ var DynamicMinMaxLayout = React.createClass({ var layout = this.generateLayout(); return _.map(layout, function(l) { return ( -
    +
    {l.i}
    ); diff --git a/test/examples/4-grid-property.jsx b/test/examples/4-grid-property.jsx index 39479dbee..a701af71c 100644 --- a/test/examples/4-grid-property.jsx +++ b/test/examples/4-grid-property.jsx @@ -28,7 +28,7 @@ var GridPropertyLayout = React.createClass({ // Generate items with properties from the layout, rather than pass the layout directly var layout = this.generateLayout(); return _.map(_.range(this.props.items), function(i) { - return (
    {i}
    ); + return (
    {i}
    ); }); }, diff --git a/test/examples/5-static-elements.jsx b/test/examples/5-static-elements.jsx index 13c104379..b753508a3 100644 --- a/test/examples/5-static-elements.jsx +++ b/test/examples/5-static-elements.jsx @@ -23,9 +23,16 @@ var StaticElementsLayout = React.createClass({ render() { return ( -
    1
    -
    2 - Static
    -
    3
    +
    1
    +
    2 - Static
    +
    3
    +
    + 4 - Draggable with Handle +

    + [DRAG HERE] +

    +
    +
    ); } diff --git a/test/examples/6-dynamic-add-remove.jsx b/test/examples/6-dynamic-add-remove.jsx index fc08ceadd..c0dbbdb72 100644 --- a/test/examples/6-dynamic-add-remove.jsx +++ b/test/examples/6-dynamic-add-remove.jsx @@ -38,7 +38,7 @@ var AddRemoveLayout = React.createClass({ }; var i = el.add ? '+' : el.i; return ( -
    +
    {el.add ? Add + : {i}} diff --git a/test/examples/7-localstorage.jsx b/test/examples/7-localstorage.jsx index 9daf37a7a..875795b4e 100644 --- a/test/examples/7-localstorage.jsx +++ b/test/examples/7-localstorage.jsx @@ -48,11 +48,11 @@ var LocalStorageLayout = React.createClass({ {...this.props} layout={this.state.layout} onLayoutChange={this.onLayoutChange}> -
    1
    -
    2
    -
    3
    -
    4
    -
    5
    +
    1
    +
    2
    +
    3
    +
    4
    +
    5
    ); diff --git a/test/examples/8-localstorage-responsive.jsx b/test/examples/8-localstorage-responsive.jsx index 1b0b1edc9..c50e928af 100644 --- a/test/examples/8-localstorage-responsive.jsx +++ b/test/examples/8-localstorage-responsive.jsx @@ -45,11 +45,11 @@ var ResponsiveLocalStorageLayout = React.createClass({ {...this.props} layouts={this.state.layouts} onLayoutChange={this.onLayoutChange}> -
    1
    -
    2
    -
    3
    -
    4
    -
    5
    +
    1
    +
    2
    +
    3
    +
    4
    +
    5
    ); diff --git a/test/examples/9-min-max-wh.jsx b/test/examples/9-min-max-wh.jsx index 4e439c2c6..ac1e1b692 100644 --- a/test/examples/9-min-max-wh.jsx +++ b/test/examples/9-min-max-wh.jsx @@ -29,7 +29,7 @@ var MinMaxLayout = React.createClass({ return _.map(layout, function(l) { var mins = [l.minW, l.minH], maxes = [l.maxW, l.maxH]; return ( -
    +
    {l.i}
    {'min:' + mins + ' - max:' + maxes}
    diff --git a/test/test-hook.jsx b/test/test-hook.jsx index 1c16809bd..9dcbec3b6 100644 --- a/test/test-hook.jsx +++ b/test/test-hook.jsx @@ -1,7 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; -require('style!css!../css/styles.css'); -require('style!css!../examples/example-styles.css'); +require('style-loader!css-loader!../css/styles.css'); +require('style-loader!css-loader!../examples/example-styles.css'); typeof window !== "undefined" && (window.React = React); // for devtools module.exports = function(Layout) { diff --git a/webpack-dev-server.config.js b/webpack-dev-server.config.js index f8a932af1..914fbb940 100644 --- a/webpack-dev-server.config.js +++ b/webpack-dev-server.config.js @@ -1,14 +1,11 @@ +const path = require('path'); var webpack = require("webpack"); module.exports = { context: __dirname, - entry: [ - "webpack-dev-server/client?http://localhost:4002", - "webpack/hot/dev-server", - "./test/dev-hook.jsx", - ], + entry: "./test/dev-hook.jsx", output: { - path: __dirname + "/dist", + path: path.join(__dirname, "dist"), filename: "bundle.js", sourceMapFilename: "[file].map", }, @@ -35,20 +32,22 @@ module.exports = { ] }, plugins: [ - new webpack.optimize.DedupePlugin(), new webpack.DefinePlugin({ "process.env": { NODE_ENV: JSON.stringify('development') } }), ], - debug: true, - devtool: "#cheap-module-source-map", - publicPath: '/examples/', + devtool: "eval", + devServer: { + publicPath: '/examples/', + compress: true, + port: 4002 + }, resolve: { - extensions: ["", ".webpack.js", ".web.js", ".js", ".jsx"], + extensions: [".webpack.js", ".web.js", ".js", ".jsx"], alias: { - 'react-grid-layout': __dirname + '/index-dev.js' + 'react-grid-layout': path.join(__dirname, '/index-dev.js') } } }; diff --git a/webpack-examples.config.js b/webpack-examples.config.js index 4b6876d30..75826d137 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -30,13 +30,12 @@ module.exports = { NODE_ENV: JSON.stringify('production') } }), - new webpack.optimize.CommonsChunkPlugin( - "commons", "commons.js"), - new webpack.optimize.OccurenceOrderPlugin(), - new webpack.optimize.DedupePlugin() + new webpack.optimize.CommonsChunkPlugin({ + name: 'commons', filename: 'commons.js' + }) ], resolve: { - extensions: ["", ".webpack.js", ".web.js", ".js", ".jsx"], + extensions: [".webpack.js", ".web.js", ".js", ".jsx"], alias: {'react-grid-layout': __dirname + '/index-dev.js'} } }; diff --git a/webpack.config.js b/webpack.config.js index 0b52d6066..0ed45393e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -40,12 +40,10 @@ module.exports = { NODE_ENV: JSON.stringify("production") } }), - new webpack.optimize.OccurenceOrderPlugin(), - new webpack.optimize.DedupePlugin(), // Compress, but don't print warnings to console new webpack.optimize.UglifyJsPlugin({compress: {warnings: false}}) ], resolve: { - extensions: ["", ".webpack.js", ".web.js", ".js", ".jsx"] + extensions: [".webpack.js", ".web.js", ".js", ".jsx"] } }; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..19b40b570 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5481 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abab@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + +abbrev@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +accepts@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +acorn-dynamic-import@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.1.tgz#23f671eb6e650dab277fef477c321b1178a8cca2" + dependencies: + acorn "^4.0.3" + +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + +acorn-jsx@^3.0.0, acorn-jsx@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + +acorn@^3.0.4, acorn@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.1, acorn@^4.0.3, acorn@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" + +ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.2.0.tgz#676c4f087bfe1e8b12dca6fda2f3c74f417b099c" + +ajv@^4.7.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.0.tgz#7ae6169180eb199192a8b9a19fd0f47fc9ac8764" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^1.1.0, ansi-escapes@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansicolors@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +append-transform@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.3.0.tgz#d6933ce4a85f09445d9ccc4cc119051b7381a813" + +aproba@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +are-we-there-yet@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + +asn1.js@^4.0.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +ast-types@0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.2.tgz#2cc19979d15c655108bf565323b8e7ee38751f6b" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@1.x, async@^1.4.0, async@^1.4.2, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.2: + version "2.1.5" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" + dependencies: + lodash "^4.14.0" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.3.1: + version "6.5.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.5.4.tgz#1386eb6708ccff36aefff70adc694ecfd60af1b0" + dependencies: + browserslist "~1.4.0" + caniuse-db "^1.0.30000597" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.6" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + +babel-cli@^6.5.1: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186" + dependencies: + babel-core "^6.18.0" + babel-polyfill "^6.16.0" + babel-register "^6.18.0" + babel-runtime "^6.9.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^5.0.5" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.0.0" + +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^2.0.0" + +babel-core@^6.0.0, babel-core@^6.18.0, babel-core@^6.x: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724" + dependencies: + babel-code-frame "^6.20.0" + babel-generator "^6.21.0" + babel-helpers "^6.16.0" + babel-messages "^6.8.0" + babel-register "^6.18.0" + babel-runtime "^6.20.0" + babel-template "^6.16.0" + babel-traverse "^6.21.0" + babel-types "^6.21.0" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-eslint@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.1.1.tgz#8a6a884f085aa7060af69cfc77341c2f99370fb2" + dependencies: + babel-code-frame "^6.16.0" + babel-traverse "^6.15.0" + babel-types "^6.15.0" + babylon "^6.13.0" + lodash.pickby "^4.6.0" + +babel-generator@^6.18.0, babel-generator@^6.21.0, babel-generator@^6.7.7: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.21.0.tgz#605f1269c489a1c75deeca7ea16d43d4656c8494" + dependencies: + babel-messages "^6.8.0" + babel-runtime "^6.20.0" + babel-types "^6.21.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + +babel-helper-bindify-decorators@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.18.0.tgz#fc00c573676a6e702fffa00019580892ec8780a5" + dependencies: + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-builder-binary-assignment-operator-visitor@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.18.0.tgz#8ae814989f7a53682152e3401a04fabd0bb333a6" + dependencies: + babel-helper-explode-assignable-expression "^6.18.0" + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-builder-react-jsx@^6.8.0: + version "6.21.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.21.1.tgz#c4a24208655be9dc1cccf14d366da176f20645e4" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.21.0" + esutils "^2.0.0" + lodash "^4.2.0" + +babel-helper-call-delegate@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-explode-assignable-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.18.0.tgz#14b8e8c2d03ad735d4b20f1840b24cd1f65239fe" + dependencies: + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-explode-class@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.18.0.tgz#c44f76f4fa23b9c5d607cbac5d4115e7a76f62cb" + dependencies: + babel-helper-bindify-decorators "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" + dependencies: + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-get-function-arity@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.18.0.tgz#a5b19695fd3f9cdfc328398b47dafcd7094f9f24" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-hoist-variables@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.18.0.tgz#a835b5ab8b46d6de9babefae4d98ea41e866b82a" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-optimise-call-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-regex@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-generator@^6.16.2: + version "6.20.3" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.20.3.tgz#9dd3b396f13e35ef63e538098500adc24c63c4e7" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.20.0" + babel-template "^6.16.0" + babel-traverse "^6.20.0" + babel-types "^6.20.0" + +babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" + dependencies: + babel-helper-optimise-call-expression "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helpers@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" + dependencies: + babel-runtime "^6.0.0" + babel-template "^6.16.0" + +babel-jest@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-18.0.0.tgz#17ebba8cb3285c906d859e8707e4e79795fb65e3" + dependencies: + babel-core "^6.0.0" + babel-plugin-istanbul "^3.0.0" + babel-preset-jest "^18.0.0" + +babel-loader@^6.x: + version "6.2.10" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.2.10.tgz#adefc2b242320cd5d15e65b31cea0e8b1b02d4b0" + dependencies: + find-cache-dir "^0.1.1" + loader-utils "^0.2.11" + mkdirp "^0.5.1" + object-assign "^4.0.1" + +babel-messages@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-check-es2015-constants@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-istanbul@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-3.0.0.tgz#da7324520ae0b8a44b6a078e72e883374a9fab76" + dependencies: + find-up "^1.1.2" + istanbul-lib-instrument "^1.1.4" + object-assign "^4.1.0" + test-exclude "^3.2.2" + +babel-plugin-jest-hoist@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-18.0.0.tgz#4150e70ecab560e6e7344adc849498072d34e12a" + +babel-plugin-react-transform@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz#515bbfa996893981142d90b1f9b1635de2995109" + dependencies: + lodash "^4.6.1" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.3.13: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.3.13: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.20.0.tgz#442835e19179f45b87e92d477d70b9f1f18b5c4f" + +babel-plugin-transform-async-generator-functions@^6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.17.0.tgz#d0b5a2b2f0940f2b245fa20a00519ed7bc6cae54" + dependencies: + babel-helper-remap-async-to-generator "^6.16.2" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-async-to-generator@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" + dependencies: + babel-helper-remap-async-to-generator "^6.16.0" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-class-constructor-call@^6.3.13: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.18.0.tgz#80855e38a1ab47b8c6c647f8ea1bcd2c00ca3aae" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-class-properties@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.19.0.tgz#1274b349abaadc835164e2004f4a2444a2788d5f" + dependencies: + babel-helper-function-name "^6.18.0" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.9.1" + babel-template "^6.15.0" + +babel-plugin-transform-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz#82d65c1470ae83e2d13eebecb0a1c2476d62da9d" + dependencies: + babel-helper-define-map "^6.8.0" + babel-helper-explode-class "^6.8.0" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-types "^6.13.0" + +babel-plugin-transform-es2015-arrow-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoping@^6.18.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.21.0.tgz#e840687f922e70fb2c42bb13501838c174a115ed" + dependencies: + babel-runtime "^6.20.0" + babel-template "^6.15.0" + babel-traverse "^6.21.0" + babel-types "^6.21.0" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" + dependencies: + babel-helper-define-map "^6.18.0" + babel-helper-function-name "^6.18.0" + babel-helper-optimise-call-expression "^6.18.0" + babel-helper-replace-supers "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-template "^6.14.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-computed-properties@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" + dependencies: + babel-helper-define-map "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-destructuring@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.19.0.tgz#ff1d911c4b3f4cab621bd66702a869acd1900533" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-for-of@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-function-name@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" + dependencies: + babel-helper-function-name "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.9.0" + +babel-plugin-transform-es2015-literals@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-modules-amd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-modules-commonjs@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" + dependencies: + babel-plugin-transform-strict-mode "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.19.0.tgz#50438136eba74527efa00a5b0fefaf1dc4071da6" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.11.6" + babel-template "^6.14.0" + +babel-plugin-transform-es2015-modules-umd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-object-super@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" + dependencies: + babel-helper-replace-supers "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-parameters@^6.18.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.21.0.tgz#46a655e6864ef984091448cdf024d87b60b2a7d8" + dependencies: + babel-helper-call-delegate "^6.18.0" + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.9.0" + babel-template "^6.16.0" + babel-traverse "^6.21.0" + babel-types "^6.21.0" + +babel-plugin-transform-es2015-shorthand-properties@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-spread@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-sticky-regex@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-template-literals@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-unicode-regex@^6.3.13: + version "6.11.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.8.0" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-export-extensions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.8.0.tgz#fa80ff655b636549431bfd38f6b817bd82e47f5b" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-flow-strip-types@^6.3.13: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.21.0.tgz#2eea3f8b5bb234339b47283feac155cfb237b948" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-object-rest-spread@^6.16.0: + version "6.20.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.20.2.tgz#e816c55bba77b14c16365d87e2ae48c8fd18fc2e" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.20.0" + +babel-plugin-transform-react-constant-elements@^6.5.0: + version "6.9.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.9.1.tgz#125b86d96cb322e2139b607fd749ad5fbb17f005" + dependencies: + babel-runtime "^6.9.1" + +babel-plugin-transform-react-display-name@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.8.0.tgz#f7a084977383d728bdbdc2835bba0159577f660e" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-react-inline-elements@^6.6.5: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-inline-elements/-/babel-plugin-transform-react-inline-elements-6.8.0.tgz#fc2d8fec1f2f87e5c4961ac367610039f325bbe6" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-react-jsx-self@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.11.0.tgz#605c9450c1429f97a930f7e1dfe3f0d9d0dbd0f4" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.9.0" + +babel-plugin-transform-react-jsx-source@^6.3.13: + version "6.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.9.0.tgz#af684a05c2067a86e0957d4f343295ccf5dccf00" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.9.0" + +babel-plugin-transform-react-jsx@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.8.0.tgz#94759942f70af18c617189aa7f3593f1644a71ab" + dependencies: + babel-helper-builder-react-jsx "^6.8.0" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-regenerator@^6.16.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.21.0.tgz#75d0c7e7f84f379358f508451c68a2c5fa5a9703" + dependencies: + regenerator-transform "0.9.8" + +babel-plugin-transform-strict-mode@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-plugin-typecheck@^3.6.1: + version "3.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-typecheck/-/babel-plugin-typecheck-3.9.0.tgz#0edac7573ae24ee58c6f91319f574bc5124b0f0f" + dependencies: + babel-generator "^6.7.7" + +babel-polyfill@^6.16.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7" + dependencies: + babel-runtime "^6.20.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-es2015@^6.5.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" + dependencies: + babel-plugin-check-es2015-constants "^6.3.13" + babel-plugin-transform-es2015-arrow-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoping "^6.18.0" + babel-plugin-transform-es2015-classes "^6.18.0" + babel-plugin-transform-es2015-computed-properties "^6.3.13" + babel-plugin-transform-es2015-destructuring "^6.18.0" + babel-plugin-transform-es2015-duplicate-keys "^6.6.0" + babel-plugin-transform-es2015-for-of "^6.18.0" + babel-plugin-transform-es2015-function-name "^6.9.0" + babel-plugin-transform-es2015-literals "^6.3.13" + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-plugin-transform-es2015-modules-systemjs "^6.18.0" + babel-plugin-transform-es2015-modules-umd "^6.18.0" + babel-plugin-transform-es2015-object-super "^6.3.13" + babel-plugin-transform-es2015-parameters "^6.18.0" + babel-plugin-transform-es2015-shorthand-properties "^6.18.0" + babel-plugin-transform-es2015-spread "^6.3.13" + babel-plugin-transform-es2015-sticky-regex "^6.3.13" + babel-plugin-transform-es2015-template-literals "^6.6.0" + babel-plugin-transform-es2015-typeof-symbol "^6.18.0" + babel-plugin-transform-es2015-unicode-regex "^6.3.13" + babel-plugin-transform-regenerator "^6.16.0" + +babel-preset-jest@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-18.0.0.tgz#84faf8ca3ec65aba7d5e3f59bbaed935ab24049e" + dependencies: + babel-plugin-jest-hoist "^18.0.0" + +babel-preset-react@^6.5.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.16.0.tgz#aa117d60de0928607e343c4828906e4661824316" + dependencies: + babel-plugin-syntax-flow "^6.3.13" + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-flow-strip-types "^6.3.13" + babel-plugin-transform-react-display-name "^6.3.13" + babel-plugin-transform-react-jsx "^6.3.13" + babel-plugin-transform-react-jsx-self "^6.11.0" + babel-plugin-transform-react-jsx-source "^6.3.13" + +babel-preset-stage-1@^6.5.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.16.0.tgz#9d31fbbdae7b17c549fd3ac93e3cf6902695e479" + dependencies: + babel-plugin-transform-class-constructor-call "^6.3.13" + babel-plugin-transform-export-extensions "^6.3.13" + babel-preset-stage-2 "^6.16.0" + +babel-preset-stage-2@^6.16.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.18.0.tgz#9eb7bf9a8e91c68260d5ba7500493caaada4b5b5" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.18.0" + babel-plugin-transform-decorators "^6.13.0" + babel-preset-stage-3 "^6.17.0" + +babel-preset-stage-3@^6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz#b6638e46db6e91e3f889013d8ce143917c685e39" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.3.13" + babel-plugin-transform-async-generator-functions "^6.17.0" + babel-plugin-transform-async-to-generator "^6.16.0" + babel-plugin-transform-exponentiation-operator "^6.3.13" + babel-plugin-transform-object-rest-spread "^6.16.0" + +babel-register@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" + dependencies: + babel-core "^6.18.0" + babel-runtime "^6.11.6" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" + dependencies: + babel-runtime "^6.9.0" + babel-traverse "^6.16.0" + babel-types "^6.16.0" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.15.0, babel-traverse@^6.16.0, babel-traverse@^6.18.0, babel-traverse@^6.20.0, babel-traverse@^6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.21.0.tgz#69c6365804f1a4f69eb1213f85b00a818b8c21ad" + dependencies: + babel-code-frame "^6.20.0" + babel-messages "^6.8.0" + babel-runtime "^6.20.0" + babel-types "^6.21.0" + babylon "^6.11.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.13.0, babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.20.0, babel-types@^6.21.0, babel-types@^6.8.0, babel-types@^6.9.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2" + dependencies: + babel-runtime "^6.20.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.11.0, babylon@^6.13.0: + version "6.14.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" + +balanced-match@^0.4.1, balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +base62@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/base62/-/base62-1.1.2.tgz#22ced6a49913565bc0b8d9a11563a465c084124c" + +base64-js@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" + +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +bcrypt-pbkdf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^2.9.14: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.7.tgz#6677fa5e4901bdbf9c9ec2a748e28dca407a9bfc" + +browser-resolve@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.4.0.tgz#9cfdcf5384d9158f5b70da2aa00b30e8ff019049" + dependencies: + caniuse-db "^1.0.30000539" + +bser@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" + dependencies: + node-int64 "^0.4.0" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz#6f22003baacf003ccd287afe6872151fddc58579" + +bytes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000597: + version "1.0.30000600" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000600.tgz#2d0892f77eebb399c3c17b3ecb72da7b8740f31f" + +cardinal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" + dependencies: + ansicolors "~0.2.1" + redeyed "~1.0.0" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@^1.0.0, chokidar@^1.4.3, chokidar@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +ci-info@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" + +cipher-base@^1.0.0, cipher-base@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" + dependencies: + inherits "^2.0.1" + +circular-json@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +clap@^1.0.9: + version "1.1.2" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed" + dependencies: + chalk "^1.1.3" + +classnames@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-usage@^0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/cli-usage/-/cli-usage-0.1.4.tgz#7c01e0dc706c234b39c933838c8e20b2175776e2" + dependencies: + marked "^0.3.6" + marked-terminal "^1.6.2" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cli@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" + dependencies: + exit "0.1.2" + glob "^7.1.1" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.3.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.8.2.tgz#be868184d7c8631766d54e7078e2672d7c7e3339" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.5.0, commander@^2.8.1, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +commoner@^0.10.1: + version "0.10.8" + resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" + dependencies: + commander "^2.5.0" + detective "^4.3.1" + glob "^5.0.15" + graceful-fs "^4.1.2" + iconv-lite "^0.4.5" + mkdirp "^0.5.0" + private "^0.1.6" + q "^1.1.2" + recast "^0.11.17" + +compressible@~2.0.8: + version "2.0.9" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425" + dependencies: + mime-db ">= 1.24.0 < 2" + +compression@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" + dependencies: + accepts "~1.3.3" + bytes "2.3.0" + compressible "~2.0.8" + debug "~2.2.0" + on-headers "~1.0.1" + vary "~1.1.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.4.6, concat-stream@^1.4.7: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + +console-browserify@1.1.x, console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" + +content-type-parser@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" + +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + +convert-source-map@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^1.0.0" + sha.js "^2.3.6" + +create-hmac@^1.1.0, create-hmac@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" + dependencies: + create-hash "^1.1.0" + inherits "^2.0.1" + +cross-spawn@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.0.1.tgz#a3bbb302db2297cbea3c04edf36941f4613aa399" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.1.tgz#2ba7f20131b93597496b3e9bb500785a49cd29ea" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.7.0" + cssnano ">=2.6.1 <4" + loader-utils "~0.2.2" + lodash.camelcase "^4.3.0" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + source-list-map "^0.1.4" + +css-selector-tokenizer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.9.1" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.9.1.tgz#41422bb5390d85a94ad4db03cc1a188bf68744fe" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.2.1.tgz#51fbb5347e50e81e6ed51668a48490ae6fe2afe2" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3" + +"cssstyle@>= 0.2.36 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + +d@^0.1.1, d@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" + dependencies: + es5-ext "~0.10.2" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@^2.1.1, debug@^2.2.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.4.5.tgz#34c7b12a1ca96674428f41fe92c49b4ce7cd0607" + dependencies: + ms "0.7.2" + +debug@~2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.1.3.tgz#ce8ab1b5ee8fbee2bfa3b633cab93d366b63418e" + dependencies: + ms "0.7.0" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detective@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.3.2.tgz#77697e2e7947ac3fe7c8e26a6d6f115235afa91c" + dependencies: + acorn "^3.1.0" + defined "^1.0.0" + +detective@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-0.2.1.tgz#9ce92601fd223810c29432ad034f8c62d8b8654f" + dependencies: + esprima "~0.9.9" + +diff@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.1.0.tgz#9406c73a401e6c2b3ba901c5e2c44eb6a60c5385" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + +domutils@1.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +ejs@^2.4.1: + version "2.5.5" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.5.tgz#6ef4e954ea7dcf54f66aad2fe7aa421932d9ed77" + +elliptic@^6.0.0: + version "6.3.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +enhanced-resolve@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.5" + +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +"errno@>=0.1.1 <0.2.0-0", errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7: + version "0.10.12" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" + dependencies: + d "^0.1.1" + es5-ext "^0.10.7" + es6-symbol "3" + +es6-map@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + es6-iterator "2" + es6-set "~0.1.3" + es6-symbol "~3.1.0" + event-emitter "~0.3.4" + +es6-set@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + es6-iterator "2" + es6-symbol "3" + event-emitter "~0.3.4" + +es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + +es6-weak-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81" + dependencies: + d "^0.1.1" + es5-ext "^0.10.8" + es6-iterator "2" + es6-symbol "3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-plugin-react@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.8.0.tgz#741ab5438a094532e5ce1bbb935d6832356f492d" + dependencies: + doctrine "^1.2.2" + jsx-ast-utils "^1.3.4" + +eslint@^3.11.1: + version "3.12.2" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.12.2.tgz#6be5a9aa29658252abd7f91e9132bab1f26f3c34" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.4.6" + debug "^2.1.1" + doctrine "^1.2.2" + escope "^3.6.0" + espree "^3.3.1" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~1.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.3.2.tgz#dbf3fadeb4ecb4d4778303e50103b3d36c88b89c" + dependencies: + acorn "^4.0.1" + acorn-jsx "^3.0.0" + +esprima-fb@^15001.1.0-dev-harmony-fb: + version "15001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" + +esprima@^2.6.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-0.9.9.tgz#1b90925c975d632d7282939c3bb9c3a423c30490" + +esprima@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" + +esprima@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.2.tgz#954b5d19321ca436092fa90f06d6798531fe8184" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" + +event-emitter@~0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5" + dependencies: + d "~0.1.1" + es5-ext "~0.10.7" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" + dependencies: + create-hash "^1.1.1" + +exec-sh@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10" + dependencies: + merge "^1.1.3" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +exit@0.1.2, exit@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +exports-loader@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.3.tgz#57dc78917f709b96f247fa91e69b554c855013c8" + dependencies: + loader-utils "0.2.x" + source-map "0.1.x" + +express@^4.13.3: + version "4.14.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66" + dependencies: + accepts "~1.3.3" + array-flatten "1.1.1" + content-disposition "0.5.1" + content-type "~1.0.2" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "~2.2.0" + depd "~1.1.0" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.7.0" + finalhandler "0.5.0" + fresh "0.3.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.1" + path-to-regexp "0.1.7" + proxy-addr "~1.1.2" + qs "6.2.0" + range-parser "~1.2.0" + send "0.14.1" + serve-static "~1.11.1" + type-is "~1.6.13" + utils-merge "1.0.0" + vary "~1.1.0" + +extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-levenshtein@~2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.0.tgz#d9ccf0e789e7db725d74bc4877d23aa42972ac50" + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^1.8.0, fb-watchman@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.0.tgz#6f268f1f347a6b3c875d1e89da7e1ed79adfc0ec" + dependencies: + bser "^1.0.2" + +fbjs@^0.8.1, fbjs@^0.8.4: + version "0.8.6" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.6.tgz#7eb67d6986b2d5007a9b6e92e0e7cb6f75cad290" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + ua-parser-js "^0.7.9" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fileset@0.2.x: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067" + dependencies: + glob "5.x" + minimatch "2.x" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" + dependencies: + debug "~2.2.0" + escape-html "~1.0.3" + on-finished "~2.3.0" + statuses "~1.3.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0, find-up@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.1.tgz#6c837d6225a7de5659323740b36d5361f71691ff" + dependencies: + circular-json "^0.3.0" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +flow-bin@^0.39.0: + version "0.39.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.39.0.tgz#b1012a14460df1aa79d3a728e10f93c6944226d0" + +for-in@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" + +for-own@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + dependencies: + for-in "^0.1.5" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" + +fresh@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" + +fs-extra@^0.16.5: + version "0.16.5" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.16.5.tgz#1ad661fa6c86c9608cd1b49efc6fce834939a750" + dependencies: + graceful-fs "^3.0.5" + jsonfile "^2.0.0" + rimraf "^2.2.8" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.0.15" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +gauge@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + supports-color "^0.2.0" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +git-validate@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/git-validate/-/git-validate-2.2.2.tgz#9cc8ff001177957a11726ab508d415bb80b18bcf" + +glob-all@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" + dependencies: + glob "^7.0.5" + yargs "~1.2.6" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@5.x, glob@^5.0.15, glob@^5.0.5: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df" + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^9.0.0, globals@^9.14.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^3.0.5: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-fs@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growly@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + +handle-thing@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +handlebars@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash.js@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" + dependencies: + inherits "^2.0.1" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-encoding-sniffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" + +htmlparser2@3.8.x: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +http-deceiver@^1.2.4: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" + dependencies: + inherits "2.0.3" + setprototypeof "1.0.2" + statuses ">= 1.3.1 < 2" + +http-proxy-middleware@~0.17.1: + version "0.17.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +iconv-lite@0.4.13: + version "0.4.13" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" + +iconv-lite@^0.4.13, iconv-lite@^0.4.5, iconv-lite@~0.4.13: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + +icss-replace-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" + +imports-loader@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.0.tgz#468c04de8075941cfab28146c755c24cc1f36ccd" + dependencies: + loader-utils "^0.2.16" + source-map "^0.5.6" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" + +invariant@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ipaddr.js@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-ci@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-api@^1.0.0-aplha.10: + version "1.0.0-aplha.10" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.0.0-aplha.10.tgz#902edf5cf5404e0eba7e00ef46408488a0d3e337" + dependencies: + async "1.x" + clone "^1.0.2" + fileset "0.2.x" + istanbul-lib-coverage "^1.0.0-alpha" + istanbul-lib-hook "^1.0.0-alpha" + istanbul-lib-instrument "^1.0.0-alpha" + istanbul-lib-report "^1.0.0-alpha" + istanbul-lib-source-maps "^1.0.0-alpha" + istanbul-reports "^1.0.0-alpha" + js-yaml "3.x" + mkdirp "0.5.x" + once "1.x" + +istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.0.tgz#c3f9b6d226da12424064cce87fce0fb57fdfa7a2" + +istanbul-lib-hook@^1.0.0-alpha: + version "1.0.0-alpha.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0-alpha.4.tgz#8c5bb9f6fbd8526e0ae6cf639af28266906b938f" + dependencies: + append-transform "^0.3.0" + +istanbul-lib-instrument@^1.0.0-alpha, istanbul-lib-instrument@^1.1.1, istanbul-lib-instrument@^1.1.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.3.0.tgz#19f0a973397454989b98330333063a5b56df0e58" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.13.0" + istanbul-lib-coverage "^1.0.0" + semver "^5.3.0" + +istanbul-lib-report@^1.0.0-alpha: + version "1.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af" + dependencies: + async "^1.4.2" + istanbul-lib-coverage "^1.0.0-alpha" + mkdirp "^0.5.1" + path-parse "^1.0.5" + rimraf "^2.4.3" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.0.0-alpha: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f" + dependencies: + istanbul-lib-coverage "^1.0.0-alpha.0" + mkdirp "^0.5.1" + rimraf "^2.4.4" + source-map "^0.5.3" + +istanbul-reports@^1.0.0-alpha: + version "1.0.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.0.tgz#24b4eb2b1d29d50f103b369bd422f6e640aa0777" + dependencies: + handlebars "^4.0.3" + +jest-changed-files@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-17.0.2.tgz#f5657758736996f590a51b87e5c9369d904ba7b7" + +jest-cli@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-18.0.0.tgz#11d141f5e9158d4f02c5c303815b5280f6887c55" + dependencies: + ansi-escapes "^1.4.0" + callsites "^2.0.0" + chalk "^1.1.1" + graceful-fs "^4.1.6" + is-ci "^1.0.9" + istanbul-api "^1.0.0-aplha.10" + istanbul-lib-coverage "^1.0.0" + istanbul-lib-instrument "^1.1.1" + jest-changed-files "^17.0.2" + jest-config "^18.0.0" + jest-environment-jsdom "^18.0.0" + jest-file-exists "^17.0.0" + jest-haste-map "^18.0.0" + jest-jasmine2 "^18.0.0" + jest-mock "^18.0.0" + jest-resolve "^18.0.0" + jest-resolve-dependencies "^18.0.0" + jest-runtime "^18.0.0" + jest-snapshot "^18.0.0" + jest-util "^18.0.0" + json-stable-stringify "^1.0.0" + node-notifier "^4.6.1" + sane "~1.4.1" + strip-ansi "^3.0.1" + throat "^3.0.0" + which "^1.1.1" + worker-farm "^1.3.1" + yargs "^6.3.0" + +jest-config@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-18.0.0.tgz#21473ab68fef2fa79760d05419859b3c320e55e9" + dependencies: + chalk "^1.1.1" + jest-environment-jsdom "^18.0.0" + jest-environment-node "^18.0.0" + jest-jasmine2 "^18.0.0" + jest-mock "^18.0.0" + jest-resolve "^18.0.0" + jest-util "^18.0.0" + json-stable-stringify "^1.0.0" + +jest-diff@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-18.0.0.tgz#f24b6f8bedaae425548511ab45edbfb9fee930b7" + dependencies: + chalk "^1.1.3" + diff "^3.0.0" + jest-matcher-utils "^18.0.0" + pretty-format "^18.0.0" + +jest-environment-jsdom@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-18.0.0.tgz#7341266285abce09f13f60e9b49de899802b76c5" + dependencies: + jest-mock "^18.0.0" + jest-util "^18.0.0" + jsdom "^9.8.1" + +jest-environment-node@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-18.0.0.tgz#6f4947b324d6b4e17df20b1998f532c161a2821d" + dependencies: + jest-mock "^18.0.0" + jest-util "^18.0.0" + +jest-file-exists@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-17.0.0.tgz#7f63eb73a1c43a13f461be261768b45af2cdd169" + +jest-haste-map@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-18.0.0.tgz#707d3b5ae3bcbda971c39e8b911d20ad8502c748" + dependencies: + fb-watchman "^1.9.0" + graceful-fs "^4.1.6" + multimatch "^2.1.0" + sane "~1.4.1" + worker-farm "^1.3.1" + +jest-jasmine2@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-18.0.0.tgz#05a35ee8cf61dd6d6d04826aa0e5915a2167a877" + dependencies: + graceful-fs "^4.1.6" + jest-matcher-utils "^18.0.0" + jest-matchers "^18.0.0" + jest-snapshot "^18.0.0" + jest-util "^18.0.0" + +jest-matcher-utils@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-18.0.0.tgz#74ad046aeb9414094fc6cd0d313847e4311f8538" + dependencies: + chalk "^1.1.3" + pretty-format "^18.0.0" + +jest-matchers@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-18.0.0.tgz#d081e2dfd556a0c9f11c7fdc26dc1702fad50189" + dependencies: + jest-diff "^18.0.0" + jest-matcher-utils "^18.0.0" + jest-util "^18.0.0" + +jest-mock@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-18.0.0.tgz#5c248846ea33fa558b526f5312ab4a6765e489b3" + +jest-resolve-dependencies@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-18.0.0.tgz#a2980a634ae2554d8ed5922686883a2988979b70" + dependencies: + jest-file-exists "^17.0.0" + jest-resolve "^18.0.0" + +jest-resolve@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-18.0.0.tgz#a47b0b939d8c53fc79e907db0a5110384432f3c8" + dependencies: + browser-resolve "^1.11.2" + jest-file-exists "^17.0.0" + jest-haste-map "^18.0.0" + resolve "^1.1.6" + +jest-runtime@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-18.0.0.tgz#fff982dffe061b89bbea5c3b6f4d3fbf7b3cf56e" + dependencies: + babel-core "^6.0.0" + babel-jest "^18.0.0" + babel-plugin-istanbul "^3.0.0" + chalk "^1.1.3" + graceful-fs "^4.1.6" + jest-config "^18.0.0" + jest-file-exists "^17.0.0" + jest-haste-map "^18.0.0" + jest-mock "^18.0.0" + jest-resolve "^18.0.0" + jest-snapshot "^18.0.0" + jest-util "^18.0.0" + json-stable-stringify "^1.0.0" + multimatch "^2.1.0" + yargs "^6.3.0" + +jest-snapshot@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-18.0.0.tgz#3602c6b13cbf5788fd101bf0d73fc76104b88486" + dependencies: + jest-diff "^18.0.0" + jest-file-exists "^17.0.0" + jest-matcher-utils "^18.0.0" + jest-util "^18.0.0" + natural-compare "^1.4.0" + pretty-format "^18.0.0" + +jest-util@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-18.0.0.tgz#4ef7c397ad7e1ac8f9c63a482c12a31df5e376a7" + dependencies: + chalk "^1.1.1" + diff "^3.0.0" + graceful-fs "^4.1.6" + jest-file-exists "^17.0.0" + jest-mock "^18.0.0" + mkdirp "^0.5.1" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" + +js-yaml@3.x, js-yaml@^3.5.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +js-yaml@~3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + +jsdom@^9.8.1: + version "9.9.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.9.1.tgz#84f3972ad394ab963233af8725211bce4d01bfd5" + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + array-equal "^1.0.0" + content-type-parser "^1.0.1" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.36 < 0.3.0" + escodegen "^1.6.1" + html-encoding-sniffer "^1.0.1" + iconv-lite "^0.4.13" + nwmatcher ">= 1.3.9 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.3.1" + webidl-conversions "^3.0.1" + whatwg-encoding "^1.0.1" + whatwg-url "^4.1.0" + xml-name-validator ">= 2.0.1 < 3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +jshint@*, jshint@^2.6.0: + version "2.9.4" + resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.4.tgz#5e3ba97848d5290273db514aee47fe24cf592934" + dependencies: + cli "~1.0.0" + console-browserify "1.1.x" + exit "0.1.x" + htmlparser2 "3.8.x" + lodash "3.7.x" + minimatch "~3.0.2" + shelljs "0.3.x" + strip-json-comments "1.0.x" + +json-loader@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + +jsprim@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + dependencies: + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +jstransform@^11.0.1: + version "11.0.3" + resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" + dependencies: + base62 "^1.1.0" + commoner "^0.10.1" + esprima-fb "^15001.1.0-dev-harmony-fb" + object-assign "^2.0.0" + source-map "^0.4.2" + +jsx-ast-utils@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.3.5.tgz#9ba6297198d9f754594d62e59496ffb923778dd4" + dependencies: + acorn-jsx "^3.0.1" + object-assign "^4.1.0" + +jsxhint@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/jsxhint/-/jsxhint-0.15.1.tgz#fa005fb5a4db7cfdc055ef5043b2debb9fe35a54" + dependencies: + bluebird "^2.9.14" + debug "~2.1.0" + fs-extra "^0.16.5" + glob-all "^3.0.1" + jshint "^2.6.0" + jstransform "^11.0.1" + through "~2.3.6" + +kind-of@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" + dependencies: + is-buffer "^1.0.2" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0.2.7, loader-utils@~0.2.2: + version "0.2.16" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +lodash._arraycopy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" + +lodash._arrayeach@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._baseclone@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz#303519bf6393fe7e42f34d8b630ef7794e3542b7" + dependencies: + lodash._arraycopy "^3.0.0" + lodash._arrayeach "^3.0.0" + lodash._baseassign "^3.0.0" + lodash._basefor "^3.0.0" + lodash.isarray "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basefor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash.clonedeep@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz#a0a1e40d82a5ea89ff5b147b8444ed63d92827db" + dependencies: + lodash._baseclone "^3.0.0" + lodash._bindcallback "^3.0.0" + +lodash.indexof@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/lodash.indexof/-/lodash.indexof-4.0.5.tgz#53714adc2cddd6ed87638f893aa9b6c24e31ef3c" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isequal@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.pickby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + +lodash@3.7.x: + version "3.7.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.7.0.tgz#3678bd8ab995057c07ade836ed2ef087da811d45" + +lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" + dependencies: + js-tokens "^2.0.0" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + +map-stream@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.1.tgz#7fd2a254f97e9272aa634717bfc3e73c0662afaa" + +marked-terminal@^1.6.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-1.7.0.tgz#c8c460881c772c7604b64367007ee5f77f125904" + dependencies: + cardinal "^1.0.0" + chalk "^1.1.3" + cli-table "^0.3.1" + lodash.assign "^4.2.0" + node-emoji "^1.4.1" + +marked@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" + +math-expression-evaluator@^1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.14.tgz#39511771ed9602405fba9affff17eb4d2a3843ab" + dependencies: + lodash.indexof "^4.0.5" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.24.0 < 2", mime-db@~1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: + version "2.1.13" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" + dependencies: + mime-db "~1.25.0" + +mime@1.3.4, mime@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimatch@2.x: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.12: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + +minimist@^1.1.1, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.0.tgz#865be94c2e7397ad8a57da6a633a6e2f30798b83" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +multimatch@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +nan@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + +natives@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +node-emoji@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.4.3.tgz#5272f70b823c4df6d7c39f84fd8203f35b3e5d36" + dependencies: + string.prototype.codepointat "^0.2.0" + +node-fetch@^1.0.1: + version "1.6.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-notifier@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-4.6.1.tgz#056d14244f3dcc1ceadfe68af9cff0c5473a33f3" + dependencies: + cli-usage "^0.1.1" + growly "^1.2.0" + lodash.clonedeep "^3.0.0" + minimist "^1.1.1" + semver "^5.1.0" + shellwords "^0.1.0" + which "^1.0.5" + +node-pre-gyp@^0.6.29: + version "0.6.32" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" + dependencies: + mkdirp "~0.5.1" + nopt "~3.0.6" + npmlog "^4.0.1" + rc "~1.1.6" + request "^2.79.0" + rimraf "~2.5.4" + semver "~5.3.0" + tar "~2.2.1" + tar-pack "~3.3.0" + +nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + version "2.3.5" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.8.0.tgz#a9550b079aa3523c85d78df24eef1959fce359ab" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npmlog@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +"nwmatcher@>= 1.3.9 < 2.0.0": + version "1.3.9" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +obuf@^1.0.0, obuf@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@1.x, once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-shim@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + +os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +parse-asn1@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +parseurl@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pbkdf2@^3.0.3: + version "3.0.9" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" + dependencies: + create-hmac "^1.1.2" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.1.tgz#dc5421b6ae6f779ef6bfd47352b94abe59d0316b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.5.0.tgz#570aceb04b3061fb25f6f46bd0329e7ab6263c0b" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.0.2.tgz#02be520e91571ffb10738766a981d5770989bb32" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.1.tgz#ff59b5dec6d586ce2cea183138f55c5876fa9cdc" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.0.11.tgz#c5d7c8de5056a7377aea0dff2fd83f92cafb9b8a" + dependencies: + postcss "^5.0.4" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.1.0.tgz#b6093472b5872a6deda47aa3b0b5b8b973547c50" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.0.7.tgz#bfb9248fe14db33770f036572de6b4897c48d81c" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" + dependencies: + postcss "^5.0.4" + +postcss-modules-local-by-default@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-scope@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-values@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" + dependencies: + icss-replace-symbols "^1.0.2" + postcss "^5.0.14" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.7.tgz#6bd90d0a4bc5a1df22c26ea65c53257dc3829f4e" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.2.tgz#be8b511741fab2dac8e614a2302e9d10267b0771" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.3.1.tgz#024e8e219f52773313408573db9645ba62d2d2fe" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.0.tgz#8f739b938289ef2e48936d7101783e4741ca9bbb" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.2.tgz#3d70f5adda130da51c7c0c2fc023f56b1374fe08" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.6: + version "5.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.6.tgz#a252cd67cd52585035f17e9ad12b35137a7bdd9e" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.1.2" + +pre-commit@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" + dependencies: + cross-spawn "^5.0.1" + spawn-sync "^1.0.15" + which "1.2.x" + +precommit-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/precommit-hook/-/precommit-hook-3.0.0.tgz#6136c45185ff964371673f6b63e9e485549db1d7" + dependencies: + git-validate "^2.0.0" + jshint "*" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-format@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-18.0.0.tgz#5f45c59fe2ed6749d46765429679670b08b21137" + dependencies: + ansi-styles "^2.2.1" + +private@^0.1.6, private@~0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0: + version "0.11.9" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promise@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" + dependencies: + asap "~2.0.3" + +proxy-addr@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.2.tgz#b4cc5f22610d9535824c123aef9d3cf73c40ba37" + dependencies: + forwarded "~0.1.0" + ipaddr.js "1.1.1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +qs@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" + +qs@~6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + +query-string@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.2.3.tgz#9f27273d207a25a8ee4c7b8c74dcd45d556db822" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +rc@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~1.0.4" + +react-deep-force-update@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.0.1.tgz#f911b5be1d2a6fe387507dd6e9a767aa2924b4c7" + +react-dom@^15.0.0: + version "15.4.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.4.1.tgz#d54c913261aaedb17adc20410d029dcc18a1344a" + dependencies: + fbjs "^0.8.1" + loose-envify "^1.1.0" + object-assign "^4.1.0" + +react-draggable@^2.1.0, react-draggable@^2.1.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-2.2.3.tgz#17628cb8aaefed639d38e0021b978a685d80b08b" + dependencies: + classnames "^2.2.5" + +react-hot-api@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/react-hot-api/-/react-hot-api-0.4.7.tgz#a7e22a56d252e11abd9366b61264cf4492c58171" + +react-hot-loader@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-1.3.1.tgz#c95647ae78b73dfceff6ec71ffcb04182ff6daf9" + dependencies: + react-hot-api "^0.4.5" + source-map "^0.4.4" + +react-proxy@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-1.1.8.tgz#9dbfd9d927528c3aa9f444e4558c37830ab8c26a" + dependencies: + lodash "^4.6.1" + react-deep-force-update "^1.0.0" + +react-resizable@^1.4.0: + version "1.4.5" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.4.5.tgz#b0f00244959bad9b003de5bf8f7d14dee5b6c2d3" + dependencies: + react-draggable "^2.1.0" + +react-transform-hmr@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz#e1a40bd0aaefc72e8dfd7a7cda09af85066397bb" + dependencies: + global "^4.3.0" + react-proxy "^1.1.7" + +react@^15.0.0: + version "15.4.1" + resolved "https://registry.yarnpkg.com/react/-/react-15.4.1.tgz#498e918602677a3983cd0fd206dfe700389a0dd6" + dependencies: + fbjs "^0.8.4" + loose-envify "^1.1.0" + object-assign "^4.1.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~1.0.26-2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readdirp@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-1.0.1.tgz#16967d390300346a67ffb30a3867bb4b6173934a" + dependencies: + graceful-fs "~2.0.0" + minimatch "~0.2.12" + readable-stream "~1.0.26-2" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +recast@^0.11.17: + version "0.11.18" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.18.tgz#07af6257ca769868815209401d4d60eef1b5b947" + dependencies: + ast-types "0.9.2" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redeyed@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a" + dependencies: + esprima "~3.0.0" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" + +regenerator-transform@0.9.8: + version "0.9.8" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@^2.55.0, request@^2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-like@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@1.0.x, requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@~2.5.1, rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +ripemd160@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +sane@~1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715" + dependencies: + exec-sh "^0.2.0" + fb-watchman "^1.8.0" + minimatch "^3.0.2" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.10.0" + +sax@^1.1.4, sax@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +send@0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a" + dependencies: + debug "~2.2.0" + depd "~1.1.0" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.7.0" + fresh "0.3.0" + http-errors "~1.5.0" + mime "1.3.4" + ms "0.7.1" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.0" + +serve-index@^1.7.2: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@~1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.14.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" + +sha.js@^2.3.6: + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + dependencies: + inherits "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@0.3.x: + version "0.3.0" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" + +shelljs@^0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.5.tgz#2eef7a50a21e1ccf37da00df767ec69e30ad0675" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shellwords@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sockjs-client@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5" + dependencies: + debug "^2.2.0" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.1" + +sockjs@0.3.18: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^0.1.4, source-list-map@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.7.tgz#d4b5ce2a46535c72c7e8527c71a77d250618172e" + +source-map-support@^0.4.2: + version "0.4.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" + dependencies: + source-map "^0.5.3" + +source-map@0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.4.2, source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +spawn-sync@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" + dependencies: + concat-stream "^1.4.7" + os-shim "^0.1.2" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +spdy-transport@^2.0.15: + version "2.0.18" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6" + dependencies: + debug "^2.2.0" + hpack.js "^2.1.6" + obuf "^1.1.0" + readable-stream "^2.0.1" + wbuf "^1.4.0" + +spdy@^3.4.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819" + dependencies: + debug "^2.2.0" + handle-thing "^1.2.4" + http-deceiver "^1.2.4" + select-hose "^2.0.0" + spdy-transport "^2.0.15" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.5.0.tgz#585eee513217ed98fe199817e7313b6f772a6802" + dependencies: + builtin-status-codes "^2.0.0" + inherits "^2.0.1" + readable-stream "^2.1.0" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string.prototype.codepointat@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78" + +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-json-comments@1.0.x, strip-json-comments@~1.0.1, strip-json-comments@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +style-loader@^0.13.0: + version "0.13.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.1.tgz#468280efbc0473023cd3a6cd56e33b5a1d7fc3a9" + dependencies: + loader-utils "^0.2.7" + +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +svgo@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.1.tgz#287320fed972cb097e72c2bb1685f96fe08f8034" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.2.1" + js-yaml "~3.6.1" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.2.1" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.1.tgz#8549dd1d01fa9f893c18cc9ab0b106b4d9b168cb" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +tapable@^0.2.5, tapable@~0.2.5: + version "0.2.6" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" + +tar-pack@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" + dependencies: + debug "~2.2.0" + fstream "~1.0.10" + fstream-ignore "~1.0.5" + once "~1.3.3" + readable-stream "~2.1.4" + rimraf "~2.5.1" + tar "~2.2.1" + uid-number "~0.0.6" + +tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +test-exclude@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-3.3.0.tgz#7a17ca1239988c98367b0621456dbb7d4bc38977" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throat@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6" + +through@^2.3.6, through@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timers-browserify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + dependencies: + setimmediate "^1.0.4" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + +tough-cookie@^2.3.1, tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.13: + version "1.6.14" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.13" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.12" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" + +uglify-js@^2.6, uglify-js@^2.7.5: + version "2.7.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.0.tgz#33d9679f65022f48988a03fd24e7dcaf8f109eca" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +v8flags@^2.0.10: + version "2.0.11" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +valiquire@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/valiquire/-/valiquire-0.3.0.tgz#fd0090c41b785c3b6c2ce778064bc69a69f3e5d1" + dependencies: + ansicolors "~0.2.1" + detective "~0.2.1" + map-stream "0.0.1" + readdirp "~1.0.1" + require-like "~0.1.2" + +vary@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + +watch@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" + +watchpack@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.1.tgz#01efa80c5c29e5c56ba55d6f5470a35b6402f0b2" + dependencies: + async "^2.1.2" + chokidar "^1.4.3" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.4.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^3.0.0, webidl-conversions@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + +webpack-dev-middleware@^1.9.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + +webpack-dev-server@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.4.1.tgz#48556f793186eac0758df94730c034ed9a4d0f12" + dependencies: + ansi-html "0.0.7" + chokidar "^1.6.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + express "^4.13.3" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.1" + opn "4.0.2" + portfinder "^1.0.9" + serve-index "^1.7.2" + sockjs "0.3.18" + sockjs-client "1.1.2" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^3.1.1" + webpack-dev-middleware "^1.9.0" + yargs "^6.0.0" + +webpack-sources@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" + dependencies: + source-list-map "~0.1.7" + source-map "~0.5.3" + +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" + dependencies: + acorn "^4.0.4" + acorn-dynamic-import "^2.0.0" + ajv "^4.7.0" + ajv-keywords "^1.1.1" + async "^2.1.2" + enhanced-resolve "^3.0.0" + interpret "^1.0.0" + json-loader "^0.5.4" + loader-runner "^2.3.0" + loader-utils "^0.2.16" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^3.1.0" + tapable "~0.2.5" + uglify-js "^2.7.5" + watchpack "^1.2.0" + webpack-sources "^0.1.4" + yargs "^6.0.0" + +websocket-driver@>=0.5.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + dependencies: + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" + +whatwg-encoding@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" + dependencies: + iconv-lite "0.4.13" + +whatwg-fetch@>=0.10.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.1.tgz#078b9461bbe91cea73cbce8bb122a05f9e92b772" + +whatwg-url@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.1.1.tgz#567074923352de781e3500d64a86aa92a971b4a4" + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@1.2.x, which@^1.0.5, which@^1.1.1, which@^1.2.9: + version "1.2.12" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" + dependencies: + isexe "^1.1.1" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +worker-farm@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff" + dependencies: + errno ">=0.1.1 <0.2.0-0" + xtend ">=4.0.0 <4.1.0-0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" + +yargs-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.0.tgz#6ced869cd05a3dca6a1eaee38b68aeed4b0b4101" + dependencies: + camelcase "^3.0.0" + +yargs@^6.0.0, yargs@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.5.0.tgz#a902e23a1f0fe912b2a03f6131b7ed740c9718ff" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@~1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" + dependencies: + minimist "^0.1.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0"