diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index 30f09ffe9..0596e29a9 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("React")):"function"==typeof define&&define.amd?define(["React"],e):"object"==typeof exports?exports.ReactGridLayout=e(require("React")):t.ReactGridLayout=e(t.React)}(this,function(t){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(9),t.exports.Responsive=r(15)},function(e,r,n){e.exports=t},function(t,e,r){"use strict";var n=r(11),o=t.exports={bottom:function(t){for(var e,r=0,n=0,o=t.length;o>n;n++)e=t[n].y+t[n].h,e>r&&(r=e);return r},clone:function(t){return n({},t)},collides:function(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?!1:!0},compact:function(t){for(var e=o.getStatics(t),r=[],n=o.sortLayoutItemsByRowCol(t),s=0,i=n.length;i>s;s++){var a=n[s];a["static"]||(a=o.compactItem(e,a),e.push(a)),r[t.indexOf(a)]=a,delete a.moved}return r},compactItem:function(t,e){for(;e.y>0&&!o.getFirstCollision(t,e);)e.y--;for(var r;r=o.getFirstCollision(t,e);)e.y=r.y+r.h;return e},correctBounds:function(t,e){for(var r=o.getStatics(t),n=0,s=t.length;s>n;n++){var i=t[n];if(i.x+i.w>e.cols&&(i.x=e.cols-i.w),i.x<0&&(i.x=0,i.w=e.cols),i["static"])for(;o.getFirstCollision(r,i);)i.y++;else r.push(i)}return t},getLayoutItem:function(t,e){e=""+e;for(var r=0,n=t.length;n>r;r++)if(""+t[r].i===e)return t[r]},getFirstCollision:function(t,e){for(var r=0,n=t.length;n>r;r++)if(o.collides(t[r],e))return t[r]},getAllCollisions:function(t,e){for(var r=[],n=0,s=t.length;s>n;n++)o.collides(t[n],e)&&r.push(t[n]);return r},getStatics:function(t){for(var e=[],r=0,n=t.length;n>r;r++)t[r]["static"]&&e.push(t[r]);return e},moveElement:function(t,e,r,n,s){if(e["static"])return t;if(e.y===n&&e.x===r)return t;var i=e.y>n;void 0!==r&&(e.x=r),void 0!==n&&(e.y=n),e.moved=!0;var a=o.sortLayoutItemsByRowCol(t);i&&(a=a.reverse());for(var p=o.getAllCollisions(a,e),u=0,h=p.length;h>u;u++){var l=p[u];l.moved||e.y>l.y&&e.y-l.y>l.h/4||(t=l["static"]?o.moveElementAwayFromCollision(t,l,e,s):o.moveElementAwayFromCollision(t,e,l,s))}return t},moveElementAwayFromCollision:function(t,e,r,n){if(n){var s={x:r.x,y:r.y,w:r.w,h:r.h};if(s.y=Math.max(e.y-r.h,0),!o.getFirstCollision(t,s))return o.moveElement(t,r,void 0,s.y)}return o.moveElement(t,r,void 0,r.y+1)},perc:function(t){return 100*t+"%"},setTransform:function(t,e){var r=(""+e[0]).replace(/(\d)$/,"$1px"),n=(""+e[1]).replace(/(\d)$/,"$1px");return t.transform="translate("+r+","+n+")",t.WebkitTransform="translate("+r+","+n+")",t.MozTransform="translate("+r+","+n+")",t.msTransform="translate("+r+","+n+")",t.OTransform="translate("+r+","+n+")",t},sortLayoutItemsByRowCol:function(t){return[].concat(t).sort(function(t,e){return t.y>e.y||t.y===e.y&&t.x>e.x?1:-1})},synchronizeLayoutWithChildren:function(t,e,r){e=[].concat(e),t=t||[];for(var s=[],i=0,a=e.length;a>i;i++){var p=e[i],u=o.getLayoutItem(t,p.key);if(u)u.i=""+u.i,s.push(u);else{var h=p.props._grid;h?(o.validateLayout([h],"ReactGridLayout.child"),s.push(n({},h,{y:Math.min(o.bottom(s),h.y),i:p.key}))):s.push({w:1,h:1,x:0,y:o.bottom(s),i:p.key})}}return s=o.correctBounds(s,{cols:r}),s=o.compact(s)},validateLayout:function(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 s=0;s=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r},o=Object.assign||function(t){for(var e=1;et.w||t.minW>t.maxW)&&n("minW",t)},maxW:function(t,e,r){o.PropTypes.number.apply(this,arguments),(t.maxWt.h||t.minH>t.maxH)&&n("minH",t)},maxH:function(t,e,r){o.PropTypes.number.apply(this,arguments),(t.maxH=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r},o=Object.assign||function(t){for(var e=1;es;s++){var a=r[s];e>t[a]&&(n=a)}return n},getColsFromBreakpoint:function(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]},findOrGenerateResponsiveLayout:function(t,e,r,s,i){if(t[r])return t[r];for(var a=t[s],p=o.sortBreakpoints(e),u=p.slice(p.indexOf(r)),h=0,l=u.length;l>h;h++){var c=u[h];if(t[c]){a=t[c];break}}return a=JSON.parse(JSON.stringify(a||[])),n.compact(n.correctBounds(a,{cols:i}))},sortBreakpoints:function(t){var e=Object.keys(t);return e.sort(function(e,r){return t[e]-t[r]})}}},function(t,e,r){function n(t){return null===t||void 0===t}function o(t){return t&&"object"==typeof t&&"number"==typeof t.length?"function"!=typeof t.copy||"function"!=typeof t.slice?!1:t.length>0&&"number"!=typeof t[0]?!1:!0:!1}function s(t,e,r){var s,h;if(n(t)||n(e))return!1;if(t.prototype!==e.prototype)return!1;if(p(t))return p(e)?(t=i.call(t),e=i.call(e),u(t,e,r)):!1;if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(s=0;s=0;s--)if(l[s]!=c[s])return!1;for(s=l.length-1;s>=0;s--)if(h=l[s],!u(t[h],e[h],r))return!1;return typeof t==typeof e}var i=Array.prototype.slice,a=r(19),p=r(18),u=t.exports=function(t,e,r){return r||(r={}),t===e?!0:t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():"object"!=typeof t&&"object"!=typeof e?r.strict?t===e:t==e:s(t,e,r)}},function(t,e,r){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function o(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var s="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=s?n:o,e.supported=n,e.unsupported=o},function(t,e,r){function n(t){var e=[];for(var r in t)e.push(r);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e,r){"use strict";function n(t){return{element:t.getDOMNode(),position:{top:(t._pendingState||t.state).clientY,left:(t._pendingState||t.state).clientX}}}function o(t){return"both"===t.props.axis||"y"===t.props.axis}function s(t){return"both"===t.props.axis||"x"===t.props.axis}function i(t){return"function"==typeof t||"[object Function]"===Object.prototype.toString.call(t)}function a(t,e){for(var r=0,n=(t.length,null);n=t[r];r++)if(e.apply(e,[n,r,t]))return n}function p(t,e){var r=a(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(e){return i(t[e])});return t[r].call(t,e)}function u(t){var e=(""+t.left).replace(/(\d)$/,"$1px"),r=(""+t.top).replace(/(\d)$/,"$1px");return t.transform="translate("+e+","+r+")",t.WebkitTransform="translate("+e+","+r+")",t.OTransform="translate("+e+","+r+")",t.msTransform="translate("+e+","+r+")",t.MozTransform="translate("+e+","+r+")",delete t.left,delete t.top,t}function h(t){var e=t.touches&&t.touches[0]||t;return{clientX:e.clientX,clientY:e.clientY}}function l(t,e,r){t&&(t.attachEvent?t.attachEvent("on"+e,r):t.addEventListener?t.addEventListener(e,r,!0):t["on"+e]=r)}function c(t,e,r){t&&(t.detachEvent?t.detachEvent("on"+e,r):t.removeEventListener?t.removeEventListener(e,r,!0):t["on"+e]=null)}var f=r(1),y=r(5),d=r(7),g=r(6);if("undefined"==typeof window)var m=!1;else var m="ontouchstart"in window||"onmsgesturechange"in window;var v=function(){var t={touch:{start:"touchstart",move:"touchmove",end:"touchend"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup"}};return t[m?"touch":"mouse"]}();t.exports=f.createClass({displayName:"Draggable",mixins:[y],propTypes:{axis:f.PropTypes.oneOf(["both","x","y"]),handle:f.PropTypes.string,cancel:f.PropTypes.string,grid:f.PropTypes.arrayOf(f.PropTypes.number),start:f.PropTypes.object,moveOnStartChange:f.PropTypes.bool,useCSSTransforms:f.PropTypes.bool,zIndex:f.PropTypes.number,onStart:f.PropTypes.func,onDrag:f.PropTypes.func,onStop:f.PropTypes.func,onMouseDown:f.PropTypes.func},componentWillUnmount:function(){c(window,v.move,this.handleDrag),c(window,v.end,this.handleDragEnd)},componentWillReceiveProps:function(t){t.moveOnStartChange&&this.setState({clientX:t.start.x,clientY:t.start.y})},getDefaultProps:function(){return{axis:"both",handle:null,cancel:null,grid:null,start:{x:0,y:0},moveOnStartChange:!1,useCSSTransforms:!1,zIndex:0/0,onStart:d,onDrag:d,onStop:d,onMouseDown:d}},getInitialState:function(){return{dragging:!1,startX:0,startY:0,offsetX:0,offsetY:0,clientX:this.props.start.x,clientY:this.props.start.y}},handleDragStart:function(t){if(this.props.onMouseDown(t),"number"!=typeof t.button||0===t.button){{this.getDOMNode()}if(!(this.props.handle&&!p(t.target,this.props.handle)||this.props.cancel&&p(t.target,this.props.cancel))){var e=h(t);this.setState({dragging:!0,offsetX:parseInt(e.clientX,10),offsetY:parseInt(e.clientY,10),startX:parseInt(this.state.clientX,10)||0,startY:parseInt(this.state.clientY,10)||0}),document.body.className+=" react-draggable-active",this.props.onStart(t,n(this)),l(window,v.move,this.handleDrag),l(window,v.end,this.handleDragEnd)}}},handleDragEnd:function(t){this.state.dragging&&(this.setState({dragging:!1}),document.body.className=document.body.className.replace(" react-draggable-active",""),this.props.onStop(t,n(this)),c(window,v.move,this.handleDrag),c(window,v.end,this.handleDragEnd))},handleDrag:function(t){var e=h(t),r=this.state.startX+(e.clientX-this.state.offsetX),o=this.state.startY+(e.clientY-this.state.offsetY);if(Array.isArray(this.props.grid)){var s=r=this.props.grid[0]?parseInt(this.state.clientX,10)+this.props.grid[0]*s:parseInt(this.state.clientX,10),o=Math.abs(o-parseInt(this.state.clientY,10))>=this.props.grid[1]?parseInt(this.state.clientY,10)+this.props.grid[1]*i:parseInt(this.state.clientY,10)}Array.isArray(this.props.minConstraints)&&(r=Math.max(this.props.minConstraints[0],r),o=Math.max(this.props.minConstraints[1],o)),Array.isArray(this.props.maxConstraints)&&(r=Math.min(this.props.maxConstraints[0],r),o=Math.min(this.props.maxConstraints[1],o)),this.setState({clientX:r,clientY:o}),this.props.onDrag(t,n(this))},render:function(){var t={top:o(this)?this.state.clientY:this.state.startY,left:s(this)?this.state.clientX:this.state.startX};return this.props.useCSSTransforms&&(t=u(t)),this.state.dragging&&!isNaN(this.props.zIndex)&&(t.zIndex=this.props.zIndex),g(f.Children.only(this.props.children),{style:t,className:"react-draggable"+(this.state.dragging?" react-draggable-dragging":""),onMouseDown:this.handleDragStart,onTouchStart:function(t){return t.preventDefault(),this.handleDragStart.apply(this,arguments)}.bind(this),onMouseUp:this.handleDragEnd,onTouchEnd:this.handleDragEnd})}})},function(t,e,r){"use strict";{var n=function(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},o=r(1),s=r(5),i=r(13);t.exports=o.createClass({displayName:"ResizableBox",mixins:[s],propTypes:{},getInitialState:function(){return{width:this.props.width,height:this.props.height}},onResize:function(t,e){var r=(e.element,e.size);(r.width!==this.state.width||r.height!==this.state.height)&&this.setState({width:r.width,height:r.height})},render:function(){var t=this.props.handleSize,e=this.props.minConstraints,r=this.props.maxConstraints,s=n(this.props,["handleSize","minConstraints","maxConstraints"]);return o.createElement(i,{minConstraints:e,maxConstraints:r,handleSize:t,width:this.state.width,height:this.state.height,onResize:this.onResize,draggableOpts:this.props.draggableOpts},o.createElement("div",o.__spread({style:{width:this.state.width+"px",height:this.state.height+"px"}},s),this.props.children))}})}},function(t,e,r){t.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},t.exports.Resizable=r(13),t.exports.ResizableBox=r(21)},function(t,e,r){"use strict";var n=r(4),o=r(27),s=(r(8),{current:o,withContext:function(t,e){var r,o=s.current;s.current=n({},o,t);try{r=e()}finally{s.current=o}return r}});t.exports=s},function(t,e,r){"use strict";var n={current:null};t.exports=n},function(t,e,r){"use strict";var n=r(23),o=r(24),s=r(4),i=(r(8),{key:!0,ref:!0}),a=function(t,e,r,n,o,s){this.type=t,this.key=e,this.ref=r,this._owner=n,this._context=o,this.props=s};a.prototype={_isReactElement:!0},a.createElement=function(t,e,r){var s,p={},u=null,h=null;if(null!=e){h=void 0===e.ref?null:e.ref,u=void 0===e.key?null:""+e.key;for(s in e)e.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(p[s]=e[s])}var l=arguments.length-2;if(1===l)p.children=r;else if(l>1){for(var c=Array(l),f=0;l>f;f++)c[f]=arguments[f+2];p.children=c}if(t&&t.defaultProps){var y=t.defaultProps;for(s in y)"undefined"==typeof p[s]&&(p[s]=y[s])}return new a(t,u,h,o.current,n.current,p)},a.createFactory=function(t){var e=a.createElement.bind(null,t);return e.type=t,e},a.cloneAndReplaceProps=function(t,e){var r=new a(t.type,t.key,t.ref,t._owner,t._context,e);return r},a.cloneElement=function(t,e,r){var n,p=s({},t.props),u=t.key,h=t.ref,l=t._owner;if(null!=e){void 0!==e.ref&&(h=e.ref,l=o.current),void 0!==e.key&&(u=""+e.key);for(n in e)e.hasOwnProperty(n)&&!i.hasOwnProperty(n)&&(p[n]=e[n])}var c=arguments.length-2;if(1===c)p.children=r;else if(c>1){for(var f=Array(c),y=0;c>y;y++)f[y]=arguments[y+2];p.children=f}return new a(t.type,u,h,l,t._context,p)},a.isValidElement=function(t){var e=!(!t||!t._isReactElement);return e},t.exports=a},function(t,e,r){"use strict";function n(t){return function(e,r,n){e[r]=e.hasOwnProperty(r)?t(e[r],n):n}}function o(t,e){for(var r in e)if(e.hasOwnProperty(r)){var n=u[r];n&&u.hasOwnProperty(r)?n(t,r,e[r]):t.hasOwnProperty(r)||(t[r]=e[r])}return t}var s=r(4),i=r(7),a=r(28),p=n(function(t,e){return s({},e,t)}),u={children:i,className:n(a),style:p},h={mergeProps:function(t,e){return o(s({},t),e)}};t.exports=h},function(t,e,r){"use strict";var n={};t.exports=n},function(t,e,r){"use strict";function n(t){t||(t="");var e,r=arguments.length;if(r>1)for(var n=1;r>n;n++)e=arguments[n],e&&(t=(t?t+" ":"")+e);return t}t.exports=n},function(t,e,r){var n=function(t){var e;for(e in t)if(t.hasOwnProperty(e))return e;return null};t.exports=n},function(t,e,r){"use strict";function n(t,e){if(t===e)return!0;var r;for(r in t)if(t.hasOwnProperty(r)&&(!e.hasOwnProperty(r)||t[r]!==e[r]))return!1;for(r in e)if(e.hasOwnProperty(r)&&!t.hasOwnProperty(r))return!1;return!0}t.exports=n}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("React")):"function"==typeof define&&define.amd?define(["React"],e):"object"==typeof exports?exports.ReactGridLayout=e(require("React")):t.ReactGridLayout=e(t.React)}(this,function(t){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(9),t.exports.Responsive=r(15)},function(e,r,n){e.exports=t},function(t,e,r){"use strict";var n=r(11),o=t.exports={bottom:function(t){for(var e,r=0,n=0,o=t.length;o>n;n++)e=t[n].y+t[n].h,e>r&&(r=e);return r},clone:function(t){return n({},t)},collides:function(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?!1:!0},compact:function(t){for(var e=o.getStatics(t),r=[],n=o.sortLayoutItemsByRowCol(t),s=0,i=n.length;i>s;s++){var a=n[s];a["static"]||(a=o.compactItem(e,a),e.push(a)),r[t.indexOf(a)]=a,delete a.moved}return r},compactItem:function(t,e){for(;e.y>0&&!o.getFirstCollision(t,e);)e.y--;for(var r;r=o.getFirstCollision(t,e);)e.y=r.y+r.h;return e},correctBounds:function(t,e){for(var r=o.getStatics(t),n=0,s=t.length;s>n;n++){var i=t[n];if(i.x+i.w>e.cols&&(i.x=e.cols-i.w),i.x<0&&(i.x=0,i.w=e.cols),i["static"])for(;o.getFirstCollision(r,i);)i.y++;else r.push(i)}return t},getLayoutItem:function(t,e){e=""+e;for(var r=0,n=t.length;n>r;r++)if(""+t[r].i===e)return t[r]},getFirstCollision:function(t,e){for(var r=0,n=t.length;n>r;r++)if(o.collides(t[r],e))return t[r]},getAllCollisions:function(t,e){for(var r=[],n=0,s=t.length;s>n;n++)o.collides(t[n],e)&&r.push(t[n]);return r},getStatics:function(t){for(var e=[],r=0,n=t.length;n>r;r++)t[r]["static"]&&e.push(t[r]);return e},moveElement:function(t,e,r,n,s){if(e["static"])return t;if(e.y===n&&e.x===r)return t;var i=e.y>n;void 0!==r&&(e.x=r),void 0!==n&&(e.y=n),e.moved=!0;var a=o.sortLayoutItemsByRowCol(t);i&&(a=a.reverse());for(var p=o.getAllCollisions(a,e),u=0,h=p.length;h>u;u++){var l=p[u];l.moved||e.y>l.y&&e.y-l.y>l.h/4||(t=l["static"]?o.moveElementAwayFromCollision(t,l,e,s):o.moveElementAwayFromCollision(t,e,l,s))}return t},moveElementAwayFromCollision:function(t,e,r,n){if(n){var s={x:r.x,y:r.y,w:r.w,h:r.h};if(s.y=Math.max(e.y-r.h,0),!o.getFirstCollision(t,s))return o.moveElement(t,r,void 0,s.y)}return o.moveElement(t,r,void 0,r.y+1)},perc:function(t){return 100*t+"%"},setTransform:function(t,e){var r=(""+e[0]).replace(/(\d)$/,"$1px"),n=(""+e[1]).replace(/(\d)$/,"$1px");return t.transform="translate("+r+","+n+")",t.WebkitTransform="translate("+r+","+n+")",t.MozTransform="translate("+r+","+n+")",t.msTransform="translate("+r+","+n+")",t.OTransform="translate("+r+","+n+")",t},sortLayoutItemsByRowCol:function(t){return[].concat(t).sort(function(t,e){return t.y>e.y||t.y===e.y&&t.x>e.x?1:-1})},synchronizeLayoutWithChildren:function(t,e,r){e=[].concat(e),t=t||[];for(var s=[],i=0,a=e.length;a>i;i++){var p=e[i],u=o.getLayoutItem(t,p.key);if(u)u.i=""+u.i,s.push(u);else{var h=p.props._grid;h?(o.validateLayout([h],"ReactGridLayout.child"),s.push(n({},h,{y:Math.min(o.bottom(s),h.y),i:p.key}))):s.push({w:1,h:1,x:0,y:o.bottom(s),i:p.key})}}return s=o.correctBounds(s,{cols:r}),s=o.compact(s)},validateLayout:function(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 s=0;s=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r},o=Object.assign||function(t){for(var e=1;et.w||t.minW>t.maxW)&&n("minW",t)},maxW:function(t,e,r){o.PropTypes.number.apply(this,arguments),(t.maxWt.h||t.minH>t.maxH)&&n("minH",t)},maxH:function(t,e,r){o.PropTypes.number.apply(this,arguments),(t.maxH=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r},o=Object.assign||function(t){for(var e=1;es;s++){var a=r[s];e>t[a]&&(n=a)}return n},getColsFromBreakpoint:function(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]},findOrGenerateResponsiveLayout:function(t,e,r,s,i){if(t[r])return t[r];for(var a=t[s],p=o.sortBreakpoints(e),u=p.slice(p.indexOf(r)),h=0,l=u.length;l>h;h++){var c=u[h];if(t[c]){a=t[c];break}}return a=JSON.parse(JSON.stringify(a||[])),n.compact(n.correctBounds(a,{cols:i}))},sortBreakpoints:function(t){var e=Object.keys(t);return e.sort(function(e,r){return t[e]-t[r]})}}},function(t,e,r){function n(t){return null===t||void 0===t}function o(t){return t&&"object"==typeof t&&"number"==typeof t.length?"function"!=typeof t.copy||"function"!=typeof t.slice?!1:t.length>0&&"number"!=typeof t[0]?!1:!0:!1}function s(t,e,r){var s,h;if(n(t)||n(e))return!1;if(t.prototype!==e.prototype)return!1;if(p(t))return p(e)?(t=i.call(t),e=i.call(e),u(t,e,r)):!1;if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(s=0;s=0;s--)if(l[s]!=c[s])return!1;for(s=l.length-1;s>=0;s--)if(h=l[s],!u(t[h],e[h],r))return!1;return typeof t==typeof e}var i=Array.prototype.slice,a=r(19),p=r(18),u=t.exports=function(t,e,r){return r||(r={}),t===e?!0:t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():"object"!=typeof t&&"object"!=typeof e?r.strict?t===e:t==e:s(t,e,r)}},function(t,e,r){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function o(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var s="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=s?n:o,e.supported=n,e.unsupported=o},function(t,e,r){function n(t){var e=[];for(var r in t)e.push(r);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e,r){"use strict";function n(t){return{element:t.getDOMNode(),position:{top:(t._pendingState||t.state).clientY,left:(t._pendingState||t.state).clientX}}}function o(t){return"both"===t.props.axis||"y"===t.props.axis}function s(t){return"both"===t.props.axis||"x"===t.props.axis}function i(t){return"function"==typeof t||"[object Function]"===Object.prototype.toString.call(t)}function a(t,e){for(var r=0,n=(t.length,null);n=t[r];r++)if(e.apply(e,[n,r,t]))return n}function p(t,e){var r=a(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(e){return i(t[e])});return t[r].call(t,e)}function u(t){var e=(""+t.left).replace(/(\d)$/,"$1px"),r=(""+t.top).replace(/(\d)$/,"$1px");return t.transform="translate("+e+","+r+")",t.WebkitTransform="translate("+e+","+r+")",t.OTransform="translate("+e+","+r+")",t.msTransform="translate("+e+","+r+")",t.MozTransform="translate("+e+","+r+")",delete t.left,delete t.top,t}function h(t){var e=t.touches&&t.touches[0]||t;return{clientX:e.clientX,clientY:e.clientY}}function l(t,e,r){t&&(t.attachEvent?t.attachEvent("on"+e,r):t.addEventListener?t.addEventListener(e,r,!0):t["on"+e]=r)}function c(t,e,r){t&&(t.detachEvent?t.detachEvent("on"+e,r):t.removeEventListener?t.removeEventListener(e,r,!0):t["on"+e]=null)}var f=r(1),y=r(5),d=r(7),g=r(6);if("undefined"==typeof window)var m=!1;else var m="ontouchstart"in window||"onmsgesturechange"in window;var v=function(){var t={touch:{start:"touchstart",move:"touchmove",end:"touchend"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup"}};return t[m?"touch":"mouse"]}();t.exports=f.createClass({displayName:"Draggable",mixins:[y],propTypes:{axis:f.PropTypes.oneOf(["both","x","y"]),handle:f.PropTypes.string,cancel:f.PropTypes.string,grid:f.PropTypes.arrayOf(f.PropTypes.number),start:f.PropTypes.object,moveOnStartChange:f.PropTypes.bool,useCSSTransforms:f.PropTypes.bool,zIndex:f.PropTypes.number,onStart:f.PropTypes.func,onDrag:f.PropTypes.func,onStop:f.PropTypes.func,onMouseDown:f.PropTypes.func},componentWillUnmount:function(){c(window,v.move,this.handleDrag),c(window,v.end,this.handleDragEnd)},componentWillReceiveProps:function(t){t.moveOnStartChange&&this.setState({clientX:t.start.x,clientY:t.start.y})},getDefaultProps:function(){return{axis:"both",handle:null,cancel:null,grid:null,start:{x:0,y:0},moveOnStartChange:!1,useCSSTransforms:!1,zIndex:0/0,onStart:d,onDrag:d,onStop:d,onMouseDown:d}},getInitialState:function(){return{dragging:!1,startX:0,startY:0,offsetX:0,offsetY:0,clientX:this.props.start.x,clientY:this.props.start.y}},handleDragStart:function(t){if(this.props.onMouseDown(t),"number"!=typeof t.button||0===t.button){{this.getDOMNode()}if(!(this.props.handle&&!p(t.target,this.props.handle)||this.props.cancel&&p(t.target,this.props.cancel))){var e=h(t);this.setState({dragging:!0,offsetX:parseInt(e.clientX,10),offsetY:parseInt(e.clientY,10),startX:parseInt(this.state.clientX,10)||0,startY:parseInt(this.state.clientY,10)||0}),document.body.className+=" react-draggable-active",this.props.onStart(t,n(this)),l(window,v.move,this.handleDrag),l(window,v.end,this.handleDragEnd)}}},handleDragEnd:function(t){this.state.dragging&&(this.setState({dragging:!1}),document.body.className=document.body.className.replace(" react-draggable-active",""),this.props.onStop(t,n(this)),c(window,v.move,this.handleDrag),c(window,v.end,this.handleDragEnd))},handleDrag:function(t){var e=h(t),r=this.state.startX+(e.clientX-this.state.offsetX),o=this.state.startY+(e.clientY-this.state.offsetY);if(Array.isArray(this.props.grid)){var s=r=this.props.grid[0]?parseInt(this.state.clientX,10)+this.props.grid[0]*s:parseInt(this.state.clientX,10),o=Math.abs(o-parseInt(this.state.clientY,10))>=this.props.grid[1]?parseInt(this.state.clientY,10)+this.props.grid[1]*i:parseInt(this.state.clientY,10)}Array.isArray(this.props.minConstraints)&&(r=Math.max(this.props.minConstraints[0],r),o=Math.max(this.props.minConstraints[1],o)),Array.isArray(this.props.maxConstraints)&&(r=Math.min(this.props.maxConstraints[0],r),o=Math.min(this.props.maxConstraints[1],o)),this.setState({clientX:r,clientY:o}),this.props.onDrag(t,n(this))},render:function(){var t={top:o(this)?this.state.clientY:this.state.startY,left:s(this)?this.state.clientX:this.state.startX};return this.props.useCSSTransforms&&(t=u(t)),this.state.dragging&&!isNaN(this.props.zIndex)&&(t.zIndex=this.props.zIndex),g(f.Children.only(this.props.children),{style:t,className:"react-draggable"+(this.state.dragging?" react-draggable-dragging":""),onMouseDown:this.handleDragStart,onTouchStart:function(t){return t.preventDefault(),this.handleDragStart.apply(this,arguments)}.bind(this),onMouseUp:this.handleDragEnd,onTouchEnd:this.handleDragEnd})}})},function(t,e,r){"use strict";{var n=function(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},o=r(1),s=r(5),i=r(13);t.exports=o.createClass({displayName:"ResizableBox",mixins:[s],propTypes:{},getInitialState:function(){return{width:this.props.width,height:this.props.height}},onResize:function(t,e){var r=(e.element,e.size);(r.width!==this.state.width||r.height!==this.state.height)&&this.setState({width:r.width,height:r.height})},render:function(){var t=this.props.handleSize,e=this.props.minConstraints,r=this.props.maxConstraints,s=n(this.props,["handleSize","minConstraints","maxConstraints"]);return o.createElement(i,{minConstraints:e,maxConstraints:r,handleSize:t,width:this.state.width,height:this.state.height,onResize:this.onResize,draggableOpts:this.props.draggableOpts},o.createElement("div",o.__spread({style:{width:this.state.width+"px",height:this.state.height+"px"}},s),this.props.children))}})}},function(t,e,r){t.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},t.exports.Resizable=r(13),t.exports.ResizableBox=r(21)},function(t,e,r){"use strict";var n=r(4),o=r(27),s=(r(8),{current:o,withContext:function(t,e){var r,o=s.current;s.current=n({},o,t);try{r=e()}finally{s.current=o}return r}});t.exports=s},function(t,e,r){"use strict";var n={current:null};t.exports=n},function(t,e,r){"use strict";var n=r(23),o=r(24),s=r(4),i=(r(8),{key:!0,ref:!0}),a=function(t,e,r,n,o,s){this.type=t,this.key=e,this.ref=r,this._owner=n,this._context=o,this.props=s};a.prototype={_isReactElement:!0},a.createElement=function(t,e,r){var s,p={},u=null,h=null;if(null!=e){h=void 0===e.ref?null:e.ref,u=void 0===e.key?null:""+e.key;for(s in e)e.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(p[s]=e[s])}var l=arguments.length-2;if(1===l)p.children=r;else if(l>1){for(var c=Array(l),f=0;l>f;f++)c[f]=arguments[f+2];p.children=c}if(t&&t.defaultProps){var y=t.defaultProps;for(s in y)"undefined"==typeof p[s]&&(p[s]=y[s])}return new a(t,u,h,o.current,n.current,p)},a.createFactory=function(t){var e=a.createElement.bind(null,t);return e.type=t,e},a.cloneAndReplaceProps=function(t,e){var r=new a(t.type,t.key,t.ref,t._owner,t._context,e);return r},a.cloneElement=function(t,e,r){var n,p=s({},t.props),u=t.key,h=t.ref,l=t._owner;if(null!=e){void 0!==e.ref&&(h=e.ref,l=o.current),void 0!==e.key&&(u=""+e.key);for(n in e)e.hasOwnProperty(n)&&!i.hasOwnProperty(n)&&(p[n]=e[n])}var c=arguments.length-2;if(1===c)p.children=r;else if(c>1){for(var f=Array(c),y=0;c>y;y++)f[y]=arguments[y+2];p.children=f}return new a(t.type,u,h,l,t._context,p)},a.isValidElement=function(t){var e=!(!t||!t._isReactElement);return e},t.exports=a},function(t,e,r){"use strict";function n(t){return function(e,r,n){e[r]=e.hasOwnProperty(r)?t(e[r],n):n}}function o(t,e){for(var r in e)if(e.hasOwnProperty(r)){var n=u[r];n&&u.hasOwnProperty(r)?n(t,r,e[r]):t.hasOwnProperty(r)||(t[r]=e[r])}return t}var s=r(4),i=r(7),a=r(28),p=n(function(t,e){return s({},e,t)}),u={children:i,className:n(a),style:p},h={mergeProps:function(t,e){return o(s({},t),e)}};t.exports=h},function(t,e,r){"use strict";var n={};t.exports=n},function(t,e,r){"use strict";function n(t){t||(t="");var e,r=arguments.length;if(r>1)for(var n=1;r>n;n++)e=arguments[n],e&&(t=(t?t+" ":"")+e);return t}t.exports=n},function(t,e,r){var n=function(t){var e;for(e in t)if(t.hasOwnProperty(e))return e;return null};t.exports=n},function(t,e,r){"use strict";function n(t,e){if(t===e)return!0;var r;for(r in t)if(t.hasOwnProperty(r)&&(!e.hasOwnProperty(r)||t[r]!==e[r]))return!1;for(r in e)if(e.hasOwnProperty(r)&&!t.hasOwnProperty(r))return!1;return!0}t.exports=n}])}); //# sourceMappingURL=react-grid-layout.min.js.map \ No newline at end of file diff --git a/dist/react-grid-layout.min.js.map b/dist/react-grid-layout.min.js.map index 34b2de787..ad9c38605 100644 --- a/dist/react-grid-layout.min.js.map +++ b/dist/react-grid-layout.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///react-grid-layout.min.js","webpack:///webpack/bootstrap 1c5d0227a97de330332b","webpack:///./index-dev.js","webpack:///external \"React\"","webpack:///./lib/utils.js","webpack:///./lib/mixins/PureDeepRenderMixin.js","webpack:///./~/react/lib/Object.assign.js","webpack:///./~/react/lib/ReactComponentWithPureRenderMixin.js","webpack:///./~/react/lib/cloneWithProps.js","webpack:///./~/react/lib/emptyFunction.js","webpack:///./~/react/lib/warning.js","webpack:///./lib/ReactGridLayout.jsx","webpack:///./lib/mixins/WidthListeningMixin.js","webpack:///./~/object-assign/index.js","webpack:///./~/react-draggable/index.js","webpack:///./~/react-resizable/build/Resizable.js","webpack:///./lib/GridItem.jsx","webpack:///./lib/ResponsiveReactGridLayout.jsx","webpack:///./lib/responsiveUtils.js","webpack:///./~/deep-equal/index.js","webpack:///./~/deep-equal/lib/is_arguments.js","webpack:///./~/deep-equal/lib/keys.js","webpack:///./~/react-draggable/lib/draggable.js","webpack:///./~/react-resizable/build/ResizableBox.js","webpack:///./~/react-resizable/index.js","webpack:///./~/react/lib/ReactContext.js","webpack:///./~/react/lib/ReactCurrentOwner.js","webpack:///./~/react/lib/ReactElement.js","webpack:///./~/react/lib/ReactPropTransferer.js","webpack:///./~/react/lib/emptyObject.js","webpack:///./~/react/lib/joinClasses.js","webpack:///./~/react/lib/keyOf.js","webpack:///./~/react/lib/shallowEqual.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","Responsive","assign","utils","bottom","layout","bottomY","max","i","len","length","y","h","clone","obj","collides","l1","l2","x","w","compact","compareWith","getStatics","out","sorted","sortLayoutItemsByRowCol","l","compactItem","push","indexOf","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","layoutItem","getAllCollisions","moveElement","isUserAction","movingUp","undefined","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","Math","perc","num","setTransform","style","coords","replace","transform","WebkitTransform","MozTransform","msTransform","OTransform","concat","sort","a","b","synchronizeLayoutWithChildren","initialLayout","children","child","exists","key","g","props","_grid","validateLayout","min","contextName","subProps","Array","isArray","Error","j","deepEqual","PureDeepRenderMixin","shouldComponentUpdate","nextProps","nextState","state","target","sources","TypeError","to","Object","hasOwnProperty","prototype","nextIndex","arguments","nextSource","from","shallowEqual","ReactComponentWithPureRenderMixin","cloneWithProps","newProps","ReactPropTransferer","mergeProps","CHILDREN_PROP","ReactElement","createElement","type","keyOf","makeEmptyFunction","arg","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","warning","_objectWithoutProperties","keys","_extends","source","React","GridItem","WidthListeningMixin","ReactGridLayout","createClass","displayName","mixins","propTypes","autoSize","PropTypes","bool","number","draggableCancel","string","draggableHandle","_layout","_layoutWrapper","_x","_x2","_x3","apply","toString","propName","componentName","layouts","margin","array","rowHeight","isDraggable","isResizable","useCSSTransforms","onLayoutChange","func","onDragStart","onDrag","onDragStop","onResizeStart","onResize","onResizeStop","_children","_childrenWrapper","node","Children","forEach","list","getDefaultProps","getInitialState","activeDrag","isMounted","width","initialWidth","componentDidMount","setState","componentWillReceiveProps","onWidthChange","JSON","stringify","componentDidUpdate","prevProps","prevState","containerHeight","_ref","e","element","position","oldL","placeholder","size","isPlaceholder","className","containerWidth","processGridItem","draggable","resizable","drag","moveOnStartChange","cancel","handle","usePercentages","render","_props","height","map","listenToWindowResize","window","addEventListener","onWindowResize","componentWillUnmount","removeEventListener","getDOMNode","offsetWidth","ToObject","val","s","calcWH","_ref2","handleSize","left","top","parseConstraints","constraints","Draggable","PureRenderMixin","isRequired","draggableOpts","object","minConstraints","maxConstraints","resizeHandler","handlerName","me","__spread","start","onStop","onStart","constraintError","name","Resizable","minW","maxW","minH","maxH","Infinity","resizing","calcPosition","calcXY","round","floor","mixinDraggable","onDragHandler","mixinResizable","maxWidth","mins","maxes","onResizeHandler","_me$calcXY","_me$calcWH","pos","only","join","responsiveUtils","ResponsiveReactGridLayout","breakpoint","breakpoints","_layouts","_layoutsWrapper","k","onBreakpointChange","lg","md","sm","xs","xxs","getBreakpointFromWidth","getColsFromBreakpoint","findOrGenerateResponsiveLayout","newLayout","newState","parse","sortBreakpoints","matching","breakpointName","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","isUndefinedOrNull","value","isBuffer","copy","objEquiv","opts","isArguments","pSlice","ka","objectKeys","kb","actual","expected","Date","getTime","strict","supported","unsupported","propertyIsEnumerable","supportsArgumentsClass","shim","createUIEvent","_pendingState","clientY","clientX","canDragY","axis","canDragX","isFunction","findInArray","callback","matchesSelector","el","selector","method","positionToCSSTransform","getControlPosition","touches","addEvent","event","handler","attachEvent","removeEvent","detachEvent","isTouchDevice","dragEventFor","eventsFor","touch","move","end","mouse","oneOf","grid","arrayOf","zIndex","onMouseDown","handleDrag","handleDragEnd","NaN","dragging","startX","startY","offsetX","offsetY","handleDragStart","button","dragPoint","parseInt","document","body","directionX","directionY","abs","isNaN","onTouchStart","ev","preventDefault","bind","onMouseUp","onTouchEnd","ResizableBox","emptyObject","ReactContext","current","withContext","newContext","scopedCallback","result","previousContext","ReactCurrentOwner","RESERVED_PROPS","ref","owner","context","_owner","_context","_isReactElement","config","childrenLength","childArray","defaultProps","createFactory","cloneAndReplaceProps","oldElement","newElement","cloneElement","isValidElement","isElement","createTransferStrategy","mergeStrategy","transferInto","thisKey","transferStrategy","TransferStrategies","joinClasses","transferStrategyMerge","oldProps","nextClass","argLength","ii","oneKeyObj","objA","objB"],"mappings":"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","file":"react-grid-layout.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"React\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"React\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"React\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"React\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\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\n\tmodule.exports = __webpack_require__(9);\n\tmodule.exports.Responsive = __webpack_require__(15);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar assign = __webpack_require__(11);\n\n\tvar utils = module.exports = {\n\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\t bottom: function bottom(layout) {\n\t var max = 0,\n\t bottomY;\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\n\t /**\n\t * Clones a shallow object.\n\t * @param {Object} obj Object to clone.\n\t * @return {Object} Cloned object.\n\t */\n\t clone: function clone(obj) {\n\t return assign({}, obj);\n\t },\n\n\t /**\n\t * Given two layouts, check if they collide.\n\t *\n\t * @param {Object} l1 Layout object.\n\t * @param {Object} l2 Layout object.\n\t * @return {Boolean} True if colliding.\n\t */\n\t collides: function collides(l1, l2) {\n\t if (l1 === l2) {\n\t return false;\n\t } // same element\n\t if (l1.x + l1.w <= l2.x) {\n\t return false;\n\t } // l1 is left of l2\n\t if (l1.x >= l2.x + l2.w) {\n\t return false;\n\t } // l1 is right of l2\n\t if (l1.y + l1.h <= l2.y) {\n\t return false;\n\t } // l1 is above l2\n\t if (l1.y >= l2.y + l2.h) {\n\t return false;\n\t } // l1 is below l2\n\t return true; // boxes overlap\n\t },\n\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 * @return {Array} Compacted Layout.\n\t */\n\t compact: function compact(layout) {\n\t // Statics go in the compareWith array right away so items flow around them.\n\t var compareWith = utils.getStatics(layout),\n\t out = [];\n\t // We go through the items by row and column.\n\t var sorted = utils.sortLayoutItemsByRowCol(layout);\n\n\t for (var i = 0, len = sorted.length; i < len; i++) {\n\t var l = sorted[i];\n\n\t // Don't move static elements\n\t if (!l[\"static\"]) {\n\t l = utils.compactItem(compareWith, l);\n\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\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\n\t // Clear moved flag, if it exists.\n\t delete l.moved;\n\t }\n\n\t return out;\n\t },\n\n\t compactItem: function compactItem(compareWith, l) {\n\t // Move the element up as far as it can go without colliding.\n\t while (l.y > 0 && !utils.getFirstCollision(compareWith, l)) {\n\t l.y--;\n\t }\n\n\t // Move it down, and keep moving it down if it's colliding.\n\t var collides;\n\t while (collides = utils.getFirstCollision(compareWith, l)) {\n\t l.y = collides.y + collides.h;\n\t }\n\t return l;\n\t },\n\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 * @return {[type]} [description]\n\t */\n\t correctBounds: function correctBounds(layout, bounds) {\n\t var collidesWith = utils.getStatics(layout);\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t var l = layout[i];\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 (utils.getFirstCollision(collidesWith, l)) {\n\t l.y++;\n\t }\n\t }\n\t }\n\t return layout;\n\t },\n\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 {Number} id ID\n\t * @return {LayoutItem} Item at ID.\n\t */\n\t getLayoutItem: function getLayoutItem(layout, id) {\n\t id = \"\" + id;\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (\"\" + layout[i].i === id) {\n\t return layout[i];\n\t }\n\t }\n\t },\n\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\t getFirstCollision: function getFirstCollision(layout, layoutItem) {\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (utils.collides(layout[i], layoutItem)) {\n\t return layout[i];\n\t }\n\t }\n\t },\n\n\t getAllCollisions: function getAllCollisions(layout, layoutItem) {\n\t var out = [];\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (utils.collides(layout[i], layoutItem)) out.push(layout[i]);\n\t }\n\t return out;\n\t },\n\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\t getStatics: function getStatics(layout) {\n\t var out = [];\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (layout[i][\"static\"]) out.push(layout[i]);\n\t }\n\t return out;\n\t },\n\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\t moveElement: function moveElement(layout, l, x, y, isUserAction) {\n\t if (l[\"static\"]) {\n\t return layout;\n\t } // Short-circuit if nothing to do.\n\t if (l.y === y && l.x === x) {\n\t return layout;\n\t }var movingUp = l.y > y;\n\t // This is quite a bit faster than extending the object\n\t if (x !== undefined) l.x = x;\n\t if (y !== undefined) l.y = y;\n\t l.moved = true;\n\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 = utils.sortLayoutItemsByRowCol(layout);\n\t if (movingUp) sorted = sorted.reverse();\n\t var collisions = utils.getAllCollisions(sorted, l);\n\n\t // Move each item that collides away from this element.\n\t for (var i = 0, len = collisions.length; i < len; i++) {\n\t var collision = collisions[i];\n\t // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\n\t // Short circuit so we can't infinite loop\n\t if (collision.moved) continue;\n\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\n\t // Don't move static items - we have to move *this* element away\n\t if (collision[\"static\"]) {\n\t layout = utils.moveElementAwayFromCollision(layout, collision, l, isUserAction);\n\t } else {\n\t layout = utils.moveElementAwayFromCollision(layout, l, collision, isUserAction);\n\t }\n\t }\n\n\t return layout;\n\t },\n\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\t moveElementAwayFromCollision: function moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction) {\n\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 = {\n\t x: itemToMove.x,\n\t y: itemToMove.y,\n\t w: itemToMove.w,\n\t h: itemToMove.h };\n\t fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n\t if (!utils.getFirstCollision(layout, fakeItem)) {\n\t return utils.moveElement(layout, itemToMove, undefined, fakeItem.y);\n\t }\n\t }\n\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 utils.moveElement(layout, itemToMove, undefined, itemToMove.y + 1);\n\t },\n\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\t perc: function perc(num) {\n\t return num * 100 + \"%\";\n\t },\n\n\t setTransform: function setTransform(style, coords) {\n\t // Replace unitless items with px\n\t var x = (\"\" + coords[0]).replace(/(\\d)$/, \"$1px\");\n\t var y = (\"\" + coords[1]).replace(/(\\d)$/, \"$1px\");\n\t style.transform = \"translate(\" + x + \",\" + y + \")\";\n\t style.WebkitTransform = \"translate(\" + x + \",\" + y + \")\";\n\t style.MozTransform = \"translate(\" + x + \",\" + y + \")\";\n\t style.msTransform = \"translate(\" + x + \",\" + y + \")\";\n\t style.OTransform = \"translate(\" + x + \",\" + y + \")\";\n\t return style;\n\t },\n\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\t sortLayoutItemsByRowCol: function sortLayoutItemsByRowCol(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\n\t /**\n\t * Generate a layout using the initialLayout an 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 * @return {Array} Working layout.\n\t */\n\t synchronizeLayoutWithChildren: function synchronizeLayoutWithChildren(initialLayout, children, cols) {\n\t children = [].concat(children); // ensure 'children' is always an array\n\t initialLayout = initialLayout || [];\n\n\t // Generate one layout item per child.\n\t var layout = [];\n\t for (var i = 0, len = children.length; i < len; i++) {\n\t var child = children[i];\n\t // Don't overwrite if it already exists.\n\t var exists = utils.getLayoutItem(initialLayout, child.key);\n\t if (exists) {\n\t // Ensure 'i' is always a string\n\t exists.i = \"\" + exists.i;\n\t layout.push(exists);\n\t continue;\n\t }\n\t // New item: attempt to use a layout item from the child, if it exists.\n\t var g = child.props._grid;\n\t if (g) {\n\t utils.validateLayout([g], \"ReactGridLayout.child\");\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 layout.push(assign({}, g, { y: Math.min(utils.bottom(layout), g.y), i: child.key }));\n\t } else {\n\t // Nothing provided: ensure this is added to the bottom\n\t layout.push({ w: 1, h: 1, x: 0, y: utils.bottom(layout), i: child.key });\n\t }\n\t }\n\n\t // Correct the layout.\n\t layout = utils.correctBounds(layout, { cols: cols });\n\t layout = utils.compact(layout);\n\n\t return layout;\n\t },\n\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\t validateLayout: function validateLayout(layout, contextName) {\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 i = 0, len = layout.length; i < len; i++) {\n\t for (var j = 0; j < subProps.length; j++) {\n\t if (typeof layout[i][subProps[j]] !== \"number\") {\n\t throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + i + \"].\" + subProps[j] + \" must be a Number!\");\n\t }\n\t }\n\t if (layout[i][\"static\"] !== undefined && typeof layout[i][\"static\"] !== \"boolean\") {\n\t throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + i + \"].static must be a Boolean!\");\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar deepEqual = __webpack_require__(17);\n\n\t// Like PureRenderMixin, but with deep comparisons.\n\tvar PureDeepRenderMixin = {\n\t shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n\t return !deepEqual(this.props, nextProps) || !deepEqual(this.state, nextState);\n\t }\n\t};\n\n\tmodule.exports = PureDeepRenderMixin;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule Object.assign\n\t */\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n\t'use strict';\n\n\tfunction assign(target, sources) {\n\t if (target == null) {\n\t throw new TypeError('Object.assign target cannot be null or undefined');\n\t }\n\n\t var to = Object(target);\n\t var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\t for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n\t var nextSource = arguments[nextIndex];\n\t if (nextSource == null) {\n\t continue;\n\t }\n\n\t var from = Object(nextSource);\n\n\t // We don't currently support accessors nor proxies. Therefore this\n\t // copy cannot throw. If we ever supported this then we must handle\n\t // exceptions and side-effects. We don't support symbols so they won't\n\t // be transferred.\n\n\t for (var key in from) {\n\t if (hasOwnProperty.call(from, key)) {\n\t to[key] = from[key];\n\t }\n\t }\n\t }\n\n\t return to;\n\t}\n\n\tmodule.exports = assign;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t* @providesModule ReactComponentWithPureRenderMixin\n\t*/\n\n\t'use strict';\n\n\tvar shallowEqual = __webpack_require__(30);\n\n\t/**\n\t * If your React component's render function is \"pure\", e.g. it will render the\n\t * same result given the same props and state, provide this Mixin for a\n\t * considerable performance boost.\n\t *\n\t * Most React components have pure render functions.\n\t *\n\t * Example:\n\t *\n\t * var ReactComponentWithPureRenderMixin =\n\t * require('ReactComponentWithPureRenderMixin');\n\t * React.createClass({\n\t * mixins: [ReactComponentWithPureRenderMixin],\n\t *\n\t * render: function() {\n\t * return
foo
;\n\t * }\n\t * });\n\t *\n\t * Note: This only checks shallow equality for props and state. If these contain\n\t * complex data structures this mixin may have false-negatives for deeper\n\t * differences. Only mixin to components which have simple props and state, or\n\t * use `forceUpdate()` when you know deep data structures have changed.\n\t */\n\tvar ReactComponentWithPureRenderMixin = {\n\t shouldComponentUpdate: function(nextProps, nextState) {\n\t return !shallowEqual(this.props, nextProps) ||\n\t !shallowEqual(this.state, nextState);\n\t }\n\t};\n\n\tmodule.exports = ReactComponentWithPureRenderMixin;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks static-only\n\t * @providesModule cloneWithProps\n\t */\n\n\t'use strict';\n\n\tvar ReactElement = __webpack_require__(25);\n\tvar ReactPropTransferer = __webpack_require__(26);\n\n\tvar keyOf = __webpack_require__(29);\n\tvar warning = __webpack_require__(8);\n\n\tvar CHILDREN_PROP = keyOf({children: null});\n\n\t/**\n\t * Sometimes you want to change the props of a child passed to you. Usually\n\t * this is to add a CSS class.\n\t *\n\t * @param {ReactElement} child child element you'd like to clone\n\t * @param {object} props props you'd like to modify. className and style will be\n\t * merged automatically.\n\t * @return {ReactElement} a clone of child with props merged in.\n\t */\n\tfunction cloneWithProps(child, props) {\n\t if (false) {\n\t (\"production\" !== process.env.NODE_ENV ? warning(\n\t !child.ref,\n\t 'You are calling cloneWithProps() on a child with a ref. This is ' +\n\t 'dangerous because you\\'re creating a new child which will not be ' +\n\t 'added as a ref to its parent.'\n\t ) : null);\n\t }\n\n\t var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n\t // Use `child.props.children` if it is provided.\n\t if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n\t child.props.hasOwnProperty(CHILDREN_PROP)) {\n\t newProps.children = child.props.children;\n\t }\n\n\t // The current API doesn't retain _owner and _context, which is why this\n\t // doesn't use ReactElement.cloneAndReplaceProps.\n\t return ReactElement.createElement(child.type, newProps);\n\t}\n\n\tmodule.exports = cloneWithProps;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule emptyFunction\n\t */\n\n\tfunction makeEmptyFunction(arg) {\n\t return function() {\n\t return arg;\n\t };\n\t}\n\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tfunction emptyFunction() {}\n\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function() { return this; };\n\temptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\n\tmodule.exports = emptyFunction;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule warning\n\t */\n\n\t\"use strict\";\n\n\tvar emptyFunction = __webpack_require__(7);\n\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\n\tvar warning = emptyFunction;\n\n\tif (false) {\n\t warning = function(condition, format ) {for (var args=[],$__0=2,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n\t if (format === undefined) {\n\t throw new Error(\n\t '`warning(condition, format, ...args)` requires a warning ' +\n\t 'message argument'\n\t );\n\t }\n\n\t if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n\t throw new Error(\n\t 'The warning format should be able to uniquely identify this ' +\n\t 'warning. Please, use a more descriptive format than: ' + format\n\t );\n\t }\n\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\n\t if (!condition) {\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function() {return args[argIndex++];});\n\t console.warn(message);\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch(x) {}\n\t }\n\t };\n\t}\n\n\tmodule.exports = warning;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _objectWithoutProperties = function (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\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\n\tvar React = __webpack_require__(1);\n\tvar GridItem = __webpack_require__(14);\n\tvar utils = __webpack_require__(2);\n\tvar PureDeepRenderMixin = __webpack_require__(3);\n\tvar WidthListeningMixin = __webpack_require__(10);\n\n\t/**\n\t * A reactive, fluid grid layout with draggable, resizable components.\n\t */\n\tvar ReactGridLayout = React.createClass({\n\t displayName: \"ReactGridLayout\",\n\n\t mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n\t propTypes: {\n\t //\n\t // Basic props\n\t //\n\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\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\n\t // layout is an array of object with the format:\n\t // {x: Number, y: Number, w: Number, h: Number}\n\t layout: (function (_layout) {\n\t var _layoutWrapper = function layout(_x, _x2, _x3) {\n\t return _layout.apply(this, arguments);\n\t };\n\n\t _layoutWrapper.toString = function () {\n\t return _layout.toString();\n\t };\n\n\t return _layoutWrapper;\n\t })(function (props, propName, componentName) {\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 utils.validateLayout(layout, \"layout\");\n\t }),\n\n\t layouts: function layouts(props, propName, componentName) {\n\t if (props.layouts) {\n\t throw new Error(\"ReactGridLayout does not use `layouts`: Use ReactGridLayout.Responsive.\");\n\t }\n\t },\n\n\t // margin between items [x, y] in px\n\t margin: React.PropTypes.array,\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\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\n\t //\n\t // Callbacks\n\t //\n\n\t // Callback so you can save the layout.\n\t // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n\t onLayoutChange: React.PropTypes.func,\n\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\n\t //\n\t // Other validations\n\t //\n\n\t // Children must not have duplicate keys.\n\t children: (function (_children) {\n\t var _childrenWrapper = function children(_x, _x2, _x3) {\n\t return _children.apply(this, arguments);\n\t };\n\n\t _childrenWrapper.toString = function () {\n\t return _children.toString();\n\t };\n\n\t return _childrenWrapper;\n\t })(function (props, propName, componentName) {\n\t React.PropTypes.node.apply(this, arguments);\n\t var children = props[propName];\n\n\t // Check children keys for duplicates. Throw if found.\n\t var keys = {};\n\t React.Children.forEach(children, function (child, i, list) {\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\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t autoSize: true,\n\t cols: 12,\n\t rowHeight: 150,\n\t layout: [],\n\t margin: [10, 10],\n\t isDraggable: true,\n\t isResizable: true,\n\t useCSSTransforms: true,\n\t onLayoutChange: function onLayoutChange() {},\n\t onDragStart: function onDragStart() {},\n\t onDrag: function onDrag() {},\n\t onDragStop: function onDragStop() {},\n\t onResizeStart: function onResizeStart() {},\n\t onResize: function onResize() {},\n\t onResizeStop: function onResizeStop() {}\n\t };\n\t },\n\n\t getInitialState: function getInitialState() {\n\t return {\n\t activeDrag: null,\n\t isMounted: false,\n\t layout: utils.synchronizeLayoutWithChildren(this.props.layout, this.props.children, this.props.cols),\n\t width: this.props.initialWidth\n\t };\n\t },\n\n\t componentDidMount: function componentDidMount() {\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 this.setState({ isMounted: true });\n\t },\n\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t // This allows you to set the width manually if you like.\n\t // Use manual width changes in combination with `listenToWindowResize: false`\n\t if (nextProps.width !== this.props.width) this.onWidthChange(nextProps.width);\n\n\t // If children change, regenerate the layout.\n\t if (nextProps.children.length !== this.props.children.length) {\n\t this.setState({\n\t layout: utils.synchronizeLayoutWithChildren(this.state.layout, nextProps.children, nextProps.cols)\n\t });\n\t }\n\n\t // Allow parent to set layout directly.\n\t if (nextProps.layout && JSON.stringify(nextProps.layout) !== JSON.stringify(this.state.layout)) {\n\t this.setState({\n\t layout: utils.synchronizeLayoutWithChildren(nextProps.layout, nextProps.children, nextProps.cols)\n\t });\n\t }\n\t },\n\n\t componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n\t // Call back so we can store the layout\n\t // Do it only when a resize/drag is not active, otherwise there are way too many callbacks\n\t if (this.state.layout !== prevState.layout && !this.state.activeDrag) {\n\t this.props.onLayoutChange(this.state.layout, this.state.layouts);\n\t }\n\t },\n\n\t /**\n\t * Calculates a pixel value for the container.\n\t * @return {String} Container height in pixels.\n\t */\n\t containerHeight: function containerHeight() {\n\t if (!this.props.autoSize) {\n\t return;\n\t }return utils.bottom(this.state.layout) * this.props.rowHeight + this.props.margin[1] + \"px\";\n\t },\n\n\t /**\n\t * When the width changes, save it to state. This helps with left/width calculations.\n\t */\n\t onWidthChange: function onWidthChange(width) {\n\t this.setState({ width: width });\n\t },\n\n\t /**\n\t * When dragging starts\n\t * @param {Number} 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} element The current dragging DOM element\n\t * @param {Object} position Drag information\n\t */\n\t onDragStart: function onDragStart(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\n\t // No need to clone, `l` hasn't changed.\n\t this.props.onDragStart(layout, l, l, null, e);\n\t },\n\t /**\n\t * Each drag movement create a new dragelement and move the element to the dragged location\n\t * @param {Number} 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} element The current dragging DOM element\n\t * @param {Object} position Drag information\n\t */\n\t onDrag: function onDrag(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t // Clone layout item so we can pass it to the callback.\n\t var oldL = utils.clone(l);\n\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\n\t // Move the element to the dragged location.\n\t layout = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n\t this.props.onDrag(layout, oldL, l, placeholder, e);\n\n\t this.setState({\n\t layout: utils.compact(layout),\n\t activeDrag: placeholder\n\t });\n\t },\n\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 {Number} i Index of the child.\n\t * @param {Number} 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} element The current dragging DOM element\n\t * @param {Object} position Drag information\n\t */\n\t onDragStop: function onDragStop(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t var oldL = utils.clone(l);\n\n\t // Move the element here\n\t layout = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n\t this.props.onDragStop(layout, oldL, l, null, e);\n\n\t // Set state\n\t this.setState({ layout: utils.compact(layout), activeDrag: null });\n\t },\n\n\t onResizeStart: function onResizeStart(i, w, h, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\n\t // No need to clone, item hasn't changed\n\t this.props.onResizeStart(layout, l, l, null, e);\n\t },\n\n\t onResize: function onResize(i, w, h, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t var oldL = utils.clone(l);\n\n\t // Set new width and height.\n\t l.w = w;\n\t l.h = h;\n\n\t // Create placeholder element (display only)\n\t var placeholder = {\n\t w: w, h: h, x: l.x, y: l.y, placeholder: true, i: i\n\t };\n\n\t this.props.onResize(layout, oldL, l, placeholder, e);\n\n\t // Re-compact the layout and set the drag placeholder.\n\t this.setState({ layout: utils.compact(layout), activeDrag: placeholder });\n\t },\n\n\t onResizeStop: function onResizeStop(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t var oldL = utils.clone(l);\n\n\t this.props.onResizeStop(layout, oldL, l, null, e);\n\n\t this.setState({ activeDrag: null, layout: utils.compact(layout) });\n\t },\n\n\t /**\n\t * Create a placeholder object.\n\t * @return {Element} Placeholder div.\n\t */\n\t placeholder: function placeholder() {\n\t if (!this.state.activeDrag) {\n\t return \"\";\n\t } // {...this.state.activeDrag} is pretty slow, actually\n\t return React.createElement(\n\t GridItem,\n\t {\n\t w: this.state.activeDrag.w,\n\t h: this.state.activeDrag.h,\n\t x: this.state.activeDrag.x,\n\t y: this.state.activeDrag.y,\n\t i: this.state.activeDrag.i,\n\t isPlaceholder: true,\n\t className: \"react-grid-placeholder\",\n\t containerWidth: this.state.width,\n\t cols: this.props.cols,\n\t margin: this.props.margin,\n\t rowHeight: this.props.rowHeight,\n\t isDraggable: false,\n\t isResizable: false,\n\t useCSSTransforms: this.props.useCSSTransforms\n\t },\n\t React.createElement(\"div\", null)\n\t );\n\t },\n\n\t /**\n\t * Given a grid item, set its style attributes & surround in a .\n\t * @param {Element} child React element.\n\t * @param {Number} i Index of element.\n\t * @return {Element} Element wrapped in draggable and properly placed.\n\t */\n\t processGridItem: function processGridItem(child) {\n\t var i = child.key;\n\t var l = utils.getLayoutItem(this.state.layout, i);\n\n\t // watchStart property tells Draggable to react to changes in the start param\n\t // Must be turned off on the item we're dragging as the changes in `activeDrag` cause rerenders\n\t var drag = this.state.activeDrag;\n\t var moveOnStartChange = drag && drag.i === i ? false : true;\n\n\t // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n\t var draggable, resizable;\n\t if (l[\"static\"] || this.props.isDraggable === false) draggable = false;\n\t if (l[\"static\"] || this.props.isResizable === false) resizable = false;\n\n\t return React.createElement(\n\t GridItem,\n\t _extends({\n\t containerWidth: this.state.width,\n\t cols: this.props.cols,\n\t margin: this.props.margin,\n\t rowHeight: this.props.rowHeight,\n\t moveOnStartChange: moveOnStartChange,\n\t cancel: this.props.draggableCancel,\n\t handle: this.props.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: this.props.useCSSTransforms && this.state.isMounted,\n\t usePercentages: !this.state.isMounted\n\t }, l),\n\t child\n\t );\n\t },\n\n\t render: function render() {\n\t // Calculate classname\n\t var _props = this.props;\n\t var className = _props.className;\n\n\t var props = _objectWithoutProperties(_props, [\"className\"]);\n\n\t className = \"react-grid-layout \" + (className || \"\");\n\n\t return React.createElement(\n\t \"div\",\n\t _extends({}, props, { className: className, style: { height: this.containerHeight() } }),\n\t React.Children.map(this.props.children, this.processGridItem),\n\t this.placeholder()\n\t );\n\t }\n\t});\n\n\tmodule.exports = ReactGridLayout;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar React = __webpack_require__(1);\n\n\t/**\n\t * A simple mixin that provides facility for listening to container resizes.\n\t */\n\tvar WidthListeningMixin = {\n\n\t propTypes: {\n\t // This allows setting this on the server side\n\t initialWidth: React.PropTypes.number,\n\n\t // If false, you should supply width yourself. Good if you want to debounce resize events\n\t // or reuse a handler from somewhere else.\n\t listenToWindowResize: React.PropTypes.bool\n\t },\n\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t initialWidth: 1280,\n\t listenToWindowResize: true\n\t };\n\t },\n\n\t componentDidMount: function componentDidMount() {\n\t if (this.props.listenToWindowResize) {\n\t window.addEventListener(\"resize\", this.onWindowResize);\n\t // This is intentional. Once to properly set the breakpoint and resize the elements,\n\t // and again to compensate for any scrollbar that appeared because of the first step.\n\t this.onWindowResize();\n\t this.onWindowResize();\n\t }\n\t },\n\n\t componentWillUnmount: function componentWillUnmount() {\n\t window.removeEventListener(\"resize\", this.onWindowResize);\n\t },\n\n\t /**\n\t * On window resize, update width.\n\t */\n\t onWindowResize: function onWindowResize() {\n\t this.onWidthChange(this.getDOMNode().offsetWidth);\n\t }\n\n\t};\n\n\tmodule.exports = WidthListeningMixin;\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction ToObject(val) {\n\t\tif (val == null) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\n\t\treturn Object(val);\n\t}\n\n\tmodule.exports = Object.assign || function (target, source) {\n\t\tvar from;\n\t\tvar keys;\n\t\tvar to = ToObject(target);\n\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = arguments[s];\n\t\t\tkeys = Object.keys(Object(from));\n\n\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\tto[keys[i]] = from[keys[i]];\n\t\t\t}\n\t\t}\n\n\t\treturn to;\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(20);\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar React = __webpack_require__(1);\n\tvar Draggable = __webpack_require__(12);\n\tvar assign = __webpack_require__(11);\n\tvar PureRenderMixin = __webpack_require__(5);\n\tvar cloneWithProps = __webpack_require__(6);\n\n\tvar Resizable = module.exports = React.createClass({\n\t displayName: \"Resizable\",\n\t mixins: [PureRenderMixin],\n\n\t propTypes: {\n\t children: React.PropTypes.element,\n\t // Functions\n\t onResizeStop: React.PropTypes.func,\n\t onResizeStart: React.PropTypes.func,\n\t onResize: React.PropTypes.func,\n\n\t width: React.PropTypes.number.isRequired,\n\t height: React.PropTypes.number.isRequired,\n\t // If you change this, be sure to update your css\n\t handleSize: React.PropTypes.array,\n\t // These will be passed wholesale to react-draggable\n\t draggableOpts: React.PropTypes.object\n\t },\n\n\t getDefaultProps: function () {\n\t return {\n\t handleSize: [20, 20]\n\t };\n\t },\n\n\t minConstraints: function () {\n\t return parseConstraints(this.props.minConstraints, this.props.handleSize[0]) || this.props.handleSize;\n\t },\n\n\t maxConstraints: function () {\n\t return parseConstraints(this.props.maxConstraints, this.props.handleSize[1]);\n\t },\n\n\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 resizeHandler: function (handlerName) {\n\t var me = this;\n\t return function (e, _ref) {\n\t var element = _ref.element;\n\t var position = _ref.position;\n\t me.props[handlerName] && me.props[handlerName](e, { element: element, size: calcWH(position, me.props.handleSize) });\n\t };\n\t },\n\n\t render: function () {\n\t var p = this.props;\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\n\t return cloneWithProps(p.children, assign({}, p, {\n\t children: [p.children.props.children, React.createElement(Draggable, React.__spread({}, p.draggableOpts, {\n\t start: { x: p.width - 20, y: p.height - 20 },\n\t moveOnStartChange: true,\n\t onStop: this.resizeHandler(\"onResizeStop\"),\n\t onStart: this.resizeHandler(\"onResizeStart\"),\n\t onDrag: this.resizeHandler(\"onResize\"),\n\t minConstraints: this.minConstraints(),\n\t maxConstraints: this.maxConstraints()\n\t }), React.createElement(\"span\", {\n\t className: \"react-resizable-handle\"\n\t }))]\n\t }));\n\t }\n\t});\n\n\t/**\n\t * Parse left and top coordinates; we have to add the handle size to get the full picture.\n\t * @param {Number} options.left Left coordinate.\n\t * @param {Number} options.top Top coordinate.\n\t * @param {Array} handleSize Handle data.\n\t * @return {Object} Coordinates\n\t */\n\tfunction calcWH(_ref2, handleSize) {\n\t var left = _ref2.left;\n\t var top = _ref2.top;\n\t return { width: left + handleSize[0], height: top + handleSize[1] };\n\t}\n\n\t/**\n\t * Constraints must be subtracted by the size of the handle to work properly.\n\t * This has a side-effect of effectively limiting the minimum size to the handleSize,\n\t * which IMO is fine.\n\t * @param {Array} constraints Constraints array.\n\t * @param {Array} handleSize Handle size array.\n\t * @return {Array} Transformed constraints.\n\t */\n\tfunction parseConstraints(constraints, handleSize) {\n\t if (!constraints) return;\n\t return constraints.map(function (c) {\n\t return c - handleSize;\n\t });\n\t}\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar React = __webpack_require__(1);\n\tvar cloneWithProps = __webpack_require__(6);\n\tvar utils = __webpack_require__(2);\n\tvar Draggable = __webpack_require__(12);\n\tvar Resizable = __webpack_require__(22).Resizable;\n\tvar PureDeepRenderMixin = __webpack_require__(3);\n\n\t/**\n\t * An individual item within a ReactGridLayout.\n\t */\n\tvar GridItem = React.createClass({\n\t displayName: \"GridItem\",\n\n\t mixins: [PureDeepRenderMixin],\n\n\t propTypes: {\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\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\n\t // All optional\n\t minW: function minW(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.minW > props.w || props.minW > props.maxW) constraintError(\"minW\", props);\n\t },\n\t maxW: function maxW(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.maxW < props.w || props.maxW < props.minW) constraintError(\"maxW\", props);\n\t },\n\t minH: function minH(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.minH > props.h || props.minH > props.maxH) constraintError(\"minH\", props);\n\t },\n\t maxH: function maxH(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.maxH < props.h || props.maxH < props.minH) constraintError(\"maxH\", props);\n\t },\n\n\t // ID is nice to have for callbacks\n\t i: React.PropTypes.string.isRequired,\n\n\t // If true, item will be repositioned when x/y/w/h change\n\t moveOnStartChange: React.PropTypes.bool,\n\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\n\t // Flags\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 isPlaceholder: React.PropTypes.bool,\n\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\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t isDraggable: true,\n\t isResizable: true,\n\t useCSSTransforms: true,\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\t },\n\n\t getInitialState: function getInitialState() {\n\t return {\n\t resizing: false,\n\t className: \"\"\n\t };\n\t },\n\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 calcPosition: function calcPosition(x, y, w, h) {\n\t var p = this.props;\n\t var width = p.containerWidth - p.margin[0];\n\t var out = {\n\t left: width * (x / p.cols) + p.margin[0],\n\t top: p.rowHeight * y + p.margin[1],\n\t width: width * (w / p.cols) - p.margin[0],\n\t height: h * p.rowHeight - p.margin[1]\n\t };\n\t return out;\n\t },\n\n\t /**\n\t * Translate x and y coordinates from pixels to grid units.\n\t * @param {Number} options.left Left offset in pixels.\n\t * @param {Number} options.top Top offset in pixels.\n\t * @return {Object} x and y in grid units.\n\t */\n\t calcXY: function calcXY(_ref) {\n\t var left = _ref.left;\n\t var top = _ref.top;\n\n\t left = left - this.props.margin[0];\n\t top = top - this.props.margin[1];\n\t // This is intentional; because so much of the logic on moving boxes up/down relies\n\t // on an exact y position, we only round the x, not the y.\n\t var x = Math.round(left / this.props.containerWidth * this.props.cols);\n\t var y = Math.floor(top / this.props.rowHeight);\n\t x = Math.max(Math.min(x, this.props.cols), 0);\n\t y = Math.max(y, 0);\n\t return { x: x, y: y };\n\t },\n\n\t /**\n\t * Given a height and width in pixel values, calculate grid units.\n\t * @param {Number} options.height Height in pixels.\n\t * @param {Number} options.width Width in pixels.\n\t * @return {Object} w, h as grid units.\n\t */\n\t calcWH: function calcWH(_ref) {\n\t var height = _ref.height;\n\t var width = _ref.width;\n\n\t width = width + this.props.margin[0];\n\t height = height + this.props.margin[1];\n\t var w = Math.round(width / this.props.containerWidth * this.props.cols);\n\t var h = Math.round(height / this.props.rowHeight);\n\t w = Math.max(Math.min(w, this.props.cols - this.props.x), 0);\n\t h = Math.max(h, 0);\n\t return { w: w, h: h };\n\t },\n\n\t /**\n\t * Mix a Draggable 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 Draggable.\n\t */\n\t mixinDraggable: function mixinDraggable(child, position) {\n\t return React.createElement(\n\t Draggable,\n\t {\n\t start: { x: position.left, y: position.top },\n\t moveOnStartChange: this.props.moveOnStartChange,\n\t onStop: this.onDragHandler(\"onDragStop\"),\n\t onStart: this.onDragHandler(\"onDragStart\"),\n\t onDrag: this.onDragHandler(\"onDrag\"),\n\t handle: this.props.handle,\n\t cancel: \".react-resizable-handle \" + this.props.cancel,\n\t useCSSTransforms: this.props.useCSSTransforms\n\t },\n\t child\n\t );\n\t },\n\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 mixinResizable: function mixinResizable(child, position) {\n\t var p = this.props;\n\t // This is the max possible width - doesn't go to infinity because of the width of the window\n\t var maxWidth = this.calcPosition(0, 0, p.cols - p.x, 0).width;\n\n\t // Calculate min/max constraints using our min & maxes\n\t var mins = this.calcPosition(0, 0, p.minW, p.minH);\n\t var maxes = this.calcPosition(0, 0, p.maxW, p.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 React.createElement(\n\t 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 },\n\t child\n\t );\n\t },\n\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 onDragHandler: function onDragHandler(handlerName) {\n\t var me = this;\n\t return function (e, _ref) {\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t if (!me.props[handlerName]) return;\n\t // Get new XY\n\n\t var _me$calcXY = me.calcXY(position);\n\n\t var x = _me$calcXY.x;\n\t var y = _me$calcXY.y;\n\n\t // Cap x at numCols\n\t x = Math.min(x, me.props.cols - me.props.w);\n\n\t me.props[handlerName](me.props.i, x, y, { e: e, element: element, position: position });\n\t };\n\t },\n\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 onResizeHandler: function onResizeHandler(handlerName) {\n\t var me = this;\n\t return function (e, _ref) {\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t if (!me.props[handlerName]) return;\n\n\t // Get new XY\n\n\t var _me$calcWH = me.calcWH(size);\n\n\t var w = _me$calcWH.w;\n\t var h = _me$calcWH.h;\n\n\t // Cap w at numCols\n\t w = Math.min(w, me.props.cols - me.props.x);\n\t // Ensure w is at least 1\n\t w = Math.max(w, 1);\n\n\t // Min/max capping\n\t w = Math.max(Math.min(w, me.props.maxW), me.props.minW);\n\t h = Math.max(Math.min(h, me.props.maxH), me.props.minH);\n\n\t me.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n\t me.props[handlerName](me.props.i, w, h, { e: e, element: element, size: size });\n\t };\n\t },\n\n\t render: function render() {\n\t var p = this.props,\n\t pos = this.calcPosition(p.x, p.y, p.w, p.h);\n\t if (this.state.resizing) {\n\t pos.width = this.state.resizing.width;\n\t pos.height = this.state.resizing.height;\n\t }\n\n\t var child = cloneWithProps(React.Children.only(this.props.children), {\n\t // Munge a classname. Use passed in classnames and resizing.\n\t // React with merge the classNames.\n\t className: [\"react-grid-item\", this.props.className, this.state.resizing ? \"resizing\" : \"\", this.props.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: {\n\t width: pos.width + \"px\",\n\t height: pos.height + \"px\",\n\t left: pos.left + \"px\",\n\t top: pos.top + \"px\",\n\t position: \"absolute\"\n\t }\n\t });\n\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 //\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\n\t // This is used for server rendering.\n\t if (this.props.usePercentages) {\n\t pos.left = utils.perc(pos.left / p.containerWidth);\n\t child.props.style.left = pos.left;\n\t child.props.style.width = utils.perc(pos.width / p.containerWidth);\n\t }\n\n\t // CSS Transforms support\n\t if (this.props.useCSSTransforms) {\n\t utils.setTransform(child.props.style, [pos.left, pos.top]);\n\t delete child.props.style.left;\n\t delete child.props.style.top;\n\t }\n\n\t // Resizable support. This is usually on but the user can toggle it off.\n\t if (this.props.isResizable) {\n\t child = this.mixinResizable(child, pos);\n\t }\n\n\t // Draggable support. This is always on, except for with placeholders.\n\t if (this.props.isDraggable) {\n\t child = this.mixinDraggable(child, pos);\n\t }\n\n\t return child;\n\t }\n\t});\n\n\tfunction constraintError(name, props) {\n\t delete props.children;\n\t throw new Error(name + \" overrides contraints on gridItem \" + props.i + \". Full props: \" + JSON.stringify(props));\n\t}\n\n\tmodule.exports = GridItem;\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _objectWithoutProperties = function (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\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\n\tvar React = __webpack_require__(1);\n\tvar utils = __webpack_require__(2);\n\tvar responsiveUtils = __webpack_require__(16);\n\tvar PureDeepRenderMixin = __webpack_require__(3);\n\tvar WidthListeningMixin = __webpack_require__(10);\n\tvar ReactGridLayout = __webpack_require__(9);\n\n\t/**\n\t * A wrapper around ReactGridLayout to support responsive breakpoints.\n\t */\n\tvar ResponsiveReactGridLayout = React.createClass({\n\t displayName: \"ResponsiveReactGridLayout\",\n\n\t mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n\t propTypes: {\n\t //\n\t // Basic props\n\t //\n\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: React.PropTypes.string,\n\n\t // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n\t breakpoints: React.PropTypes.object,\n\n\t // # of cols. This is a breakpoint -> cols map\n\t cols: React.PropTypes.object,\n\n\t // layouts is an object mapping breakpoints to layouts.\n\t // e.g. {lg: Layout, md: Layout, ...}\n\t layouts: (function (_layouts) {\n\t var _layoutsWrapper = function layouts(_x, _x2, _x3) {\n\t return _layouts.apply(this, arguments);\n\t };\n\n\t _layoutsWrapper.toString = function () {\n\t return _layouts.toString();\n\t };\n\n\t return _layoutsWrapper;\n\t })(function (props, propName, componentName) {\n\t React.PropTypes.object.isRequired.apply(this, arguments);\n\n\t var layouts = props.layouts;\n\t Object.keys(layouts).map(function (k) {\n\t utils.validateLayout(layouts[k], \"layouts.\" + k);\n\t });\n\t }),\n\n\t //\n\t // Callbacks\n\t //\n\n\t // Calls back with breakpoint and new # cols\n\t onBreakpointChange: React.PropTypes.func,\n\n\t // Callback so you can save the layout.\n\t // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n\t onLayoutChange: React.PropTypes.func\n\t },\n\n\t getDefaultProps: function getDefaultProps() {\n\t return {\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: function onBreakpointChange() {},\n\t onLayoutChange: function onLayoutChange() {}\n\t };\n\t },\n\n\t getInitialState: function getInitialState() {\n\t var breakpoint = this.props.breakpoint || responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, this.props.initialWidth);\n\t var cols = responsiveUtils.getColsFromBreakpoint(breakpoint, this.props.cols);\n\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 = responsiveUtils.findOrGenerateResponsiveLayout(this.props.layouts, this.props.breakpoints, breakpoint, breakpoint, cols);\n\n\t return {\n\t layout: initialLayout,\n\t // storage for layouts obsoleted by breakpoints\n\t layouts: this.props.layouts || {},\n\t breakpoint: breakpoint,\n\t cols: cols,\n\t width: this.props.initialWidth\n\t };\n\t },\n\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t // This allows you to set the width manually if you like.\n\t // Use manual width changes in combination with `listenToWindowResize: false`\n\t if (nextProps.width) this.onWidthChange(nextProps.width);\n\n\t // Allow parent to set breakpoint directly.\n\t if (nextProps.breakpoint !== this.props.breakpoint) {\n\t this.onWidthChange(this.state.width);\n\t }\n\n\t // Allow parent to set layouts directly.\n\t if (nextProps.layouts && nextProps.layouts !== this.state.layouts) {\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 var newLayout = responsiveUtils.findOrGenerateResponsiveLayout(nextProps.layouts, nextProps.breakpoints, this.state.breakpoint, this.state.breakpoint, this.state.cols);\n\n\t this.setState({\n\t layouts: nextProps.layouts,\n\t layout: newLayout\n\t });\n\t }\n\t },\n\n\t /**\n\t * Bubble this up, add `layouts` object.\n\t * @param {Array} layout Layout from inner Grid.\n\t */\n\t onLayoutChange: function onLayoutChange(layout) {\n\t this.state.layouts[this.state.breakpoint] = layout;\n\t this.setState({ layout: layout, layouts: this.state.layouts });\n\t this.props.onLayoutChange(layout, this.state.layouts);\n\t },\n\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 onWidthChange: function onWidthChange(width) {\n\t // Set new breakpoint\n\t var newState = { width: width };\n\t newState.breakpoint = this.props.breakpoint || responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, newState.width);\n\t newState.cols = responsiveUtils.getColsFromBreakpoint(newState.breakpoint, this.props.cols);\n\n\t // Breakpoint change\n\t if (newState.cols !== this.state.cols) {\n\n\t // Store the current layout\n\t newState.layouts = this.state.layouts;\n\t newState.layouts[this.state.breakpoint] = JSON.parse(JSON.stringify(this.state.layout));\n\n\t // Find or generate a new one.\n\t newState.layout = responsiveUtils.findOrGenerateResponsiveLayout(newState.layouts, this.props.breakpoints, newState.breakpoint, this.state.breakpoint, newState.cols);\n\n\t // This adds missing items.\n\t newState.layout = utils.synchronizeLayoutWithChildren(newState.layout, this.props.children, newState.cols);\n\n\t // Store this new layout as well.\n\t newState.layouts[newState.breakpoint] = newState.layout;\n\n\t this.props.onBreakpointChange(newState.breakpoint, newState.cols);\n\t }\n\n\t this.setState(newState);\n\t },\n\n\t render: function render() {\n\t // Don't pass responsive props to RGL.\n\t /*jshint unused:false*/\n\t var _props = this.props;\n\t var layouts = _props.layouts;\n\t var onBreakpointChange = _props.onBreakpointChange;\n\t var breakpoints = _props.breakpoints;\n\n\t var props = _objectWithoutProperties(_props, [\"layouts\", \"onBreakpointChange\", \"breakpoints\"]);\n\n\t return React.createElement(\n\t ReactGridLayout,\n\t _extends({}, props, {\n\t layout: this.state.layout,\n\t cols: this.state.cols,\n\t listenToWindowResize: false,\n\t onLayoutChange: this.onLayoutChange,\n\t width: this.state.width }),\n\t this.props.children\n\t );\n\t }\n\t});\n\n\tmodule.exports = ResponsiveReactGridLayout;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar utils = __webpack_require__(2);\n\n\tvar responsiveUtils = module.exports = {\n\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 getBreakpointFromWidth: function getBreakpointFromWidth(breakpoints, width) {\n\t var sorted = responsiveUtils.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\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\t getColsFromBreakpoint: function getColsFromBreakpoint(breakpoint, cols) {\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\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 {Array} 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 * @return {Array} New layout.\n\t */\n\t findOrGenerateResponsiveLayout: function findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols) {\n\t // If it already exists, just return it.\n\t if (layouts[breakpoint]) {\n\t return layouts[breakpoint];\n\t } // Find or generate the next layout\n\t var layout = layouts[lastBreakpoint];\n\t var breakpointsSorted = responsiveUtils.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 = JSON.parse(JSON.stringify(layout || [])); // clone layout so we don't modify existing items\n\t return utils.compact(utils.correctBounds(layout, { cols: cols }));\n\t },\n\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\t sortBreakpoints: function sortBreakpoints(breakpoints) {\n\t var keys = Object.keys(breakpoints);\n\t return keys.sort(function (a, b) {\n\t return breakpoints[a] - breakpoints[b];\n\t });\n\t }\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pSlice = Array.prototype.slice;\n\tvar objectKeys = __webpack_require__(19);\n\tvar isArguments = __webpack_require__(18);\n\n\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t if (!opts) opts = {};\n\t // 7.1. All identical values are equivalent, as determined by ===.\n\t if (actual === expected) {\n\t return true;\n\n\t } else if (actual instanceof Date && expected instanceof Date) {\n\t return actual.getTime() === expected.getTime();\n\n\t // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t // equivalence is determined by ==.\n\t } else if (typeof actual != 'object' && typeof expected != 'object') {\n\t return opts.strict ? actual === expected : actual == expected;\n\n\t // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t // determined by having the same number of owned properties (as verified\n\t // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t // (although not necessarily the same order), equivalent values for every\n\t // corresponding key, and an identical 'prototype' property. Note: this\n\t // accounts for both named and indexed properties on Arrays.\n\t } else {\n\t return objEquiv(actual, expected, opts);\n\t }\n\t}\n\n\tfunction isUndefinedOrNull(value) {\n\t return value === null || value === undefined;\n\t}\n\n\tfunction isBuffer (x) {\n\t if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t return false;\n\t }\n\t if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t return true;\n\t}\n\n\tfunction objEquiv(a, b, opts) {\n\t var i, key;\n\t if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t return false;\n\t // an identical 'prototype' property.\n\t if (a.prototype !== b.prototype) return false;\n\t //~~~I've managed to break Object.keys through screwy arguments passing.\n\t // Converting to array solves the problem.\n\t if (isArguments(a)) {\n\t if (!isArguments(b)) {\n\t return false;\n\t }\n\t a = pSlice.call(a);\n\t b = pSlice.call(b);\n\t return deepEqual(a, b, opts);\n\t }\n\t if (isBuffer(a)) {\n\t if (!isBuffer(b)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) return false;\n\t for (i = 0; i < a.length; i++) {\n\t if (a[i] !== b[i]) return false;\n\t }\n\t return true;\n\t }\n\t try {\n\t var ka = objectKeys(a),\n\t kb = objectKeys(b);\n\t } catch (e) {//happens when one is a string literal and the other isn't\n\t return false;\n\t }\n\t // having the same number of owned properties (keys incorporates\n\t // hasOwnProperty)\n\t if (ka.length != kb.length)\n\t return false;\n\t //the same set of keys (although not necessarily the same order),\n\t ka.sort();\n\t kb.sort();\n\t //~~~cheap key test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t if (ka[i] != kb[i])\n\t return false;\n\t }\n\t //equivalent values for every corresponding key, and\n\t //~~~possibly expensive deep test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t key = ka[i];\n\t if (!deepEqual(a[key], b[key], opts)) return false;\n\t }\n\t return typeof a === typeof b;\n\t}\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar supportsArgumentsClass = (function(){\n\t return Object.prototype.toString.call(arguments)\n\t})() == '[object Arguments]';\n\n\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\n\texports.supported = supported;\n\tfunction supported(object) {\n\t return Object.prototype.toString.call(object) == '[object Arguments]';\n\t};\n\n\texports.unsupported = unsupported;\n\tfunction unsupported(object){\n\t return object &&\n\t typeof object == 'object' &&\n\t typeof object.length == 'number' &&\n\t Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t false;\n\t};\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = typeof Object.keys === 'function'\n\t ? Object.keys : shim;\n\n\texports.shim = shim;\n\tfunction shim (obj) {\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t return keys;\n\t}\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar React = __webpack_require__(1);\n\tvar PureRenderMixin = __webpack_require__(5);\n\tvar emptyFunction = __webpack_require__(7);\n\tvar cloneWithProps = __webpack_require__(6);\n\n\tfunction createUIEvent(draggable) {\n\t\treturn {\n\t\t\telement: draggable.getDOMNode(),\n\t\t\tposition: {\n\t\t\t\ttop: (draggable._pendingState || draggable.state).clientY,\n\t\t\t\tleft: (draggable._pendingState || draggable.state).clientX\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction canDragY(draggable) {\n\t\treturn draggable.props.axis === 'both' ||\n\t\t\t\tdraggable.props.axis === 'y';\n\t}\n\n\tfunction canDragX(draggable) {\n\t\treturn draggable.props.axis === 'both' ||\n\t\t\t\tdraggable.props.axis === 'x';\n\t}\n\n\tfunction isFunction(func) {\n\t return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n\t}\n\n\t// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\n\tfunction findInArray(array, callback) {\n\t for (var i = 0, length = array.length, element = null; i < length, element = array[i]; i++) {\n\t if (callback.apply(callback, [element, i, array])) return element;\n\t }\n\t}\n\n\tfunction matchesSelector(el, selector) {\n\t var method = findInArray([\n\t 'matches',\n\t 'webkitMatchesSelector',\n\t 'mozMatchesSelector',\n\t 'msMatchesSelector',\n\t 'oMatchesSelector'\n\t ], function(method){\n\t return isFunction(el[method]);\n\t });\n\n\t return el[method].call(el, selector);\n\t}\n\n\tfunction positionToCSSTransform(style) {\n\t\t// Replace unitless items with px\n\t\tvar x = ('' + style.left).replace(/(\\d)$/, '$1px');\n\t\tvar y = ('' + style.top).replace(/(\\d)$/, '$1px');\n\t\tstyle.transform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.WebkitTransform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.OTransform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.msTransform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.MozTransform = 'translate(' + x + ',' + y + ')';\n\t\tdelete style.left;\n\t\tdelete style.top;\n\t\treturn style;\n\t}\n\n\t// @credits: http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript/4819886#4819886\n\t/* Conditional to fix node server side rendering of component */\n\tif (typeof window === 'undefined') {\n\t // Do Node Stuff\n\t var isTouchDevice = false;\n\t} else {\n\t // Do Browser Stuff\n\t var isTouchDevice = 'ontouchstart' in window || // works on most browsers\n\t 'onmsgesturechange' in window; // works on ie10 on ms surface\n\t}\n\n\t// look ::handleDragStart\n\t//function isMultiTouch(e) {\n\t// return e.touches && Array.isArray(e.touches) && e.touches.length > 1\n\t//}\n\n\t/**\n\t * simple abstraction for dragging events names\n\t * */\n\tvar dragEventFor = (function () {\n\t var eventsFor = {\n\t touch: {\n\t start: 'touchstart',\n\t move: 'touchmove',\n\t end: 'touchend'\n\t },\n\t mouse: {\n\t start: 'mousedown',\n\t move: 'mousemove',\n\t end: 'mouseup'\n\t }\n\t };\n\t return eventsFor[isTouchDevice ? 'touch' : 'mouse'];\n\t})();\n\n\t/**\n\t * get {clientX, clientY} positions of control\n\t * */\n\tfunction getControlPosition(e) {\n\t var position = (e.touches && e.touches[0]) || e;\n\t return {\n\t clientX: position.clientX,\n\t clientY: position.clientY\n\t };\n\t}\n\n\tfunction addEvent(el, event, handler) {\n\t\tif (!el) { return; }\n\t\tif (el.attachEvent) {\n\t\t\tel.attachEvent('on' + event, handler);\n\t\t} else if (el.addEventListener) {\n\t\t\tel.addEventListener(event, handler, true);\n\t\t} else {\n\t\t\tel['on' + event] = handler;\n\t\t}\n\t}\n\n\tfunction removeEvent(el, event, handler) {\n\t\tif (!el) { return; }\n\t\tif (el.detachEvent) {\n\t\t\tel.detachEvent('on' + event, handler);\n\t\t} else if (el.removeEventListener) {\n\t\t\tel.removeEventListener(event, handler, true);\n\t\t} else {\n\t\t\tel['on' + event] = null;\n\t\t}\n\t}\n\n\tmodule.exports = React.createClass({\n\t\tdisplayName: 'Draggable',\n\t\tmixins: [PureRenderMixin],\n\n\t\tpropTypes: {\n\t\t\t/**\n\t\t\t * `axis` determines which axis the draggable can move.\n\t\t\t *\n\t\t\t * 'both' allows movement horizontally and vertically.\n\t\t\t * 'x' limits movement to horizontal axis.\n\t\t\t * 'y' limits movement to vertical axis.\n\t\t\t *\n\t\t\t * Defaults to 'both'.\n\t\t\t */\n\t\t\taxis: React.PropTypes.oneOf(['both', 'x', 'y']),\n\n\t\t\t/**\n\t\t\t * `handle` specifies a selector to be used as the handle that initiates drag.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t \treturn (\n\t\t\t * \t \t \t\n\t\t\t * \t \t \t
\n\t\t\t * \t \t \t
Click me to drag
\n\t\t\t * \t \t \t
This is some other content
\n\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\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\thandle: React.PropTypes.string,\n\n\t\t\t/**\n\t\t\t * `cancel` specifies a selector to be used to prevent drag initialization.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return(\n\t\t\t * \t \n\t\t\t * \t
\n\t\t\t * \t \t
You can't drag from here
\n\t\t\t *\t\t\t\t\t\t
Dragging here works fine
\n\t\t\t * \t
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tcancel: React.PropTypes.string,\n\n\t\t\t/**\n\t\t\t * `grid` specifies the x and y that dragging should snap to.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I snap to a 25 x 25 grid
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tgrid: React.PropTypes.arrayOf(React.PropTypes.number),\n\n\t\t\t/**\n\t\t\t * `start` specifies the x and y that the dragged item should start at\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I start with left: 25px; top: 25px;
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tstart: React.PropTypes.object,\n\n\t\t\t/**\n\t\t\t * `moveOnStartChange` tells the Draggable element to reset its position\n\t\t\t * if the `start` parameters are changed. By default, if the `start` \n\t\t\t * parameters change, the Draggable element still remains where it started\n\t\t\t * or was dragged to.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t\t\tonButtonClick: function () {\n\t\t\t * \t\t\t\tthis.setState({clicked: true});\n\t\t\t * \t\t\t},\n\t\t\t * \t render: function () {\n\t\t\t * \t \t\tvar start = this.state.clicked ?\n\t\t\t * \t \t\t {x: 25, y: 25} :\n\t\t\t * \t \t\t {x: 125, y: 125};\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I start with left: 25px; top: 25px;,\n\t\t\t * \t but move to left: 125px; top: 125px; when the button\n\t\t\t * \t is clicked.
\n\t\t\t * \t
Button
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tmoveOnStartChange: React.PropTypes.bool,\n\n\t\t\t/**\n\t\t\t * `useCSSTransforms` if true will place the element using translate(x, y)\n\t\t\t * rather than CSS top/left.\n\t\t\t *\n\t\t\t * This generally gives better performance, and is useful in combination with\n\t\t\t * other layout systems that use translate(), such as react-grid-layout.\n\t\t\t */\n\t\t\tuseCSSTransforms: React.PropTypes.bool,\n\n\t\t\t/**\n\t\t\t * `zIndex` specifies the zIndex to use while dragging.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I have a zIndex
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tzIndex: React.PropTypes.number,\n\n\t\t\t/**\n\t\t\t * Called when dragging starts.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\tfunction (event, ui) {}\n\t\t\t * ```\n\t\t\t *\n\t\t\t * `event` is the Event that was triggered.\n\t\t\t * `ui` is an object:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\t{\n\t\t\t *\t\tposition: {top: 0, left: 0}\n\t\t\t *\t}\n\t\t\t * ```\n\t\t\t */\n\t\t\tonStart: React.PropTypes.func,\n\n\t\t\t/**\n\t\t\t * Called while dragging.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\tfunction (event, ui) {}\n\t\t\t * ```\n\t\t\t *\n\t\t\t * `event` is the Event that was triggered.\n\t\t\t * `ui` is an object:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\t{\n\t\t\t *\t\tposition: {top: 0, left: 0}\n\t\t\t *\t}\n\t\t\t * ```\n\t\t\t */\n\t\t\tonDrag: React.PropTypes.func,\n\n\t\t\t/**\n\t\t\t * Called when dragging stops.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\tfunction (event, ui) {}\n\t\t\t * ```\n\t\t\t *\n\t\t\t * `event` is the Event that was triggered.\n\t\t\t * `ui` is an object:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\t{\n\t\t\t *\t\tposition: {top: 0, left: 0}\n\t\t\t *\t}\n\t\t\t * ```\n\t\t\t */\n\t\t\tonStop: React.PropTypes.func,\n\n\t\t\t/**\n\t\t\t * A workaround option which can be passed if onMouseDown needs to be accessed, \n\t\t\t * since it'll always be blocked (due to that there's internal use of onMouseDown)\n\t\t\t *\n\t\t\t */\n\t\t\tonMouseDown: React.PropTypes.func\n\t\t},\n\n\t\tcomponentWillUnmount: function() {\n\t\t\t// Remove any leftover event handlers\n\t\t\tremoveEvent(window, dragEventFor['move'], this.handleDrag);\n\t\t\tremoveEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t\t},\n\n\t\tcomponentWillReceiveProps: function(nextProps) {\n\t\t\t// If this is set to watch a changing start position, \n\t\t\t// set x and y to the new position.\n\t\t\tif (nextProps.moveOnStartChange) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tclientX: nextProps.start.x,\n\t\t\t\t\tclientY: nextProps.start.y\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tgetDefaultProps: function () {\n\t\t\treturn {\n\t\t\t\taxis: 'both',\n\t\t\t\thandle: null,\n\t\t\t\tcancel: null,\n\t\t\t\tgrid: null,\n\t\t\t\tstart: {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t},\n\t\t\t\tmoveOnStartChange: false,\n\t\t\t\tuseCSSTransforms: false,\n\t\t\t\tzIndex: NaN,\n\t\t\t\tonStart: emptyFunction,\n\t\t\t\tonDrag: emptyFunction,\n\t\t\t\tonStop: emptyFunction,\n\t\t\t\tonMouseDown: emptyFunction\n\t\t\t};\n\t\t},\n\n\t\tgetInitialState: function () {\n\t\t\treturn {\n\t\t\t\t// Whether or not currently dragging\n\t\t\t\tdragging: false,\n\n\t\t\t\t// Start top/left of this.getDOMNode()\n\t\t\t\tstartX: 0, startY: 0,\n\n\t\t\t\t// Offset between start top/left and mouse top/left\n\t\t\t\toffsetX: 0, offsetY: 0,\n\n\t\t\t\t// Current top/left of this.getDOMNode()\n\t\t\t\tclientX: this.props.start.x, clientY: this.props.start.y\n\t\t\t};\n\t\t},\n\n\t\thandleDragStart: function (e) {\n\t // todo: write right implementation to prevent multitouch drag\n\t // prevent multi-touch events\n\t // if (isMultiTouch(e)) {\n\t // this.handleDragEnd.apply(e, arguments);\n\t // return\n\t // }\n\n\t\t\t// Make it possible to attach event handlers on top of this one\n\t\t\tthis.props.onMouseDown(e);\n\n\t\t\t// Only catch left clicks, if clicking\n\t\t\tif (typeof e.button === \"number\" && e.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar node = this.getDOMNode();\n\n\t\t\t// Short circuit if handle or cancel prop was provided and selector doesn't match\n\t\t\tif ((this.props.handle && !matchesSelector(e.target, this.props.handle)) ||\n\t\t\t\t(this.props.cancel && matchesSelector(e.target, this.props.cancel))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t var dragPoint = getControlPosition(e);\n\n\t\t\t// Initiate dragging\n\t\t\tthis.setState({\n\t\t\t\tdragging: true,\n\t\t\t\toffsetX: parseInt(dragPoint.clientX, 10),\n\t\t\t\toffsetY: parseInt(dragPoint.clientY, 10),\n\t\t\t\tstartX: parseInt(this.state.clientX, 10) || 0,\n\t\t\t\tstartY: parseInt(this.state.clientY, 10) || 0\n\t\t\t});\n\n\t\t\t// Add a class to the body to disable user-select. This prevents text from \n\t\t\t// being selected all over the page.\n\t\t\tdocument.body.className += \" react-draggable-active\";\n\n\t\t\t// Call event handler\n\t\t\tthis.props.onStart(e, createUIEvent(this));\n\n\t\t\t// Add event handlers\n\t\t\taddEvent(window, dragEventFor['move'], this.handleDrag);\n\t\t\taddEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t\t},\n\n\t\thandleDragEnd: function (e) {\n\t\t\t// Short circuit if not currently dragging\n\t\t\tif (!this.state.dragging) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Turn off dragging\n\t\t\tthis.setState({\n\t\t\t\tdragging: false\n\t\t\t});\n\n\t\t\t// Remove the body class used to disable user-select.\n\t\t\tdocument.body.className = document.body.className.replace(\" react-draggable-active\", \"\");\n\n\t\t\t// Call event handler\n\t\t\tthis.props.onStop(e, createUIEvent(this));\n\n\t\t\t// Remove event handlers\n\t removeEvent(window, dragEventFor['move'], this.handleDrag);\n\t removeEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t\t},\n\n\t\thandleDrag: function (e) {\n\t var dragPoint = getControlPosition(e);\n\n\t\t\t// Calculate top and left\n\t var clientX = (this.state.startX + (dragPoint.clientX - this.state.offsetX));\n\t var clientY = (this.state.startY + (dragPoint.clientY - this.state.offsetY));\n\n\t\t\t// Snap to grid if prop has been provided\n\t\t\tif (Array.isArray(this.props.grid)) {\n\t\t\t\tvar directionX = clientX < parseInt(this.state.clientX, 10) ? -1 : 1;\n\t\t\t\tvar directionY = clientY < parseInt(this.state.clientY, 10) ? -1 : 1;\n\n\t\t\t\tclientX = Math.abs(clientX - parseInt(this.state.clientX, 10)) >= this.props.grid[0]\n\t\t\t\t\t\t? (parseInt(this.state.clientX, 10) + (this.props.grid[0] * directionX))\n\t\t\t\t\t\t: parseInt(this.state.clientX, 10);\n\n\t\t\t\tclientY = Math.abs(clientY - parseInt(this.state.clientY, 10)) >= this.props.grid[1]\n\t\t\t\t\t\t? (parseInt(this.state.clientY, 10) + (this.props.grid[1] * directionY))\n\t\t\t\t\t\t: parseInt(this.state.clientY, 10);\n\t\t\t}\n\n\t\t\t// Min/max constraints\n\t\t\tif (Array.isArray(this.props.minConstraints)) {\n\t\t\t\tclientX = Math.max(this.props.minConstraints[0], clientX);\n\t\t\t\tclientY = Math.max(this.props.minConstraints[1], clientY);\n\t\t\t}\n\t\t\tif (Array.isArray(this.props.maxConstraints)) {\n\t\t\t\tclientX = Math.min(this.props.maxConstraints[0], clientX);\n\t\t\t\tclientY = Math.min(this.props.maxConstraints[1], clientY);\n\t\t\t}\n\n\t\t\t// Update top and left\n\t\t\tthis.setState({\n\t\t\t\tclientX: clientX,\n\t\t\t\tclientY: clientY\n\t\t\t});\n\n\t\t\t// Call event handler\n\t\t\tthis.props.onDrag(e, createUIEvent(this));\n\t\t},\n\n\t\trender: function () {\n\t\t\tvar style = {\n\t\t\t\t// Set top if vertical drag is enabled\n\t\t\t\ttop: canDragY(this)\n\t\t\t\t\t? this.state.clientY\n\t\t\t\t\t: this.state.startY,\n\n\t\t\t\t// Set left if horizontal drag is enabled\n\t\t\t\tleft: canDragX(this)\n\t\t\t\t\t? this.state.clientX\n\t\t\t\t\t: this.state.startX\n\t\t\t};\n\n\t\t\tif (this.props.useCSSTransforms) {\n\t\t\t\tstyle = positionToCSSTransform(style);\n\t\t\t}\n\n\t\t\t// Set zIndex if currently dragging and prop has been provided\n\t\t\tif (this.state.dragging && !isNaN(this.props.zIndex)) {\n\t\t\t\tstyle.zIndex = this.props.zIndex;\n\t\t\t}\n\n\t\t\t// Reuse the child provided\n\t\t\t// This makes it flexible to use whatever element is wanted (div, ul, etc)\n\t\t\treturn cloneWithProps(React.Children.only(this.props.children), {\n\t\t\t\tstyle: style,\n\t\t\t\tclassName: 'react-draggable' + (this.state.dragging ? ' react-draggable-dragging' : ''),\n\n\t\t\t\tonMouseDown: this.handleDragStart,\n\t\t\t\tonTouchStart: function(ev){\n\t ev.preventDefault(); // prevent for scroll\n\t return this.handleDragStart.apply(this, arguments);\n\t }.bind(this),\n\n\t\t\t\tonMouseUp: this.handleDragEnd,\n\t\t\t\tonTouchEnd: this.handleDragEnd\n\t\t\t});\n\t\t}\n\t});\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _objectWithoutProperties = function (obj, keys) {\n\t var target = {};\n\t for (var i in obj) {\n\t if (keys.indexOf(i) >= 0) continue;\n\t if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n\t target[i] = obj[i];\n\t }\n\n\t return target;\n\t};\n\n\t\"use strict\";\n\tvar React = __webpack_require__(1);\n\tvar PureRenderMixin = __webpack_require__(5);\n\tvar Resizable = __webpack_require__(13);\n\n\t// An example use of Resizable.\n\tvar ResizableBox = module.exports = React.createClass({\n\t displayName: \"ResizableBox\",\n\t mixins: [PureRenderMixin],\n\n\t propTypes: {},\n\n\t getInitialState: function () {\n\t return {\n\t width: this.props.width,\n\t height: this.props.height\n\t };\n\t },\n\n\t onResize: function (event, _ref) {\n\t var element = _ref.element;\n\t var size = _ref.size;\n\t if (size.width !== this.state.width || size.height !== this.state.height) {\n\t this.setState({\n\t width: size.width,\n\t height: size.height\n\t });\n\t }\n\t },\n\n\t render: function () {\n\t // Basic wrapper around a Resizable instance.\n\t // If you use Resizable directly, you are responsible for updating the component\n\t // with a new width and height.\n\t var handleSize = this.props.handleSize;\n\t var minConstraints = this.props.minConstraints;\n\t var maxConstraints = this.props.maxConstraints;\n\t var props = _objectWithoutProperties(this.props, [\"handleSize\", \"minConstraints\", \"maxConstraints\"]);\n\n\t return React.createElement(Resizable, {\n\t minConstraints: minConstraints,\n\t maxConstraints: maxConstraints,\n\t handleSize: handleSize,\n\t width: this.state.width,\n\t height: this.state.height,\n\t onResize: this.onResize,\n\t draggableOpts: this.props.draggableOpts\n\t }, React.createElement(\"div\", React.__spread({\n\t style: { width: this.state.width + \"px\", height: this.state.height + \"px\" }\n\t }, props), this.props.children));\n\t }\n\t});\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = function() {\n\t throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n\t};\n\n\tmodule.exports.Resizable = __webpack_require__(13);\n\tmodule.exports.ResizableBox = __webpack_require__(21);\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactContext\n\t */\n\n\t'use strict';\n\n\tvar assign = __webpack_require__(4);\n\tvar emptyObject = __webpack_require__(27);\n\tvar warning = __webpack_require__(8);\n\n\tvar didWarn = false;\n\n\t/**\n\t * Keeps track of the current context.\n\t *\n\t * The context is automatically passed down the component ownership hierarchy\n\t * and is accessible via `this.context` on ReactCompositeComponents.\n\t */\n\tvar ReactContext = {\n\n\t /**\n\t * @internal\n\t * @type {object}\n\t */\n\t current: emptyObject,\n\n\t /**\n\t * Temporarily extends the current context while executing scopedCallback.\n\t *\n\t * A typical use case might look like\n\t *\n\t * render: function() {\n\t * var children = ReactContext.withContext({foo: 'foo'}, () => (\n\t *\n\t * ));\n\t * return
{children}
;\n\t * }\n\t *\n\t * @param {object} newContext New context to merge into the existing context\n\t * @param {function} scopedCallback Callback to run with the new context\n\t * @return {ReactComponent|array}\n\t */\n\t withContext: function(newContext, scopedCallback) {\n\t if (false) {\n\t (\"production\" !== process.env.NODE_ENV ? warning(\n\t didWarn,\n\t 'withContext is deprecated and will be removed in a future version. ' +\n\t 'Use a wrapper component with getChildContext instead.'\n\t ) : null);\n\n\t didWarn = true;\n\t }\n\n\t var result;\n\t var previousContext = ReactContext.current;\n\t ReactContext.current = assign({}, previousContext, newContext);\n\t try {\n\t result = scopedCallback();\n\t } finally {\n\t ReactContext.current = previousContext;\n\t }\n\t return result;\n\t }\n\n\t};\n\n\tmodule.exports = ReactContext;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactCurrentOwner\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Keeps track of the current owner.\n\t *\n\t * The current owner is the component who should own any components that are\n\t * currently being constructed.\n\t *\n\t * The depth indicate how many composite components are above this render level.\n\t */\n\tvar ReactCurrentOwner = {\n\n\t /**\n\t * @internal\n\t * @type {ReactComponent}\n\t */\n\t current: null\n\n\t};\n\n\tmodule.exports = ReactCurrentOwner;\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactElement\n\t */\n\n\t'use strict';\n\n\tvar ReactContext = __webpack_require__(23);\n\tvar ReactCurrentOwner = __webpack_require__(24);\n\n\tvar assign = __webpack_require__(4);\n\tvar warning = __webpack_require__(8);\n\n\tvar RESERVED_PROPS = {\n\t key: true,\n\t ref: true\n\t};\n\n\t/**\n\t * Warn for mutations.\n\t *\n\t * @internal\n\t * @param {object} object\n\t * @param {string} key\n\t */\n\tfunction defineWarningProperty(object, key) {\n\t Object.defineProperty(object, key, {\n\n\t configurable: false,\n\t enumerable: true,\n\n\t get: function() {\n\t if (!this._store) {\n\t return null;\n\t }\n\t return this._store[key];\n\t },\n\n\t set: function(value) {\n\t (false ? warning(\n\t false,\n\t 'Don\\'t set the %s property of the React element. Instead, ' +\n\t 'specify the correct value when initially creating the element.',\n\t key\n\t ) : null);\n\t this._store[key] = value;\n\t }\n\n\t });\n\t}\n\n\t/**\n\t * This is updated to true if the membrane is successfully created.\n\t */\n\tvar useMutationMembrane = false;\n\n\t/**\n\t * Warn for mutations.\n\t *\n\t * @internal\n\t * @param {object} element\n\t */\n\tfunction defineMutationMembrane(prototype) {\n\t try {\n\t var pseudoFrozenProperties = {\n\t props: true\n\t };\n\t for (var key in pseudoFrozenProperties) {\n\t defineWarningProperty(prototype, key);\n\t }\n\t useMutationMembrane = true;\n\t } catch (x) {\n\t // IE will fail on defineProperty\n\t }\n\t}\n\n\t/**\n\t * Base constructor for all React elements. This is only used to make this\n\t * work with a dynamic instanceof check. Nothing should live on this prototype.\n\t *\n\t * @param {*} type\n\t * @param {string|object} ref\n\t * @param {*} key\n\t * @param {*} props\n\t * @internal\n\t */\n\tvar ReactElement = function(type, key, ref, owner, context, props) {\n\t // Built-in properties that belong on the element\n\t this.type = type;\n\t this.key = key;\n\t this.ref = ref;\n\n\t // Record the component responsible for creating this element.\n\t this._owner = owner;\n\n\t // TODO: Deprecate withContext, and then the context becomes accessible\n\t // through the owner.\n\t this._context = context;\n\n\t if (false) {\n\t // The validation flag and props are currently mutative. We put them on\n\t // an external backing store so that we can freeze the whole object.\n\t // This can be replaced with a WeakMap once they are implemented in\n\t // commonly used development environments.\n\t this._store = {props: props, originalProps: assign({}, props)};\n\n\t // To make comparing ReactElements easier for testing purposes, we make\n\t // the validation flag non-enumerable (where possible, which should\n\t // include every environment we run tests in), so the test framework\n\t // ignores it.\n\t try {\n\t Object.defineProperty(this._store, 'validated', {\n\t configurable: false,\n\t enumerable: false,\n\t writable: true\n\t });\n\t } catch (x) {\n\t }\n\t this._store.validated = false;\n\n\t // We're not allowed to set props directly on the object so we early\n\t // return and rely on the prototype membrane to forward to the backing\n\t // store.\n\t if (useMutationMembrane) {\n\t Object.freeze(this);\n\t return;\n\t }\n\t }\n\n\t this.props = props;\n\t};\n\n\t// We intentionally don't expose the function on the constructor property.\n\t// ReactElement should be indistinguishable from a plain object.\n\tReactElement.prototype = {\n\t _isReactElement: true\n\t};\n\n\tif (false) {\n\t defineMutationMembrane(ReactElement.prototype);\n\t}\n\n\tReactElement.createElement = function(type, config, children) {\n\t var propName;\n\n\t // Reserved names are extracted\n\t var props = {};\n\n\t var key = null;\n\t var ref = null;\n\n\t if (config != null) {\n\t ref = config.ref === undefined ? null : config.ref;\n\t key = config.key === undefined ? null : '' + config.key;\n\t // Remaining properties are added to a new props object\n\t for (propName in config) {\n\t if (config.hasOwnProperty(propName) &&\n\t !RESERVED_PROPS.hasOwnProperty(propName)) {\n\t props[propName] = config[propName];\n\t }\n\t }\n\t }\n\n\t // Children can be more than one argument, and those are transferred onto\n\t // the newly allocated props object.\n\t var childrenLength = arguments.length - 2;\n\t if (childrenLength === 1) {\n\t props.children = children;\n\t } else if (childrenLength > 1) {\n\t var childArray = Array(childrenLength);\n\t for (var i = 0; i < childrenLength; i++) {\n\t childArray[i] = arguments[i + 2];\n\t }\n\t props.children = childArray;\n\t }\n\n\t // Resolve default props\n\t if (type && type.defaultProps) {\n\t var defaultProps = type.defaultProps;\n\t for (propName in defaultProps) {\n\t if (typeof props[propName] === 'undefined') {\n\t props[propName] = defaultProps[propName];\n\t }\n\t }\n\t }\n\n\t return new ReactElement(\n\t type,\n\t key,\n\t ref,\n\t ReactCurrentOwner.current,\n\t ReactContext.current,\n\t props\n\t );\n\t};\n\n\tReactElement.createFactory = function(type) {\n\t var factory = ReactElement.createElement.bind(null, type);\n\t // Expose the type on the factory and the prototype so that it can be\n\t // easily accessed on elements. E.g. .type === Foo.type.\n\t // This should not be named `constructor` since this may not be the function\n\t // that created the element, and it may not even be a constructor.\n\t // Legacy hook TODO: Warn if this is accessed\n\t factory.type = type;\n\t return factory;\n\t};\n\n\tReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n\t var newElement = new ReactElement(\n\t oldElement.type,\n\t oldElement.key,\n\t oldElement.ref,\n\t oldElement._owner,\n\t oldElement._context,\n\t newProps\n\t );\n\n\t if (false) {\n\t // If the key on the original is valid, then the clone is valid\n\t newElement._store.validated = oldElement._store.validated;\n\t }\n\t return newElement;\n\t};\n\n\tReactElement.cloneElement = function(element, config, children) {\n\t var propName;\n\n\t // Original props are copied\n\t var props = assign({}, element.props);\n\n\t // Reserved names are extracted\n\t var key = element.key;\n\t var ref = element.ref;\n\n\t // Owner will be preserved, unless ref is overridden\n\t var owner = element._owner;\n\n\t if (config != null) {\n\t if (config.ref !== undefined) {\n\t // Silently steal the ref from the parent.\n\t ref = config.ref;\n\t owner = ReactCurrentOwner.current;\n\t }\n\t if (config.key !== undefined) {\n\t key = '' + config.key;\n\t }\n\t // Remaining properties override existing props\n\t for (propName in config) {\n\t if (config.hasOwnProperty(propName) &&\n\t !RESERVED_PROPS.hasOwnProperty(propName)) {\n\t props[propName] = config[propName];\n\t }\n\t }\n\t }\n\n\t // Children can be more than one argument, and those are transferred onto\n\t // the newly allocated props object.\n\t var childrenLength = arguments.length - 2;\n\t if (childrenLength === 1) {\n\t props.children = children;\n\t } else if (childrenLength > 1) {\n\t var childArray = Array(childrenLength);\n\t for (var i = 0; i < childrenLength; i++) {\n\t childArray[i] = arguments[i + 2];\n\t }\n\t props.children = childArray;\n\t }\n\n\t return new ReactElement(\n\t element.type,\n\t key,\n\t ref,\n\t owner,\n\t element._context,\n\t props\n\t );\n\t};\n\n\t/**\n\t * @param {?object} object\n\t * @return {boolean} True if `object` is a valid component.\n\t * @final\n\t */\n\tReactElement.isValidElement = function(object) {\n\t // ReactTestUtils is often used outside of beforeEach where as React is\n\t // within it. This leads to two different instances of React on the same\n\t // page. To identify a element from a different React instance we use\n\t // a flag instead of an instanceof check.\n\t var isElement = !!(object && object._isReactElement);\n\t // if (isElement && !(object instanceof ReactElement)) {\n\t // This is an indicator that you're using multiple versions of React at the\n\t // same time. This will screw with ownership and stuff. Fix it, please.\n\t // TODO: We could possibly warn here.\n\t // }\n\t return isElement;\n\t};\n\n\tmodule.exports = ReactElement;\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactPropTransferer\n\t */\n\n\t'use strict';\n\n\tvar assign = __webpack_require__(4);\n\tvar emptyFunction = __webpack_require__(7);\n\tvar joinClasses = __webpack_require__(28);\n\n\t/**\n\t * Creates a transfer strategy that will merge prop values using the supplied\n\t * `mergeStrategy`. If a prop was previously unset, this just sets it.\n\t *\n\t * @param {function} mergeStrategy\n\t * @return {function}\n\t */\n\tfunction createTransferStrategy(mergeStrategy) {\n\t return function(props, key, value) {\n\t if (!props.hasOwnProperty(key)) {\n\t props[key] = value;\n\t } else {\n\t props[key] = mergeStrategy(props[key], value);\n\t }\n\t };\n\t}\n\n\tvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n\t // `merge` overrides the first object's (`props[key]` above) keys using the\n\t // second object's (`value`) keys. An object's style's existing `propA` would\n\t // get overridden. Flip the order here.\n\t return assign({}, b, a);\n\t});\n\n\t/**\n\t * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n\t * NOTE: if you add any more exceptions to this list you should be sure to\n\t * update `cloneWithProps()` accordingly.\n\t */\n\tvar TransferStrategies = {\n\t /**\n\t * Never transfer `children`.\n\t */\n\t children: emptyFunction,\n\t /**\n\t * Transfer the `className` prop by merging them.\n\t */\n\t className: createTransferStrategy(joinClasses),\n\t /**\n\t * Transfer the `style` prop (which is an object) by merging them.\n\t */\n\t style: transferStrategyMerge\n\t};\n\n\t/**\n\t * Mutates the first argument by transferring the properties from the second\n\t * argument.\n\t *\n\t * @param {object} props\n\t * @param {object} newProps\n\t * @return {object}\n\t */\n\tfunction transferInto(props, newProps) {\n\t for (var thisKey in newProps) {\n\t if (!newProps.hasOwnProperty(thisKey)) {\n\t continue;\n\t }\n\n\t var transferStrategy = TransferStrategies[thisKey];\n\n\t if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n\t transferStrategy(props, thisKey, newProps[thisKey]);\n\t } else if (!props.hasOwnProperty(thisKey)) {\n\t props[thisKey] = newProps[thisKey];\n\t }\n\t }\n\t return props;\n\t}\n\n\t/**\n\t * ReactPropTransferer are capable of transferring props to another component\n\t * using a `transferPropsTo` method.\n\t *\n\t * @class ReactPropTransferer\n\t */\n\tvar ReactPropTransferer = {\n\n\t /**\n\t * Merge two props objects using TransferStrategies.\n\t *\n\t * @param {object} oldProps original props (they take precedence)\n\t * @param {object} newProps new props to merge in\n\t * @return {object} a new object containing both sets of props merged.\n\t */\n\t mergeProps: function(oldProps, newProps) {\n\t return transferInto(assign({}, oldProps), newProps);\n\t }\n\n\t};\n\n\tmodule.exports = ReactPropTransferer;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule emptyObject\n\t */\n\n\t\"use strict\";\n\n\tvar emptyObject = {};\n\n\tif (false) {\n\t Object.freeze(emptyObject);\n\t}\n\n\tmodule.exports = emptyObject;\n\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule joinClasses\n\t * @typechecks static-only\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Combines multiple className strings into one.\n\t * http://jsperf.com/joinclasses-args-vs-array\n\t *\n\t * @param {...?string} classes\n\t * @return {string}\n\t */\n\tfunction joinClasses(className/*, ... */) {\n\t if (!className) {\n\t className = '';\n\t }\n\t var nextClass;\n\t var argLength = arguments.length;\n\t if (argLength > 1) {\n\t for (var ii = 1; ii < argLength; ii++) {\n\t nextClass = arguments[ii];\n\t if (nextClass) {\n\t className = (className ? className + ' ' : '') + nextClass;\n\t }\n\t }\n\t }\n\t return className;\n\t}\n\n\tmodule.exports = joinClasses;\n\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule keyOf\n\t */\n\n\t/**\n\t * Allows extraction of a minified key. Let's the build system minify keys\n\t * without loosing the ability to dynamically use key strings as values\n\t * themselves. Pass in an object with a single key/val pair and it will return\n\t * you the string key of that single record. Suppose you want to grab the\n\t * value for a key 'className' inside of an object. Key/val minification may\n\t * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n\t * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n\t * reuse those resolutions.\n\t */\n\tvar keyOf = function(oneKeyObj) {\n\t var key;\n\t for (key in oneKeyObj) {\n\t if (!oneKeyObj.hasOwnProperty(key)) {\n\t continue;\n\t }\n\t return key;\n\t }\n\t return null;\n\t};\n\n\n\tmodule.exports = keyOf;\n\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule shallowEqual\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Performs equality by iterating through keys on an object and returning\n\t * false when any key has values which are not strictly equal between\n\t * objA and objB. Returns true when the values of all keys are strictly equal.\n\t *\n\t * @return {boolean}\n\t */\n\tfunction shallowEqual(objA, objB) {\n\t if (objA === objB) {\n\t return true;\n\t }\n\t var key;\n\t // Test for A's keys different from B.\n\t for (key in objA) {\n\t if (objA.hasOwnProperty(key) &&\n\t (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n\t return false;\n\t }\n\t }\n\t // Test for B's keys missing from A.\n\t for (key in objB) {\n\t if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\n\tmodule.exports = shallowEqual;\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/** WEBPACK FOOTER **\n ** webpack/bootstrap 1c5d0227a97de330332b\n **/","module.exports = require('./lib/ReactGridLayout');\nmodule.exports.Responsive = require('./lib/ResponsiveReactGridLayout');\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 \"React\"\n ** module id = 1\n ** module chunks = 0\n **/","'use strict';\n\nvar assign = require('object-assign');\n\nvar utils = module.exports = {\n\n /**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\n bottom(layout) {\n var max = 0, bottomY;\n for (var 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\n /**\n * Clones a shallow object.\n * @param {Object} obj Object to clone.\n * @return {Object} Cloned object.\n */\n clone(obj) {\n return assign({}, obj);\n },\n\n /**\n * Given two layouts, check if they collide.\n *\n * @param {Object} l1 Layout object.\n * @param {Object} l2 Layout object.\n * @return {Boolean} True if colliding.\n */\n collides(l1, l2) {\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 * @return {Array} Compacted Layout.\n */\n compact(layout) {\n // Statics go in the compareWith array right away so items flow around them.\n var compareWith = utils.getStatics(layout), out = [];\n // We go through the items by row and column.\n var sorted = utils.sortLayoutItemsByRowCol(layout);\n\n for (var i = 0, len = sorted.length; i < len; i++) {\n var l = sorted[i];\n\n // Don't move static elements\n if (!l.static) {\n l = utils.compactItem(compareWith, l);\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 delete l.moved;\n }\n\n return out;\n },\n\n compactItem(compareWith, l) {\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !utils.getFirstCollision(compareWith, l)) {\n l.y--;\n }\n\n // Move it down, and keep moving it down if it's colliding.\n var collides;\n while((collides = utils.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 * @return {[type]} [description]\n */\n correctBounds(layout, bounds) {\n var collidesWith = utils.getStatics(layout);\n for (var i = 0, len = layout.length; i < len; i++) {\n var 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(utils.getFirstCollision(collidesWith, l)) {\n l.y++;\n }\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 {Number} id ID\n * @return {LayoutItem} Item at ID.\n */\n getLayoutItem(layout, id) {\n id = \"\" + id;\n for (var 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 */\n getFirstCollision(layout, layoutItem) {\n for (var i = 0, len = layout.length; i < len; i++) {\n if (utils.collides(layout[i], layoutItem)) return layout[i];\n }\n },\n\n getAllCollisions(layout, layoutItem) {\n var out = [];\n for (var i = 0, len = layout.length; i < len; i++) {\n if (utils.collides(layout[i], layoutItem)) out.push(layout[i]);\n }\n return out;\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 */\n getStatics(layout) {\n var out = [];\n for (var i = 0, len = layout.length; i < len; i++) {\n if (layout[i].static) out.push(layout[i]);\n }\n return out;\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 */\n moveElement(layout, l, x, y, isUserAction) {\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 var movingUp = l.y > y;\n // This is quite a bit faster than extending the object\n if (x !== undefined) l.x = x;\n if (y !== undefined) 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 var sorted = utils.sortLayoutItemsByRowCol(layout);\n if (movingUp) sorted = sorted.reverse();\n var collisions = utils.getAllCollisions(sorted, l);\n\n // Move each item that collides away from this element.\n for (var i = 0, len = collisions.length; i < len; i++) {\n var 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 = utils.moveElementAwayFromCollision(layout, collision, l, isUserAction);\n } else {\n layout = utils.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 */\n moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction) {\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 var fakeItem = {\n x: itemToMove.x,\n y: itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n };\n fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n if (!utils.getFirstCollision(layout, fakeItem)) {\n return utils.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 utils.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 */\n perc(num) {\n return num * 100 + '%';\n },\n\n setTransform(style, coords) {\n // Replace unitless items with px\n var x = ('' + coords[0]).replace(/(\\d)$/, '$1px');\n var y = ('' + coords[1]).replace(/(\\d)$/, '$1px');\n style.transform = \"translate(\" + x + \",\" + y + \")\";\n style.WebkitTransform = \"translate(\" + x + \",\" + y + \")\";\n style.MozTransform = \"translate(\" + x + \",\" + y + \")\";\n style.msTransform = \"translate(\" + x + \",\" + y + \")\";\n style.OTransform = \"translate(\" + x + \",\" + y + \")\";\n return style;\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 */\n sortLayoutItemsByRowCol(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 an 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 * @return {Array} Working layout.\n */\n synchronizeLayoutWithChildren(initialLayout, children, cols) {\n children = [].concat(children); // ensure 'children' is always an array\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n var layout = [];\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n // Don't overwrite if it already exists.\n var exists = utils.getLayoutItem(initialLayout, child.key);\n if (exists) {\n // Ensure 'i' is always a string\n exists.i = '' + exists.i;\n layout.push(exists);\n continue;\n }\n // New item: attempt to use a layout item from the child, if it exists.\n var g = child.props._grid;\n if (g) {\n utils.validateLayout([g], 'ReactGridLayout.child');\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 layout.push(assign({}, g, {y: Math.min(utils.bottom(layout), g.y), i: child.key}));\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout.push({w: 1, h: 1, x: 0, y: utils.bottom(layout), i: child.key});\n }\n }\n\n // Correct the layout.\n layout = utils.correctBounds(layout, {cols: cols});\n layout = utils.compact(layout);\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 */\n validateLayout(layout, contextName) {\n contextName = contextName || \"Layout\";\n var subProps = ['x', 'y', 'w', 'h'];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n for (var i = 0, len = layout.length; i < len; i++) {\n for (var j = 0; j < subProps.length; j++) {\n if (typeof layout[i][subProps[j]] !== 'number') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a Number!');\n }\n }\n if (layout[i].static !== undefined && typeof layout[i].static !== 'boolean') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].static must be a Boolean!');\n }\n }\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/utils.js\n **/","'use strict';\nvar deepEqual = require('deep-equal');\n\n// Like PureRenderMixin, but with deep comparisons.\nvar PureDeepRenderMixin = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return !deepEqual(this.props, nextProps) ||\n !deepEqual(this.state, nextState);\n }\n};\n\nmodule.exports = PureDeepRenderMixin;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/mixins/PureDeepRenderMixin.js\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n'use strict';\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/Object.assign.js\n ** module id = 4\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactComponentWithPureRenderMixin\n*/\n\n'use strict';\n\nvar shallowEqual = require(\"./shallowEqual\");\n\n/**\n * If your React component's render function is \"pure\", e.g. it will render the\n * same result given the same props and state, provide this Mixin for a\n * considerable performance boost.\n *\n * Most React components have pure render functions.\n *\n * Example:\n *\n * var ReactComponentWithPureRenderMixin =\n * require('ReactComponentWithPureRenderMixin');\n * React.createClass({\n * mixins: [ReactComponentWithPureRenderMixin],\n *\n * render: function() {\n * return
foo
;\n * }\n * });\n *\n * Note: This only checks shallow equality for props and state. If these contain\n * complex data structures this mixin may have false-negatives for deeper\n * differences. Only mixin to components which have simple props and state, or\n * use `forceUpdate()` when you know deep data structures have changed.\n */\nvar ReactComponentWithPureRenderMixin = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState);\n }\n};\n\nmodule.exports = ReactComponentWithPureRenderMixin;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactComponentWithPureRenderMixin.js\n ** module id = 5\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n * @providesModule cloneWithProps\n */\n\n'use strict';\n\nvar ReactElement = require(\"./ReactElement\");\nvar ReactPropTransferer = require(\"./ReactPropTransferer\");\n\nvar keyOf = require(\"./keyOf\");\nvar warning = require(\"./warning\");\n\nvar CHILDREN_PROP = keyOf({children: null});\n\n/**\n * Sometimes you want to change the props of a child passed to you. Usually\n * this is to add a CSS class.\n *\n * @param {ReactElement} child child element you'd like to clone\n * @param {object} props props you'd like to modify. className and style will be\n * merged automatically.\n * @return {ReactElement} a clone of child with props merged in.\n */\nfunction cloneWithProps(child, props) {\n if (\"production\" !== process.env.NODE_ENV) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n !child.ref,\n 'You are calling cloneWithProps() on a child with a ref. This is ' +\n 'dangerous because you\\'re creating a new child which will not be ' +\n 'added as a ref to its parent.'\n ) : null);\n }\n\n var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n // Use `child.props.children` if it is provided.\n if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n child.props.hasOwnProperty(CHILDREN_PROP)) {\n newProps.children = child.props.children;\n }\n\n // The current API doesn't retain _owner and _context, which is why this\n // doesn't use ReactElement.cloneAndReplaceProps.\n return ReactElement.createElement(child.type, newProps);\n}\n\nmodule.exports = cloneWithProps;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/cloneWithProps.js\n ** module id = 6\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyFunction\n */\n\nfunction makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function() { return this; };\nemptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\nmodule.exports = emptyFunction;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/emptyFunction.js\n ** module id = 7\n ** module chunks = 0\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\"use strict\";\n\nvar emptyFunction = require(\"./emptyFunction\");\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (\"production\" !== process.env.NODE_ENV) {\n warning = function(condition, format ) {for (var args=[],$__0=2,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function() {return args[argIndex++];});\n console.warn(message);\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/warning.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\nvar React = require('react');\nvar GridItem = require('./GridItem');\nvar utils = require('./utils');\nvar PureDeepRenderMixin = require('./mixins/PureDeepRenderMixin');\nvar WidthListeningMixin = require('./mixins/WidthListeningMixin');\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\nvar ReactGridLayout = React.createClass({\n mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n propTypes: {\n //\n // Basic props\n //\n\n // If true, the container height swells and contracts to fit contents\n autoSize: React.PropTypes.bool,\n // # of cols.\n cols: React.PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: React.PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: React.PropTypes.string,\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number}\n layout: function(props, propName, componentName) {\n var layout = props.layout;\n // I hope you're setting the _grid property on the grid items\n if (layout === undefined) return;\n utils.validateLayout(layout, 'layout');\n },\n\n layouts: function(props, propName, componentName) {\n if (props.layouts) {\n throw new Error(\"ReactGridLayout does not use `layouts`: Use ReactGridLayout.Responsive.\");\n }\n },\n\n // margin between items [x, y] in px\n margin: React.PropTypes.array,\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: React.PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: React.PropTypes.bool,\n isResizable: React.PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: React.PropTypes.bool,\n\n //\n // Callbacks\n //\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 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: React.PropTypes.func,\n // Calls on each drag movement.\n onDrag: React.PropTypes.func,\n // Calls when drag is complete.\n onDragStop: React.PropTypes.func,\n //Calls when resize starts.\n onResizeStart: React.PropTypes.func,\n // Calls when resize movement happens.\n onResize: React.PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: React.PropTypes.func,\n\n //\n // Other validations\n //\n\n // Children must not have duplicate keys.\n children: function(props, propName, componentName) {\n React.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, i, list) {\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 getDefaultProps() {\n return {\n autoSize: true,\n cols: 12,\n rowHeight: 150,\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n onLayoutChange: function(){},\n onDragStart: function() {},\n onDrag: function() {},\n onDragStop: function() {},\n onResizeStart: function() {},\n onResize: function() {},\n onResizeStop: function() {}\n };\n },\n\n getInitialState() {\n return {\n activeDrag: null,\n isMounted: false,\n layout: utils.synchronizeLayoutWithChildren(this.props.layout, this.props.children, this.props.cols),\n width: this.props.initialWidth\n };\n },\n\n componentDidMount() {\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 this.setState({isMounted: true});\n },\n\n componentWillReceiveProps(nextProps) {\n // This allows you to set the width manually if you like.\n // Use manual width changes in combination with `listenToWindowResize: false`\n if (nextProps.width !== this.props.width) this.onWidthChange(nextProps.width);\n\n // If children change, regenerate the layout.\n if (nextProps.children.length !== this.props.children.length) {\n this.setState({\n layout: utils.synchronizeLayoutWithChildren(this.state.layout, nextProps.children, nextProps.cols)\n });\n }\n\n // Allow parent to set layout directly.\n if (nextProps.layout && JSON.stringify(nextProps.layout) !== JSON.stringify(this.state.layout)) {\n this.setState({\n layout: utils.synchronizeLayoutWithChildren(nextProps.layout, nextProps.children, nextProps.cols)\n });\n }\n },\n\n componentDidUpdate(prevProps, prevState) {\n // Call back so we can store the layout\n // Do it only when a resize/drag is not active, otherwise there are way too many callbacks\n if (this.state.layout !== prevState.layout && !this.state.activeDrag) {\n this.props.onLayoutChange(this.state.layout, this.state.layouts);\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 utils.bottom(this.state.layout) * this.props.rowHeight + this.props.margin[1] + 'px';\n },\n\n /**\n * When the width changes, save it to state. This helps with left/width calculations.\n */\n onWidthChange(width) {\n this.setState({width: width});\n },\n\n /**\n * When dragging starts\n * @param {Number} 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} element The current dragging DOM element\n * @param {Object} position Drag information\n */\n onDragStart(i, x, y, {e, element, position}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n\n // No need to clone, `l` hasn't changed.\n this.props.onDragStart(layout, l, l, null, e);\n },\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {Number} 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} element The current dragging DOM element\n * @param {Object} position Drag information\n */\n onDrag(i, x, y, {e, element, position}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n // Clone layout item so we can pass it to the callback.\n var oldL = utils.clone(l);\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 = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n this.props.onDrag(layout, oldL, l, placeholder, e);\n\n\n this.setState({\n layout: utils.compact(layout),\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 {Number} i Index of the child.\n * @param {Number} 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} element The current dragging DOM element\n * @param {Object} position Drag information\n */\n onDragStop(i, x, y, {e, element, position}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n var oldL = utils.clone(l);\n\n // Move the element here\n layout = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n this.props.onDragStop(layout, oldL, l, null, e);\n\n // Set state\n this.setState({layout: utils.compact(layout), activeDrag: null});\n },\n\n onResizeStart(i, w, h, {e, element, size}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n\n // No need to clone, item hasn't changed\n this.props.onResizeStart(layout, l, l, null, e);\n },\n\n onResize(i, w, h, {e, element, size}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n var oldL = utils.clone(l);\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, placeholder: true, i: i\n };\n\n this.props.onResize(layout, oldL, l, placeholder, e);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({layout: utils.compact(layout), activeDrag: placeholder});\n },\n\n onResizeStop(i, x, y, {e, element, size}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n var oldL = utils.clone(l);\n\n this.props.onResizeStop(layout, oldL, l, null, e);\n\n this.setState({activeDrag: null, layout: utils.compact(layout)});\n },\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder() {\n if (!this.state.activeDrag) return '';\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 * @param {Number} i Index of element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(child) {\n var i = child.key;\n var l = utils.getLayoutItem(this.state.layout, i);\n\n // watchStart property tells Draggable to react to changes in the start param\n // Must be turned off on the item we're dragging as the changes in `activeDrag` cause rerenders\n var drag = this.state.activeDrag;\n var moveOnStartChange = drag && drag.i === i ? false : true;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n var draggable, resizable;\n if (l.static || this.props.isDraggable === false) draggable = false;\n if (l.static || this.props.isResizable === false) resizable = false;\n\n return (\n \n {child}\n \n );\n },\n\n render() {\n // Calculate classname\n var {className, ...props} = this.props;\n className = 'react-grid-layout ' + (className || '');\n\n return (\n
\n {React.Children.map(this.props.children, this.processGridItem)}\n {this.placeholder()}\n
\n );\n }\n});\n\nmodule.exports = ReactGridLayout;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/ReactGridLayout.jsx\n **/","'use strict';\nvar React = require('react');\n\n/**\n * A simple mixin that provides facility for listening to container resizes.\n */\nvar WidthListeningMixin = {\n\n propTypes: {\n // This allows setting this on the server side\n initialWidth: React.PropTypes.number,\n\n // If false, you should supply width yourself. Good if you want to debounce resize events\n // or reuse a handler from somewhere else.\n listenToWindowResize: React.PropTypes.bool\n },\n\n getDefaultProps: function() {\n return {\n initialWidth: 1280,\n listenToWindowResize: true\n };\n },\n\n componentDidMount: function() {\n if (this.props.listenToWindowResize) {\n window.addEventListener('resize', this.onWindowResize);\n // This is intentional. Once to properly set the breakpoint and resize the elements,\n // and again to compensate for any scrollbar that appeared because of the first step.\n this.onWindowResize();\n this.onWindowResize();\n }\n },\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.onWindowResize);\n },\n\n /**\n * On window resize, update width.\n */\n onWindowResize: function() {\n this.onWidthChange(this.getDOMNode().offsetWidth);\n }\n\n};\n\nmodule.exports = WidthListeningMixin;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/mixins/WidthListeningMixin.js\n **/","'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/object-assign/index.js\n ** module id = 11\n ** module chunks = 0\n **/","module.exports = require('./lib/draggable');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-draggable/index.js\n ** module id = 12\n ** module chunks = 0\n **/","\"use strict\";\nvar React = require(\"react\");\nvar Draggable = require(\"react-draggable\");\nvar assign = require(\"object-assign\");\nvar PureRenderMixin = require(\"react/lib/ReactComponentWithPureRenderMixin\");\nvar cloneWithProps = require(\"react/lib/cloneWithProps\");\n\nvar Resizable = module.exports = React.createClass({\n displayName: \"Resizable\",\n mixins: [PureRenderMixin],\n\n propTypes: {\n children: React.PropTypes.element,\n // Functions\n onResizeStop: React.PropTypes.func,\n onResizeStart: React.PropTypes.func,\n onResize: React.PropTypes.func,\n\n width: React.PropTypes.number.isRequired,\n height: React.PropTypes.number.isRequired,\n // If you change this, be sure to update your css\n handleSize: React.PropTypes.array,\n // These will be passed wholesale to react-draggable\n draggableOpts: React.PropTypes.object\n },\n\n getDefaultProps: function () {\n return {\n handleSize: [20, 20]\n };\n },\n\n minConstraints: function () {\n return parseConstraints(this.props.minConstraints, this.props.handleSize[0]) || this.props.handleSize;\n },\n\n maxConstraints: function () {\n return parseConstraints(this.props.maxConstraints, this.props.handleSize[1]);\n },\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 resizeHandler: function (handlerName) {\n var me = this;\n return function (e, _ref) {\n var element = _ref.element;\n var position = _ref.position;\n me.props[handlerName] && me.props[handlerName](e, { element: element, size: calcWH(position, me.props.handleSize) });\n };\n },\n\n render: function () {\n var p = this.props;\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\n return cloneWithProps(p.children, assign({}, p, {\n children: [p.children.props.children, React.createElement(Draggable, React.__spread({}, p.draggableOpts, {\n start: { x: p.width - 20, y: p.height - 20 },\n moveOnStartChange: true,\n onStop: this.resizeHandler(\"onResizeStop\"),\n onStart: this.resizeHandler(\"onResizeStart\"),\n onDrag: this.resizeHandler(\"onResize\"),\n minConstraints: this.minConstraints(),\n maxConstraints: this.maxConstraints()\n }), React.createElement(\"span\", {\n className: \"react-resizable-handle\"\n }))]\n }));\n }\n});\n\n/**\n * Parse left and top coordinates; we have to add the handle size to get the full picture.\n * @param {Number} options.left Left coordinate.\n * @param {Number} options.top Top coordinate.\n * @param {Array} handleSize Handle data.\n * @return {Object} Coordinates\n */\nfunction calcWH(_ref2, handleSize) {\n var left = _ref2.left;\n var top = _ref2.top;\n return { width: left + handleSize[0], height: top + handleSize[1] };\n}\n\n/**\n * Constraints must be subtracted by the size of the handle to work properly.\n * This has a side-effect of effectively limiting the minimum size to the handleSize,\n * which IMO is fine.\n * @param {Array} constraints Constraints array.\n * @param {Array} handleSize Handle size array.\n * @return {Array} Transformed constraints.\n */\nfunction parseConstraints(constraints, handleSize) {\n if (!constraints) return;\n return constraints.map(function (c) {\n return c - handleSize;\n });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/Resizable.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\nvar React = require('react');\nvar cloneWithProps = require('react/lib/cloneWithProps');\nvar utils = require('./utils');\nvar Draggable = require('react-draggable');\nvar Resizable = require('react-resizable').Resizable;\nvar PureDeepRenderMixin = require('./mixins/PureDeepRenderMixin');\n\n/**\n * An individual item within a ReactGridLayout.\n */\nvar GridItem = React.createClass({\n mixins: [PureDeepRenderMixin],\n\n propTypes: {\n // General grid attributes\n cols: React.PropTypes.number.isRequired,\n containerWidth: React.PropTypes.number.isRequired,\n rowHeight: React.PropTypes.number.isRequired,\n margin: React.PropTypes.array.isRequired,\n\n // These are all in grid units\n x: React.PropTypes.number.isRequired,\n y: React.PropTypes.number.isRequired,\n w: React.PropTypes.number.isRequired,\n h: React.PropTypes.number.isRequired,\n\n // All optional\n minW: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.minW > props.w || props.minW > props.maxW) constraintError('minW', props);\n },\n maxW: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.maxW < props.w || props.maxW < props.minW) constraintError('maxW', props);\n },\n minH: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.minH > props.h || props.minH > props.maxH) constraintError('minH', props);\n },\n maxH: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.maxH < props.h || props.maxH < props.minH) constraintError('maxH', props);\n },\n\n // ID is nice to have for callbacks\n i: React.PropTypes.string.isRequired,\n\n // If true, item will be repositioned when x/y/w/h change\n moveOnStartChange: React.PropTypes.bool,\n\n // Functions\n onDragStop: React.PropTypes.func,\n onDragStart: React.PropTypes.func,\n onDrag: React.PropTypes.func,\n onResizeStop: React.PropTypes.func,\n onResizeStart: React.PropTypes.func,\n onResize: React.PropTypes.func,\n\n // Flags\n isDraggable: React.PropTypes.bool,\n isResizable: React.PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: React.PropTypes.bool,\n isPlaceholder: React.PropTypes.bool,\n\n // Others\n className: React.PropTypes.string,\n // Selector for draggable handle\n handle: React.PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: React.PropTypes.string\n },\n\n getDefaultProps() {\n return {\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n className: '',\n cancel: '',\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity\n };\n },\n\n getInitialState() {\n return {\n resizing: false,\n className: ''\n };\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, y, w, h) {\n var p = this.props;\n var width = p.containerWidth - p.margin[0];\n var out = {\n left: width * (x / p.cols) + p.margin[0],\n top: p.rowHeight * y + p.margin[1],\n width: width * (w / p.cols) - p.margin[0],\n height: h * p.rowHeight - p.margin[1]\n };\n return out;\n },\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} options.left Left offset in pixels.\n * @param {Number} options.top Top offset in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY({left, top}) {\n left = left - this.props.margin[0];\n top = top - this.props.margin[1];\n // This is intentional; because so much of the logic on moving boxes up/down relies\n // on an exact y position, we only round the x, not the y.\n var x = Math.round((left / this.props.containerWidth) * this.props.cols);\n var y = Math.floor(top / this.props.rowHeight);\n x = Math.max(Math.min(x, this.props.cols), 0);\n y = Math.max(y, 0);\n return {x, y};\n },\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} options.height Height in pixels.\n * @param {Number} options.width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({height, width}) {\n width = width + this.props.margin[0];\n height = height + this.props.margin[1];\n var w = Math.round((width / this.props.containerWidth) * this.props.cols);\n var h = Math.round(height / this.props.rowHeight);\n w = Math.max(Math.min(w, this.props.cols - this.props.x), 0);\n h = Math.max(h, 0);\n return {w, h};\n },\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @param {Object} position Position object (pixel values)\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child, position) {\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, position) {\n var p = this.props;\n // This is the max possible width - doesn't go to infinity because of the width of the window\n var maxWidth = this.calcPosition(0, 0, p.cols - p.x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n var mins = this.calcPosition(0, 0, p.minW, p.minH);\n var maxes = this.calcPosition(0, 0, p.maxW, p.maxH);\n var minConstraints = [mins.width, mins.height];\n var 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) {\n var me = this;\n return function(e, {element, position}) {\n if (!me.props[handlerName]) return;\n // Get new XY\n var {x, y} = me.calcXY(position);\n\n // Cap x at numCols\n x = Math.min(x, me.props.cols - me.props.w);\n\n me.props[handlerName](me.props.i, x, y, {e, element, position});\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) {\n var me = this;\n return function(e, {element, size}) {\n if (!me.props[handlerName]) return;\n\n // Get new XY\n var {w, h} = me.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, me.props.cols - me.props.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, me.props.maxW), me.props.minW);\n h = Math.max(Math.min(h, me.props.maxH), me.props.minH);\n\n me.setState({resizing: handlerName === 'onResizeStop' ? null : size});\n\n me.props[handlerName](me.props.i, w, h, {e, element, size});\n };\n },\n\n render() {\n var p = this.props, pos = this.calcPosition(p.x, p.y, p.w, p.h);\n if (this.state.resizing) {\n pos.width = this.state.resizing.width;\n pos.height = this.state.resizing.height;\n }\n\n var child = cloneWithProps(React.Children.only(this.props.children), {\n // Munge a classname. Use passed in classnames and resizing.\n // React with merge the classNames.\n className: ['react-grid-item', this.props.className, this.state.resizing ? 'resizing' : '',\n this.props.useCSSTransforms ? 'cssTransforms' : ''].join(' '),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n width: pos.width + 'px',\n height: pos.height + 'px',\n left: pos.left + 'px',\n top: pos.top + 'px',\n position: 'absolute'\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 //\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 // This is used for server rendering.\n if (this.props.usePercentages) {\n pos.left = utils.perc(pos.left / p.containerWidth);\n child.props.style.left = pos.left;\n child.props.style.width = utils.perc(pos.width / p.containerWidth);\n }\n\n // CSS Transforms support\n if (this.props.useCSSTransforms) {\n utils.setTransform(child.props.style, [pos.left, pos.top]);\n delete child.props.style.left;\n delete child.props.style.top;\n }\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (this.props.isResizable) {\n child = this.mixinResizable(child, pos);\n }\n\n // Draggable support. This is always on, except for with placeholders.\n if (this.props.isDraggable) {\n child = this.mixinDraggable(child, pos);\n }\n\n return child;\n }\n});\n\nfunction constraintError(name, props) {\n delete props.children;\n throw new Error(name + ' overrides contraints on gridItem ' + props.i + '. Full props: ' + JSON.stringify(props));\n}\n\nmodule.exports = GridItem;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/GridItem.jsx\n **/","'use strict';\nvar React = require('react');\nvar utils = require('./utils');\nvar responsiveUtils = require('./responsiveUtils');\nvar PureDeepRenderMixin = require('./mixins/PureDeepRenderMixin');\nvar WidthListeningMixin = require('./mixins/WidthListeningMixin');\nvar ReactGridLayout = require('./ReactGridLayout');\n\n/**\n * A wrapper around ReactGridLayout to support responsive breakpoints.\n */\nvar ResponsiveReactGridLayout = React.createClass({\n mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n propTypes: {\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, propName, componentName) {\n React.PropTypes.object.isRequired.apply(this, arguments);\n\n var layouts = props.layouts;\n Object.keys(layouts).map(function(k) {\n utils.validateLayout(layouts[k], 'layouts.' + k);\n });\n },\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\n getDefaultProps() {\n return {\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: function(){},\n onLayoutChange: function(){}\n };\n },\n\n getInitialState() {\n var breakpoint = this.props.breakpoint ||\n responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, this.props.initialWidth);\n var cols = responsiveUtils.getColsFromBreakpoint(breakpoint, this.props.cols);\n\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 var initialLayout = responsiveUtils.findOrGenerateResponsiveLayout(\n this.props.layouts, this.props.breakpoints, breakpoint, breakpoint, cols);\n\n return {\n layout: initialLayout,\n // storage for layouts obsoleted by breakpoints\n layouts: this.props.layouts || {},\n breakpoint: breakpoint,\n cols: cols,\n width: this.props.initialWidth\n };\n },\n\n componentWillReceiveProps(nextProps) {\n // This allows you to set the width manually if you like.\n // Use manual width changes in combination with `listenToWindowResize: false`\n if (nextProps.width) this.onWidthChange(nextProps.width);\n\n // Allow parent to set breakpoint directly.\n if (nextProps.breakpoint !== this.props.breakpoint) {\n this.onWidthChange(this.state.width);\n }\n\n // Allow parent to set layouts directly.\n if (nextProps.layouts && nextProps.layouts !== this.state.layouts) {\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n var newLayout = responsiveUtils.findOrGenerateResponsiveLayout(\n nextProps.layouts, nextProps.breakpoints, this.state.breakpoint, this.state.breakpoint, this.state.cols);\n\n this.setState({\n layouts: nextProps.layouts,\n layout: newLayout\n });\n }\n },\n\n /**\n * Bubble this up, add `layouts` object.\n * @param {Array} layout Layout from inner Grid.\n */\n onLayoutChange(layout) {\n this.state.layouts[this.state.breakpoint] = layout;\n this.setState({layout: layout, layouts: this.state.layouts});\n this.props.onLayoutChange(layout, this.state.layouts);\n },\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(width) {\n // Set new breakpoint\n var newState = {width: width};\n newState.breakpoint = this.props.breakpoint ||\n responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, newState.width);\n newState.cols = responsiveUtils.getColsFromBreakpoint(newState.breakpoint, this.props.cols);\n\n // Breakpoint change\n if (newState.cols !== this.state.cols) {\n\n // Store the current layout\n newState.layouts = this.state.layouts;\n newState.layouts[this.state.breakpoint] = JSON.parse(JSON.stringify(this.state.layout));\n\n // Find or generate a new one.\n newState.layout = responsiveUtils.findOrGenerateResponsiveLayout(\n newState.layouts, this.props.breakpoints, newState.breakpoint, this.state.breakpoint, newState.cols);\n\n // This adds missing items.\n newState.layout = utils.synchronizeLayoutWithChildren(newState.layout, this.props.children, newState.cols);\n\n // Store this new layout as well.\n newState.layouts[newState.breakpoint] = newState.layout;\n\n this.props.onBreakpointChange(newState.breakpoint, newState.cols);\n }\n\n this.setState(newState);\n },\n\n\n render() {\n // Don't pass responsive props to RGL.\n /*jshint unused:false*/\n var {layouts, onBreakpointChange, breakpoints, ...props} = this.props;\n return (\n \n {this.props.children}\n \n );\n }\n});\n\nmodule.exports = ResponsiveReactGridLayout;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/ResponsiveReactGridLayout.jsx\n **/","'use strict';\n\nvar utils = require('./utils');\n\nvar responsiveUtils = module.exports = {\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 */\n getBreakpointFromWidth(breakpoints, width) {\n var sorted = responsiveUtils.sortBreakpoints(breakpoints);\n var matching = sorted[0];\n for (var i = 1, len = sorted.length; i < len; i++) {\n var 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 */\n getColsFromBreakpoint(breakpoint, cols) {\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 {Array} 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 * @return {Array} New layout.\n */\n findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols) {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return layouts[breakpoint];\n // Find or generate the next layout\n var layout = layouts[lastBreakpoint];\n var breakpointsSorted = responsiveUtils.sortBreakpoints(breakpoints);\n var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n for (var i = 0, len = breakpointsAbove.length; i < len; i++) {\n var b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = JSON.parse(JSON.stringify(layout || [])); // clone layout so we don't modify existing items\n return utils.compact(utils.correctBounds(layout, {cols: cols}));\n },\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 */\n sortBreakpoints(breakpoints) {\n var keys = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/responsiveUtils.js\n **/","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/deep-equal/index.js\n ** module id = 17\n ** module chunks = 0\n **/","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/deep-equal/lib/is_arguments.js\n ** module id = 18\n ** module chunks = 0\n **/","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/deep-equal/lib/keys.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\n\nvar React = require('react');\nvar PureRenderMixin = require('react/lib/ReactComponentWithPureRenderMixin');\nvar emptyFunction = require('react/lib/emptyFunction');\nvar cloneWithProps = require('react/lib/cloneWithProps');\n\nfunction createUIEvent(draggable) {\n\treturn {\n\t\telement: draggable.getDOMNode(),\n\t\tposition: {\n\t\t\ttop: (draggable._pendingState || draggable.state).clientY,\n\t\t\tleft: (draggable._pendingState || draggable.state).clientX\n\t\t}\n\t};\n}\n\nfunction canDragY(draggable) {\n\treturn draggable.props.axis === 'both' ||\n\t\t\tdraggable.props.axis === 'y';\n}\n\nfunction canDragX(draggable) {\n\treturn draggable.props.axis === 'both' ||\n\t\t\tdraggable.props.axis === 'x';\n}\n\nfunction isFunction(func) {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array, callback) {\n for (var i = 0, length = array.length, element = null; i < length, element = array[i]; i++) {\n if (callback.apply(callback, [element, i, array])) return element;\n }\n}\n\nfunction matchesSelector(el, selector) {\n var method = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n return isFunction(el[method]);\n });\n\n return el[method].call(el, selector);\n}\n\nfunction positionToCSSTransform(style) {\n\t// Replace unitless items with px\n\tvar x = ('' + style.left).replace(/(\\d)$/, '$1px');\n\tvar y = ('' + style.top).replace(/(\\d)$/, '$1px');\n\tstyle.transform = 'translate(' + x + ',' + y + ')';\n\tstyle.WebkitTransform = 'translate(' + x + ',' + y + ')';\n\tstyle.OTransform = 'translate(' + x + ',' + y + ')';\n\tstyle.msTransform = 'translate(' + x + ',' + y + ')';\n\tstyle.MozTransform = 'translate(' + x + ',' + y + ')';\n\tdelete style.left;\n\tdelete style.top;\n\treturn style;\n}\n\n// @credits: http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript/4819886#4819886\n/* Conditional to fix node server side rendering of component */\nif (typeof window === 'undefined') {\n // Do Node Stuff\n var isTouchDevice = false;\n} else {\n // Do Browser Stuff\n var isTouchDevice = 'ontouchstart' in window || // works on most browsers\n 'onmsgesturechange' in window; // works on ie10 on ms surface\n}\n\n// look ::handleDragStart\n//function isMultiTouch(e) {\n// return e.touches && Array.isArray(e.touches) && e.touches.length > 1\n//}\n\n/**\n * simple abstraction for dragging events names\n * */\nvar dragEventFor = (function () {\n var eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup'\n }\n };\n return eventsFor[isTouchDevice ? 'touch' : 'mouse'];\n})();\n\n/**\n * get {clientX, clientY} positions of control\n * */\nfunction getControlPosition(e) {\n var position = (e.touches && e.touches[0]) || e;\n return {\n clientX: position.clientX,\n clientY: position.clientY\n };\n}\n\nfunction addEvent(el, event, handler) {\n\tif (!el) { return; }\n\tif (el.attachEvent) {\n\t\tel.attachEvent('on' + event, handler);\n\t} else if (el.addEventListener) {\n\t\tel.addEventListener(event, handler, true);\n\t} else {\n\t\tel['on' + event] = handler;\n\t}\n}\n\nfunction removeEvent(el, event, handler) {\n\tif (!el) { return; }\n\tif (el.detachEvent) {\n\t\tel.detachEvent('on' + event, handler);\n\t} else if (el.removeEventListener) {\n\t\tel.removeEventListener(event, handler, true);\n\t} else {\n\t\tel['on' + event] = null;\n\t}\n}\n\nmodule.exports = React.createClass({\n\tdisplayName: 'Draggable',\n\tmixins: [PureRenderMixin],\n\n\tpropTypes: {\n\t\t/**\n\t\t * `axis` determines which axis the draggable can move.\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 *\n\t\t * Defaults to 'both'.\n\t\t */\n\t\taxis: React.PropTypes.oneOf(['both', 'x', 'y']),\n\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 * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t \treturn (\n\t\t * \t \t \t\n\t\t * \t \t \t
\n\t\t * \t \t \t
Click me to drag
\n\t\t * \t \t \t
This is some other content
\n\t\t * \t \t \t
\n\t\t * \t \t\t
\n\t\t * \t \t);\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\thandle: React.PropTypes.string,\n\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 * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return(\n\t\t * \t \n\t\t * \t
\n\t\t * \t \t
You can't drag from here
\n\t\t *\t\t\t\t\t\t
Dragging here works fine
\n\t\t * \t
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tcancel: React.PropTypes.string,\n\n\t\t/**\n\t\t * `grid` specifies the x and y that dragging should snap to.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I snap to a 25 x 25 grid
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tgrid: React.PropTypes.arrayOf(React.PropTypes.number),\n\n\t\t/**\n\t\t * `start` 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 * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I start with left: 25px; top: 25px;
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tstart: React.PropTypes.object,\n\n\t\t/**\n\t\t * `moveOnStartChange` tells the Draggable element to reset its position\n\t\t * if the `start` parameters are changed. By default, if the `start` \n\t\t * parameters change, the Draggable element still remains where it started\n\t\t * or was dragged to.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * \tvar App = React.createClass({\n\t\t * \t\t\tonButtonClick: function () {\n\t\t * \t\t\t\tthis.setState({clicked: true});\n\t\t * \t\t\t},\n\t\t * \t render: function () {\n\t\t * \t \t\tvar start = this.state.clicked ?\n\t\t * \t \t\t {x: 25, y: 25} :\n\t\t * \t \t\t {x: 125, y: 125};\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I start with left: 25px; top: 25px;,\n\t\t * \t but move to left: 125px; top: 125px; when the button\n\t\t * \t is clicked.
\n\t\t * \t
Button
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tmoveOnStartChange: React.PropTypes.bool,\n\n\t\t/**\n\t\t * `useCSSTransforms` if true will place the element using translate(x, y)\n\t\t * rather than CSS top/left.\n\t\t *\n\t\t * This generally gives better performance, and is useful in combination with\n\t\t * other layout systems that use translate(), such as react-grid-layout.\n\t\t */\n\t\tuseCSSTransforms: React.PropTypes.bool,\n\n\t\t/**\n\t\t * `zIndex` specifies the zIndex to use while dragging.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I have a zIndex
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tzIndex: React.PropTypes.number,\n\n\t\t/**\n\t\t * Called when dragging starts.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```js\n\t\t *\tfunction (event, ui) {}\n\t\t * ```\n\t\t *\n\t\t * `event` is the Event that was triggered.\n\t\t * `ui` is an object:\n\t\t *\n\t\t * ```js\n\t\t *\t{\n\t\t *\t\tposition: {top: 0, left: 0}\n\t\t *\t}\n\t\t * ```\n\t\t */\n\t\tonStart: React.PropTypes.func,\n\n\t\t/**\n\t\t * Called while dragging.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```js\n\t\t *\tfunction (event, ui) {}\n\t\t * ```\n\t\t *\n\t\t * `event` is the Event that was triggered.\n\t\t * `ui` is an object:\n\t\t *\n\t\t * ```js\n\t\t *\t{\n\t\t *\t\tposition: {top: 0, left: 0}\n\t\t *\t}\n\t\t * ```\n\t\t */\n\t\tonDrag: React.PropTypes.func,\n\n\t\t/**\n\t\t * Called when dragging stops.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```js\n\t\t *\tfunction (event, ui) {}\n\t\t * ```\n\t\t *\n\t\t * `event` is the Event that was triggered.\n\t\t * `ui` is an object:\n\t\t *\n\t\t * ```js\n\t\t *\t{\n\t\t *\t\tposition: {top: 0, left: 0}\n\t\t *\t}\n\t\t * ```\n\t\t */\n\t\tonStop: React.PropTypes.func,\n\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 (due to that there's internal use of onMouseDown)\n\t\t *\n\t\t */\n\t\tonMouseDown: React.PropTypes.func\n\t},\n\n\tcomponentWillUnmount: function() {\n\t\t// Remove any leftover event handlers\n\t\tremoveEvent(window, dragEventFor['move'], this.handleDrag);\n\t\tremoveEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t},\n\n\tcomponentWillReceiveProps: function(nextProps) {\n\t\t// If this is set to watch a changing start position, \n\t\t// set x and y to the new position.\n\t\tif (nextProps.moveOnStartChange) {\n\t\t\tthis.setState({\n\t\t\t\tclientX: nextProps.start.x,\n\t\t\t\tclientY: nextProps.start.y\n\t\t\t});\n\t\t}\n\t},\n\n\tgetDefaultProps: function () {\n\t\treturn {\n\t\t\taxis: 'both',\n\t\t\thandle: null,\n\t\t\tcancel: null,\n\t\t\tgrid: null,\n\t\t\tstart: {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t},\n\t\t\tmoveOnStartChange: false,\n\t\t\tuseCSSTransforms: false,\n\t\t\tzIndex: NaN,\n\t\t\tonStart: emptyFunction,\n\t\t\tonDrag: emptyFunction,\n\t\t\tonStop: emptyFunction,\n\t\t\tonMouseDown: emptyFunction\n\t\t};\n\t},\n\n\tgetInitialState: function () {\n\t\treturn {\n\t\t\t// Whether or not currently dragging\n\t\t\tdragging: false,\n\n\t\t\t// Start top/left of this.getDOMNode()\n\t\t\tstartX: 0, startY: 0,\n\n\t\t\t// Offset between start top/left and mouse top/left\n\t\t\toffsetX: 0, offsetY: 0,\n\n\t\t\t// Current top/left of this.getDOMNode()\n\t\t\tclientX: this.props.start.x, clientY: this.props.start.y\n\t\t};\n\t},\n\n\thandleDragStart: function (e) {\n // todo: write right implementation to prevent multitouch drag\n // prevent multi-touch events\n // if (isMultiTouch(e)) {\n // this.handleDragEnd.apply(e, arguments);\n // return\n // }\n\n\t\t// Make it possible to attach event handlers on top of this one\n\t\tthis.props.onMouseDown(e);\n\n\t\t// Only catch left clicks, if clicking\n\t\tif (typeof e.button === \"number\" && e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar node = this.getDOMNode();\n\n\t\t// Short circuit if handle or cancel prop was provided and selector doesn't match\n\t\tif ((this.props.handle && !matchesSelector(e.target, this.props.handle)) ||\n\t\t\t(this.props.cancel && matchesSelector(e.target, this.props.cancel))) {\n\t\t\treturn;\n\t\t}\n\n var dragPoint = getControlPosition(e);\n\n\t\t// Initiate dragging\n\t\tthis.setState({\n\t\t\tdragging: true,\n\t\t\toffsetX: parseInt(dragPoint.clientX, 10),\n\t\t\toffsetY: parseInt(dragPoint.clientY, 10),\n\t\t\tstartX: parseInt(this.state.clientX, 10) || 0,\n\t\t\tstartY: parseInt(this.state.clientY, 10) || 0\n\t\t});\n\n\t\t// Add a class to the body to disable user-select. This prevents text from \n\t\t// being selected all over the page.\n\t\tdocument.body.className += \" react-draggable-active\";\n\n\t\t// Call event handler\n\t\tthis.props.onStart(e, createUIEvent(this));\n\n\t\t// Add event handlers\n\t\taddEvent(window, dragEventFor['move'], this.handleDrag);\n\t\taddEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t},\n\n\thandleDragEnd: function (e) {\n\t\t// Short circuit if not currently dragging\n\t\tif (!this.state.dragging) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Turn off dragging\n\t\tthis.setState({\n\t\t\tdragging: false\n\t\t});\n\n\t\t// Remove the body class used to disable user-select.\n\t\tdocument.body.className = document.body.className.replace(\" react-draggable-active\", \"\");\n\n\t\t// Call event handler\n\t\tthis.props.onStop(e, createUIEvent(this));\n\n\t\t// Remove event handlers\n removeEvent(window, dragEventFor['move'], this.handleDrag);\n removeEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t},\n\n\thandleDrag: function (e) {\n var dragPoint = getControlPosition(e);\n\n\t\t// Calculate top and left\n var clientX = (this.state.startX + (dragPoint.clientX - this.state.offsetX));\n var clientY = (this.state.startY + (dragPoint.clientY - this.state.offsetY));\n\n\t\t// Snap to grid if prop has been provided\n\t\tif (Array.isArray(this.props.grid)) {\n\t\t\tvar directionX = clientX < parseInt(this.state.clientX, 10) ? -1 : 1;\n\t\t\tvar directionY = clientY < parseInt(this.state.clientY, 10) ? -1 : 1;\n\n\t\t\tclientX = Math.abs(clientX - parseInt(this.state.clientX, 10)) >= this.props.grid[0]\n\t\t\t\t\t? (parseInt(this.state.clientX, 10) + (this.props.grid[0] * directionX))\n\t\t\t\t\t: parseInt(this.state.clientX, 10);\n\n\t\t\tclientY = Math.abs(clientY - parseInt(this.state.clientY, 10)) >= this.props.grid[1]\n\t\t\t\t\t? (parseInt(this.state.clientY, 10) + (this.props.grid[1] * directionY))\n\t\t\t\t\t: parseInt(this.state.clientY, 10);\n\t\t}\n\n\t\t// Min/max constraints\n\t\tif (Array.isArray(this.props.minConstraints)) {\n\t\t\tclientX = Math.max(this.props.minConstraints[0], clientX);\n\t\t\tclientY = Math.max(this.props.minConstraints[1], clientY);\n\t\t}\n\t\tif (Array.isArray(this.props.maxConstraints)) {\n\t\t\tclientX = Math.min(this.props.maxConstraints[0], clientX);\n\t\t\tclientY = Math.min(this.props.maxConstraints[1], clientY);\n\t\t}\n\n\t\t// Update top and left\n\t\tthis.setState({\n\t\t\tclientX: clientX,\n\t\t\tclientY: clientY\n\t\t});\n\n\t\t// Call event handler\n\t\tthis.props.onDrag(e, createUIEvent(this));\n\t},\n\n\trender: function () {\n\t\tvar style = {\n\t\t\t// Set top if vertical drag is enabled\n\t\t\ttop: canDragY(this)\n\t\t\t\t? this.state.clientY\n\t\t\t\t: this.state.startY,\n\n\t\t\t// Set left if horizontal drag is enabled\n\t\t\tleft: canDragX(this)\n\t\t\t\t? this.state.clientX\n\t\t\t\t: this.state.startX\n\t\t};\n\n\t\tif (this.props.useCSSTransforms) {\n\t\t\tstyle = positionToCSSTransform(style);\n\t\t}\n\n\t\t// Set zIndex if currently dragging and prop has been provided\n\t\tif (this.state.dragging && !isNaN(this.props.zIndex)) {\n\t\t\tstyle.zIndex = this.props.zIndex;\n\t\t}\n\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\treturn cloneWithProps(React.Children.only(this.props.children), {\n\t\t\tstyle: style,\n\t\t\tclassName: 'react-draggable' + (this.state.dragging ? ' react-draggable-dragging' : ''),\n\n\t\t\tonMouseDown: this.handleDragStart,\n\t\t\tonTouchStart: function(ev){\n ev.preventDefault(); // prevent for scroll\n return this.handleDragStart.apply(this, arguments);\n }.bind(this),\n\n\t\t\tonMouseUp: this.handleDragEnd,\n\t\t\tonTouchEnd: this.handleDragEnd\n\t\t});\n\t}\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-draggable/lib/draggable.js\n ** module id = 20\n ** module chunks = 0\n **/","\"use strict\";\n\nvar _objectWithoutProperties = function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\n\"use strict\";\nvar React = require(\"react\");\nvar PureRenderMixin = require(\"react/lib/ReactComponentWithPureRenderMixin\");\nvar Resizable = require(\"./Resizable\");\n\n// An example use of Resizable.\nvar ResizableBox = module.exports = React.createClass({\n displayName: \"ResizableBox\",\n mixins: [PureRenderMixin],\n\n propTypes: {},\n\n getInitialState: function () {\n return {\n width: this.props.width,\n height: this.props.height\n };\n },\n\n onResize: function (event, _ref) {\n var element = _ref.element;\n var size = _ref.size;\n if (size.width !== this.state.width || size.height !== this.state.height) {\n this.setState({\n width: size.width,\n height: size.height\n });\n }\n },\n\n render: function () {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the component\n // with a new width and height.\n var handleSize = this.props.handleSize;\n var minConstraints = this.props.minConstraints;\n var maxConstraints = this.props.maxConstraints;\n var props = _objectWithoutProperties(this.props, [\"handleSize\", \"minConstraints\", \"maxConstraints\"]);\n\n return React.createElement(Resizable, {\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResize: this.onResize,\n draggableOpts: this.props.draggableOpts\n }, React.createElement(\"div\", React.__spread({\n style: { width: this.state.width + \"px\", height: this.state.height + \"px\" }\n }, props), this.props.children));\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/ResizableBox.js\n ** module id = 21\n ** module chunks = 0\n **/","module.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable');\nmodule.exports.ResizableBox = require('./build/ResizableBox');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/index.js\n ** module id = 22\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = require(\"./Object.assign\");\nvar emptyObject = require(\"./emptyObject\");\nvar warning = require(\"./warning\");\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return
{children}
;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array}\n */\n withContext: function(newContext, scopedCallback) {\n if (\"production\" !== process.env.NODE_ENV) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n ) : null);\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactContext.js\n ** module id = 23\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactCurrentOwner.js\n ** module id = 24\n ** module chunks = 0\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n\n'use strict';\n\nvar ReactContext = require(\"./ReactContext\");\nvar ReactCurrentOwner = require(\"./ReactCurrentOwner\");\n\nvar assign = require(\"./Object.assign\");\nvar warning = require(\"./warning\");\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} object\n * @param {string} key\n */\nfunction defineWarningProperty(object, key) {\n Object.defineProperty(object, key, {\n\n configurable: false,\n enumerable: true,\n\n get: function() {\n if (!this._store) {\n return null;\n }\n return this._store[key];\n },\n\n set: function(value) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Don\\'t set the %s property of the React element. Instead, ' +\n 'specify the correct value when initially creating the element.',\n key\n ) : null);\n this._store[key] = value;\n }\n\n });\n}\n\n/**\n * This is updated to true if the membrane is successfully created.\n */\nvar useMutationMembrane = false;\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} element\n */\nfunction defineMutationMembrane(prototype) {\n try {\n var pseudoFrozenProperties = {\n props: true\n };\n for (var key in pseudoFrozenProperties) {\n defineWarningProperty(prototype, key);\n }\n useMutationMembrane = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\n/**\n * Base constructor for all React elements. This is only used to make this\n * work with a dynamic instanceof check. Nothing should live on this prototype.\n *\n * @param {*} type\n * @param {string|object} ref\n * @param {*} key\n * @param {*} props\n * @internal\n */\nvar ReactElement = function(type, key, ref, owner, context, props) {\n // Built-in properties that belong on the element\n this.type = type;\n this.key = key;\n this.ref = ref;\n\n // Record the component responsible for creating this element.\n this._owner = owner;\n\n // TODO: Deprecate withContext, and then the context becomes accessible\n // through the owner.\n this._context = context;\n\n if (\"production\" !== process.env.NODE_ENV) {\n // The validation flag and props are currently mutative. We put them on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n this._store = {props: props, originalProps: assign({}, props)};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n try {\n Object.defineProperty(this._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true\n });\n } catch (x) {\n }\n this._store.validated = false;\n\n // We're not allowed to set props directly on the object so we early\n // return and rely on the prototype membrane to forward to the backing\n // store.\n if (useMutationMembrane) {\n Object.freeze(this);\n return;\n }\n }\n\n this.props = props;\n};\n\n// We intentionally don't expose the function on the constructor property.\n// ReactElement should be indistinguishable from a plain object.\nReactElement.prototype = {\n _isReactElement: true\n};\n\nif (\"production\" !== process.env.NODE_ENV) {\n defineMutationMembrane(ReactElement.prototype);\n}\n\nReactElement.createElement = function(type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (typeof props[propName] === 'undefined') {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return new ReactElement(\n type,\n key,\n ref,\n ReactCurrentOwner.current,\n ReactContext.current,\n props\n );\n};\n\nReactElement.createFactory = function(type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. .type === Foo.type.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n var newElement = new ReactElement(\n oldElement.type,\n oldElement.key,\n oldElement.ref,\n oldElement._owner,\n oldElement._context,\n newProps\n );\n\n if (\"production\" !== process.env.NODE_ENV) {\n // If the key on the original is valid, then the clone is valid\n newElement._store.validated = oldElement._store.validated;\n }\n return newElement;\n};\n\nReactElement.cloneElement = function(element, config, children) {\n var propName;\n\n // Original props are copied\n var props = assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n // Remaining properties override existing props\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return new ReactElement(\n element.type,\n key,\n ref,\n owner,\n element._context,\n props\n );\n};\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function(object) {\n // ReactTestUtils is often used outside of beforeEach where as React is\n // within it. This leads to two different instances of React on the same\n // page. To identify a element from a different React instance we use\n // a flag instead of an instanceof check.\n var isElement = !!(object && object._isReactElement);\n // if (isElement && !(object instanceof ReactElement)) {\n // This is an indicator that you're using multiple versions of React at the\n // same time. This will screw with ownership and stuff. Fix it, please.\n // TODO: We could possibly warn here.\n // }\n return isElement;\n};\n\nmodule.exports = ReactElement;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactElement.js\n ** module id = 25\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTransferer\n */\n\n'use strict';\n\nvar assign = require(\"./Object.assign\");\nvar emptyFunction = require(\"./emptyFunction\");\nvar joinClasses = require(\"./joinClasses\");\n\n/**\n * Creates a transfer strategy that will merge prop values using the supplied\n * `mergeStrategy`. If a prop was previously unset, this just sets it.\n *\n * @param {function} mergeStrategy\n * @return {function}\n */\nfunction createTransferStrategy(mergeStrategy) {\n return function(props, key, value) {\n if (!props.hasOwnProperty(key)) {\n props[key] = value;\n } else {\n props[key] = mergeStrategy(props[key], value);\n }\n };\n}\n\nvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n // `merge` overrides the first object's (`props[key]` above) keys using the\n // second object's (`value`) keys. An object's style's existing `propA` would\n // get overridden. Flip the order here.\n return assign({}, b, a);\n});\n\n/**\n * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n * NOTE: if you add any more exceptions to this list you should be sure to\n * update `cloneWithProps()` accordingly.\n */\nvar TransferStrategies = {\n /**\n * Never transfer `children`.\n */\n children: emptyFunction,\n /**\n * Transfer the `className` prop by merging them.\n */\n className: createTransferStrategy(joinClasses),\n /**\n * Transfer the `style` prop (which is an object) by merging them.\n */\n style: transferStrategyMerge\n};\n\n/**\n * Mutates the first argument by transferring the properties from the second\n * argument.\n *\n * @param {object} props\n * @param {object} newProps\n * @return {object}\n */\nfunction transferInto(props, newProps) {\n for (var thisKey in newProps) {\n if (!newProps.hasOwnProperty(thisKey)) {\n continue;\n }\n\n var transferStrategy = TransferStrategies[thisKey];\n\n if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n transferStrategy(props, thisKey, newProps[thisKey]);\n } else if (!props.hasOwnProperty(thisKey)) {\n props[thisKey] = newProps[thisKey];\n }\n }\n return props;\n}\n\n/**\n * ReactPropTransferer are capable of transferring props to another component\n * using a `transferPropsTo` method.\n *\n * @class ReactPropTransferer\n */\nvar ReactPropTransferer = {\n\n /**\n * Merge two props objects using TransferStrategies.\n *\n * @param {object} oldProps original props (they take precedence)\n * @param {object} newProps new props to merge in\n * @return {object} a new object containing both sets of props merged.\n */\n mergeProps: function(oldProps, newProps) {\n return transferInto(assign({}, oldProps), newProps);\n }\n\n};\n\nmodule.exports = ReactPropTransferer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPropTransferer.js\n ** module id = 26\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyObject\n */\n\n\"use strict\";\n\nvar emptyObject = {};\n\nif (\"production\" !== process.env.NODE_ENV) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/emptyObject.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule joinClasses\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Combines multiple className strings into one.\n * http://jsperf.com/joinclasses-args-vs-array\n *\n * @param {...?string} classes\n * @return {string}\n */\nfunction joinClasses(className/*, ... */) {\n if (!className) {\n className = '';\n }\n var nextClass;\n var argLength = arguments.length;\n if (argLength > 1) {\n for (var ii = 1; ii < argLength; ii++) {\n nextClass = arguments[ii];\n if (nextClass) {\n className = (className ? className + ' ' : '') + nextClass;\n }\n }\n }\n return className;\n}\n\nmodule.exports = joinClasses;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/joinClasses.js\n ** module id = 28\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyOf\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without loosing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function(oneKeyObj) {\n var key;\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n return key;\n }\n return null;\n};\n\n\nmodule.exports = keyOf;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/keyOf.js\n ** module id = 29\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n */\n\n'use strict';\n\n/**\n * Performs equality by iterating through keys on an object and returning\n * false when any key has values which are not strictly equal between\n * objA and objB. Returns true when the values of all keys are strictly equal.\n *\n * @return {boolean}\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var key;\n // Test for A's keys different from B.\n for (key in objA) {\n if (objA.hasOwnProperty(key) &&\n (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n return false;\n }\n }\n // Test for B's keys missing from A.\n for (key in objB) {\n if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/shallowEqual.js\n ** module id = 30\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///react-grid-layout.min.js","webpack:///webpack/bootstrap 72bbfcd3e2e8561f1cfb","webpack:///./index-dev.js","webpack:///external \"React\"","webpack:///./lib/utils.js","webpack:///./lib/mixins/PureDeepRenderMixin.js","webpack:///./~/react/lib/Object.assign.js","webpack:///./~/react/lib/ReactComponentWithPureRenderMixin.js","webpack:///./~/react/lib/cloneWithProps.js","webpack:///./~/react/lib/emptyFunction.js","webpack:///./~/react/lib/warning.js","webpack:///./lib/ReactGridLayout.jsx","webpack:///./lib/mixins/WidthListeningMixin.js","webpack:///./~/object-assign/index.js","webpack:///./~/react-draggable/index.js","webpack:///./~/react-resizable/build/Resizable.js","webpack:///./lib/GridItem.jsx","webpack:///./lib/ResponsiveReactGridLayout.jsx","webpack:///./lib/responsiveUtils.js","webpack:///./~/deep-equal/index.js","webpack:///./~/deep-equal/lib/is_arguments.js","webpack:///./~/deep-equal/lib/keys.js","webpack:///./~/react-draggable/lib/draggable.js","webpack:///./~/react-resizable/build/ResizableBox.js","webpack:///./~/react-resizable/index.js","webpack:///./~/react/lib/ReactContext.js","webpack:///./~/react/lib/ReactCurrentOwner.js","webpack:///./~/react/lib/ReactElement.js","webpack:///./~/react/lib/ReactPropTransferer.js","webpack:///./~/react/lib/emptyObject.js","webpack:///./~/react/lib/joinClasses.js","webpack:///./~/react/lib/keyOf.js","webpack:///./~/react/lib/shallowEqual.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","Responsive","assign","utils","bottom","layout","bottomY","max","i","len","length","y","h","clone","obj","collides","l1","l2","x","w","compact","compareWith","getStatics","out","sorted","sortLayoutItemsByRowCol","l","compactItem","push","indexOf","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","layoutItem","getAllCollisions","moveElement","isUserAction","movingUp","undefined","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","Math","perc","num","setTransform","style","coords","replace","transform","WebkitTransform","MozTransform","msTransform","OTransform","concat","sort","a","b","synchronizeLayoutWithChildren","initialLayout","children","child","exists","key","g","props","_grid","validateLayout","min","contextName","subProps","Array","isArray","Error","j","deepEqual","PureDeepRenderMixin","shouldComponentUpdate","nextProps","nextState","state","target","sources","TypeError","to","Object","hasOwnProperty","prototype","nextIndex","arguments","nextSource","from","shallowEqual","ReactComponentWithPureRenderMixin","cloneWithProps","newProps","ReactPropTransferer","mergeProps","CHILDREN_PROP","ReactElement","createElement","type","keyOf","makeEmptyFunction","arg","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","warning","_objectWithoutProperties","keys","_extends","source","React","GridItem","WidthListeningMixin","ReactGridLayout","createClass","displayName","mixins","propTypes","autoSize","PropTypes","bool","number","draggableCancel","string","draggableHandle","propName","componentName","layouts","margin","array","rowHeight","isDraggable","isResizable","useCSSTransforms","onLayoutChange","func","onDragStart","onDrag","onDragStop","onResizeStart","onResize","onResizeStop","node","apply","Children","forEach","list","getDefaultProps","getInitialState","activeDrag","isMounted","width","initialWidth","componentDidMount","setState","componentWillReceiveProps","onWidthChange","JSON","stringify","componentDidUpdate","prevProps","prevState","containerHeight","_ref","e","element","position","oldL","placeholder","size","isPlaceholder","className","containerWidth","processGridItem","draggable","resizable","drag","moveOnStartChange","cancel","handle","usePercentages","render","_props","height","map","listenToWindowResize","window","addEventListener","onWindowResize","componentWillUnmount","removeEventListener","getDOMNode","offsetWidth","ToObject","val","s","calcWH","_ref2","handleSize","left","top","parseConstraints","constraints","Draggable","PureRenderMixin","isRequired","draggableOpts","object","minConstraints","maxConstraints","resizeHandler","handlerName","me","__spread","start","onStop","onStart","constraintError","name","Resizable","minW","maxW","minH","maxH","Infinity","resizing","calcPosition","calcXY","round","floor","mixinDraggable","onDragHandler","mixinResizable","maxWidth","mins","maxes","onResizeHandler","_me$calcXY","_me$calcWH","pos","only","join","responsiveUtils","ResponsiveReactGridLayout","breakpoint","breakpoints","k","onBreakpointChange","lg","md","sm","xs","xxs","getBreakpointFromWidth","getColsFromBreakpoint","findOrGenerateResponsiveLayout","newLayout","newState","parse","sortBreakpoints","matching","breakpointName","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","isUndefinedOrNull","value","isBuffer","copy","objEquiv","opts","isArguments","pSlice","ka","objectKeys","kb","actual","expected","Date","getTime","strict","supported","toString","unsupported","propertyIsEnumerable","supportsArgumentsClass","shim","createUIEvent","_pendingState","clientY","clientX","canDragY","axis","canDragX","isFunction","findInArray","callback","matchesSelector","el","selector","method","positionToCSSTransform","getControlPosition","touches","addEvent","event","handler","attachEvent","removeEvent","detachEvent","isTouchDevice","dragEventFor","eventsFor","touch","move","end","mouse","oneOf","grid","arrayOf","zIndex","onMouseDown","handleDrag","handleDragEnd","NaN","dragging","startX","startY","offsetX","offsetY","handleDragStart","button","dragPoint","parseInt","document","body","directionX","directionY","abs","isNaN","onTouchStart","ev","preventDefault","bind","onMouseUp","onTouchEnd","ResizableBox","emptyObject","ReactContext","current","withContext","newContext","scopedCallback","result","previousContext","ReactCurrentOwner","RESERVED_PROPS","ref","owner","context","_owner","_context","_isReactElement","config","childrenLength","childArray","defaultProps","createFactory","cloneAndReplaceProps","oldElement","newElement","cloneElement","isValidElement","isElement","createTransferStrategy","mergeStrategy","transferInto","thisKey","transferStrategy","TransferStrategies","joinClasses","transferStrategyMerge","oldProps","nextClass","argLength","ii","oneKeyObj","objA","objB"],"mappings":"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","file":"react-grid-layout.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"React\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"React\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"React\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"React\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\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\n\tmodule.exports = __webpack_require__(9);\n\tmodule.exports.Responsive = __webpack_require__(15);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar assign = __webpack_require__(11);\n\n\tvar utils = module.exports = {\n\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\t bottom: function bottom(layout) {\n\t var max = 0,\n\t bottomY;\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\n\t /**\n\t * Clones a shallow object.\n\t * @param {Object} obj Object to clone.\n\t * @return {Object} Cloned object.\n\t */\n\t clone: function clone(obj) {\n\t return assign({}, obj);\n\t },\n\n\t /**\n\t * Given two layouts, check if they collide.\n\t *\n\t * @param {Object} l1 Layout object.\n\t * @param {Object} l2 Layout object.\n\t * @return {Boolean} True if colliding.\n\t */\n\t collides: function collides(l1, l2) {\n\t if (l1 === l2) {\n\t return false;\n\t } // same element\n\t if (l1.x + l1.w <= l2.x) {\n\t return false;\n\t } // l1 is left of l2\n\t if (l1.x >= l2.x + l2.w) {\n\t return false;\n\t } // l1 is right of l2\n\t if (l1.y + l1.h <= l2.y) {\n\t return false;\n\t } // l1 is above l2\n\t if (l1.y >= l2.y + l2.h) {\n\t return false;\n\t } // l1 is below l2\n\t return true; // boxes overlap\n\t },\n\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 * @return {Array} Compacted Layout.\n\t */\n\t compact: function compact(layout) {\n\t // Statics go in the compareWith array right away so items flow around them.\n\t var compareWith = utils.getStatics(layout),\n\t out = [];\n\t // We go through the items by row and column.\n\t var sorted = utils.sortLayoutItemsByRowCol(layout);\n\n\t for (var i = 0, len = sorted.length; i < len; i++) {\n\t var l = sorted[i];\n\n\t // Don't move static elements\n\t if (!l['static']) {\n\t l = utils.compactItem(compareWith, l);\n\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\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\n\t // Clear moved flag, if it exists.\n\t delete l.moved;\n\t }\n\n\t return out;\n\t },\n\n\t compactItem: function compactItem(compareWith, l) {\n\t // Move the element up as far as it can go without colliding.\n\t while (l.y > 0 && !utils.getFirstCollision(compareWith, l)) {\n\t l.y--;\n\t }\n\n\t // Move it down, and keep moving it down if it's colliding.\n\t var collides;\n\t while (collides = utils.getFirstCollision(compareWith, l)) {\n\t l.y = collides.y + collides.h;\n\t }\n\t return l;\n\t },\n\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 * @return {[type]} [description]\n\t */\n\t correctBounds: function correctBounds(layout, bounds) {\n\t var collidesWith = utils.getStatics(layout);\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t var l = layout[i];\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 (utils.getFirstCollision(collidesWith, l)) {\n\t l.y++;\n\t }\n\t }\n\t }\n\t return layout;\n\t },\n\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 {Number} id ID\n\t * @return {LayoutItem} Item at ID.\n\t */\n\t getLayoutItem: function getLayoutItem(layout, id) {\n\t id = '' + id;\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if ('' + layout[i].i === id) {\n\t return layout[i];\n\t }\n\t }\n\t },\n\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\t getFirstCollision: function getFirstCollision(layout, layoutItem) {\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (utils.collides(layout[i], layoutItem)) {\n\t return layout[i];\n\t }\n\t }\n\t },\n\n\t getAllCollisions: function getAllCollisions(layout, layoutItem) {\n\t var out = [];\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (utils.collides(layout[i], layoutItem)) out.push(layout[i]);\n\t }\n\t return out;\n\t },\n\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\t getStatics: function getStatics(layout) {\n\t var out = [];\n\t for (var i = 0, len = layout.length; i < len; i++) {\n\t if (layout[i]['static']) out.push(layout[i]);\n\t }\n\t return out;\n\t },\n\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\t moveElement: function moveElement(layout, l, x, y, isUserAction) {\n\t if (l['static']) {\n\t return layout;\n\t } // Short-circuit if nothing to do.\n\t if (l.y === y && l.x === x) {\n\t return layout;\n\t }var movingUp = l.y > y;\n\t // This is quite a bit faster than extending the object\n\t if (x !== undefined) l.x = x;\n\t if (y !== undefined) l.y = y;\n\t l.moved = true;\n\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 = utils.sortLayoutItemsByRowCol(layout);\n\t if (movingUp) sorted = sorted.reverse();\n\t var collisions = utils.getAllCollisions(sorted, l);\n\n\t // Move each item that collides away from this element.\n\t for (var i = 0, len = collisions.length; i < len; i++) {\n\t var collision = collisions[i];\n\t // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\n\t // Short circuit so we can't infinite loop\n\t if (collision.moved) continue;\n\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\n\t // Don't move static items - we have to move *this* element away\n\t if (collision['static']) {\n\t layout = utils.moveElementAwayFromCollision(layout, collision, l, isUserAction);\n\t } else {\n\t layout = utils.moveElementAwayFromCollision(layout, l, collision, isUserAction);\n\t }\n\t }\n\n\t return layout;\n\t },\n\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\t moveElementAwayFromCollision: function moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction) {\n\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 = {\n\t x: itemToMove.x,\n\t y: itemToMove.y,\n\t w: itemToMove.w,\n\t h: itemToMove.h };\n\t fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n\t if (!utils.getFirstCollision(layout, fakeItem)) {\n\t return utils.moveElement(layout, itemToMove, undefined, fakeItem.y);\n\t }\n\t }\n\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 utils.moveElement(layout, itemToMove, undefined, itemToMove.y + 1);\n\t },\n\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\t perc: function perc(num) {\n\t return num * 100 + '%';\n\t },\n\n\t setTransform: function setTransform(style, coords) {\n\t // Replace unitless items with px\n\t var x = ('' + coords[0]).replace(/(\\d)$/, '$1px');\n\t var y = ('' + coords[1]).replace(/(\\d)$/, '$1px');\n\t style.transform = 'translate(' + x + ',' + y + ')';\n\t style.WebkitTransform = 'translate(' + x + ',' + y + ')';\n\t style.MozTransform = 'translate(' + x + ',' + y + ')';\n\t style.msTransform = 'translate(' + x + ',' + y + ')';\n\t style.OTransform = 'translate(' + x + ',' + y + ')';\n\t return style;\n\t },\n\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\t sortLayoutItemsByRowCol: function sortLayoutItemsByRowCol(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\n\t /**\n\t * Generate a layout using the initialLayout an 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 * @return {Array} Working layout.\n\t */\n\t synchronizeLayoutWithChildren: function synchronizeLayoutWithChildren(initialLayout, children, cols) {\n\t children = [].concat(children); // ensure 'children' is always an array\n\t initialLayout = initialLayout || [];\n\n\t // Generate one layout item per child.\n\t var layout = [];\n\t for (var i = 0, len = children.length; i < len; i++) {\n\t var child = children[i];\n\t // Don't overwrite if it already exists.\n\t var exists = utils.getLayoutItem(initialLayout, child.key);\n\t if (exists) {\n\t // Ensure 'i' is always a string\n\t exists.i = '' + exists.i;\n\t layout.push(exists);\n\t continue;\n\t }\n\t // New item: attempt to use a layout item from the child, if it exists.\n\t var g = child.props._grid;\n\t if (g) {\n\t utils.validateLayout([g], 'ReactGridLayout.child');\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 layout.push(assign({}, g, { y: Math.min(utils.bottom(layout), g.y), i: child.key }));\n\t } else {\n\t // Nothing provided: ensure this is added to the bottom\n\t layout.push({ w: 1, h: 1, x: 0, y: utils.bottom(layout), i: child.key });\n\t }\n\t }\n\n\t // Correct the layout.\n\t layout = utils.correctBounds(layout, { cols: cols });\n\t layout = utils.compact(layout);\n\n\t return layout;\n\t },\n\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\t validateLayout: function validateLayout(layout, contextName) {\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 i = 0, len = layout.length; i < len; i++) {\n\t for (var j = 0; j < subProps.length; j++) {\n\t if (typeof layout[i][subProps[j]] !== 'number') {\n\t throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a Number!');\n\t }\n\t }\n\t if (layout[i]['static'] !== undefined && typeof layout[i]['static'] !== 'boolean') {\n\t throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].static must be a Boolean!');\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar deepEqual = __webpack_require__(17);\n\n\t// Like PureRenderMixin, but with deep comparisons.\n\tvar PureDeepRenderMixin = {\n\t shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n\t return !deepEqual(this.props, nextProps) || !deepEqual(this.state, nextState);\n\t }\n\t};\n\n\tmodule.exports = PureDeepRenderMixin;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule Object.assign\n\t */\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n\t'use strict';\n\n\tfunction assign(target, sources) {\n\t if (target == null) {\n\t throw new TypeError('Object.assign target cannot be null or undefined');\n\t }\n\n\t var to = Object(target);\n\t var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\t for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n\t var nextSource = arguments[nextIndex];\n\t if (nextSource == null) {\n\t continue;\n\t }\n\n\t var from = Object(nextSource);\n\n\t // We don't currently support accessors nor proxies. Therefore this\n\t // copy cannot throw. If we ever supported this then we must handle\n\t // exceptions and side-effects. We don't support symbols so they won't\n\t // be transferred.\n\n\t for (var key in from) {\n\t if (hasOwnProperty.call(from, key)) {\n\t to[key] = from[key];\n\t }\n\t }\n\t }\n\n\t return to;\n\t}\n\n\tmodule.exports = assign;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t* @providesModule ReactComponentWithPureRenderMixin\n\t*/\n\n\t'use strict';\n\n\tvar shallowEqual = __webpack_require__(30);\n\n\t/**\n\t * If your React component's render function is \"pure\", e.g. it will render the\n\t * same result given the same props and state, provide this Mixin for a\n\t * considerable performance boost.\n\t *\n\t * Most React components have pure render functions.\n\t *\n\t * Example:\n\t *\n\t * var ReactComponentWithPureRenderMixin =\n\t * require('ReactComponentWithPureRenderMixin');\n\t * React.createClass({\n\t * mixins: [ReactComponentWithPureRenderMixin],\n\t *\n\t * render: function() {\n\t * return
foo
;\n\t * }\n\t * });\n\t *\n\t * Note: This only checks shallow equality for props and state. If these contain\n\t * complex data structures this mixin may have false-negatives for deeper\n\t * differences. Only mixin to components which have simple props and state, or\n\t * use `forceUpdate()` when you know deep data structures have changed.\n\t */\n\tvar ReactComponentWithPureRenderMixin = {\n\t shouldComponentUpdate: function(nextProps, nextState) {\n\t return !shallowEqual(this.props, nextProps) ||\n\t !shallowEqual(this.state, nextState);\n\t }\n\t};\n\n\tmodule.exports = ReactComponentWithPureRenderMixin;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks static-only\n\t * @providesModule cloneWithProps\n\t */\n\n\t'use strict';\n\n\tvar ReactElement = __webpack_require__(25);\n\tvar ReactPropTransferer = __webpack_require__(26);\n\n\tvar keyOf = __webpack_require__(29);\n\tvar warning = __webpack_require__(8);\n\n\tvar CHILDREN_PROP = keyOf({children: null});\n\n\t/**\n\t * Sometimes you want to change the props of a child passed to you. Usually\n\t * this is to add a CSS class.\n\t *\n\t * @param {ReactElement} child child element you'd like to clone\n\t * @param {object} props props you'd like to modify. className and style will be\n\t * merged automatically.\n\t * @return {ReactElement} a clone of child with props merged in.\n\t */\n\tfunction cloneWithProps(child, props) {\n\t if (false) {\n\t (\"production\" !== process.env.NODE_ENV ? warning(\n\t !child.ref,\n\t 'You are calling cloneWithProps() on a child with a ref. This is ' +\n\t 'dangerous because you\\'re creating a new child which will not be ' +\n\t 'added as a ref to its parent.'\n\t ) : null);\n\t }\n\n\t var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n\t // Use `child.props.children` if it is provided.\n\t if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n\t child.props.hasOwnProperty(CHILDREN_PROP)) {\n\t newProps.children = child.props.children;\n\t }\n\n\t // The current API doesn't retain _owner and _context, which is why this\n\t // doesn't use ReactElement.cloneAndReplaceProps.\n\t return ReactElement.createElement(child.type, newProps);\n\t}\n\n\tmodule.exports = cloneWithProps;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule emptyFunction\n\t */\n\n\tfunction makeEmptyFunction(arg) {\n\t return function() {\n\t return arg;\n\t };\n\t}\n\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tfunction emptyFunction() {}\n\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function() { return this; };\n\temptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\n\tmodule.exports = emptyFunction;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule warning\n\t */\n\n\t\"use strict\";\n\n\tvar emptyFunction = __webpack_require__(7);\n\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\n\tvar warning = emptyFunction;\n\n\tif (false) {\n\t warning = function(condition, format ) {for (var args=[],$__0=2,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n\t if (format === undefined) {\n\t throw new Error(\n\t '`warning(condition, format, ...args)` requires a warning ' +\n\t 'message argument'\n\t );\n\t }\n\n\t if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n\t throw new Error(\n\t 'The warning format should be able to uniquely identify this ' +\n\t 'warning. Please, use a more descriptive format than: ' + format\n\t );\n\t }\n\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\n\t if (!condition) {\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function() {return args[argIndex++];});\n\t console.warn(message);\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch(x) {}\n\t }\n\t };\n\t}\n\n\tmodule.exports = warning;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _objectWithoutProperties = function (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\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\n\tvar React = __webpack_require__(1);\n\tvar GridItem = __webpack_require__(14);\n\tvar utils = __webpack_require__(2);\n\tvar PureDeepRenderMixin = __webpack_require__(3);\n\tvar WidthListeningMixin = __webpack_require__(10);\n\n\t/**\n\t * A reactive, fluid grid layout with draggable, resizable components.\n\t */\n\tvar ReactGridLayout = React.createClass({\n\t displayName: 'ReactGridLayout',\n\n\t mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n\t propTypes: {\n\t //\n\t // Basic props\n\t //\n\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\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\n\t // layout is an array of object with the format:\n\t // {x: Number, y: Number, w: Number, h: Number}\n\t layout: function layout(props, propName, componentName) {\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) {\n\t return;\n\t }utils.validateLayout(layout, 'layout');\n\t },\n\n\t layouts: function layouts(props, propName, componentName) {\n\t if (props.layouts) {\n\t throw new Error('ReactGridLayout does not use `layouts`: Use ReactGridLayout.Responsive.');\n\t }\n\t },\n\n\t // margin between items [x, y] in px\n\t margin: React.PropTypes.array,\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\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\n\t //\n\t // Callbacks\n\t //\n\n\t // Callback so you can save the layout.\n\t // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n\t onLayoutChange: React.PropTypes.func,\n\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\n\t //\n\t // Other validations\n\t //\n\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\n\t // Check children keys for duplicates. Throw if found.\n\t var keys = {};\n\t React.Children.forEach(children, function (child, i, list) {\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\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t autoSize: true,\n\t cols: 12,\n\t rowHeight: 150,\n\t layout: [],\n\t margin: [10, 10],\n\t isDraggable: true,\n\t isResizable: true,\n\t useCSSTransforms: true,\n\t onLayoutChange: function onLayoutChange() {},\n\t onDragStart: function onDragStart() {},\n\t onDrag: function onDrag() {},\n\t onDragStop: function onDragStop() {},\n\t onResizeStart: function onResizeStart() {},\n\t onResize: function onResize() {},\n\t onResizeStop: function onResizeStop() {}\n\t };\n\t },\n\n\t getInitialState: function getInitialState() {\n\t return {\n\t activeDrag: null,\n\t isMounted: false,\n\t layout: utils.synchronizeLayoutWithChildren(this.props.layout, this.props.children, this.props.cols),\n\t width: this.props.initialWidth\n\t };\n\t },\n\n\t componentDidMount: function componentDidMount() {\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 this.setState({ isMounted: true });\n\t },\n\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t // This allows you to set the width manually if you like.\n\t // Use manual width changes in combination with `listenToWindowResize: false`\n\t if (nextProps.width !== this.props.width) this.onWidthChange(nextProps.width);\n\n\t // If children change, regenerate the layout.\n\t if (nextProps.children.length !== this.props.children.length) {\n\t this.setState({\n\t layout: utils.synchronizeLayoutWithChildren(this.state.layout, nextProps.children, nextProps.cols)\n\t });\n\t }\n\n\t // Allow parent to set layout directly.\n\t if (nextProps.layout && JSON.stringify(nextProps.layout) !== JSON.stringify(this.state.layout)) {\n\t this.setState({\n\t layout: utils.synchronizeLayoutWithChildren(nextProps.layout, nextProps.children, nextProps.cols)\n\t });\n\t }\n\t },\n\n\t componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n\t // Call back so we can store the layout\n\t // Do it only when a resize/drag is not active, otherwise there are way too many callbacks\n\t if (this.state.layout !== prevState.layout && !this.state.activeDrag) {\n\t this.props.onLayoutChange(this.state.layout, this.state.layouts);\n\t }\n\t },\n\n\t /**\n\t * Calculates a pixel value for the container.\n\t * @return {String} Container height in pixels.\n\t */\n\t containerHeight: function containerHeight() {\n\t if (!this.props.autoSize) {\n\t return;\n\t }return utils.bottom(this.state.layout) * this.props.rowHeight + this.props.margin[1] + 'px';\n\t },\n\n\t /**\n\t * When the width changes, save it to state. This helps with left/width calculations.\n\t */\n\t onWidthChange: function onWidthChange(width) {\n\t this.setState({ width: width });\n\t },\n\n\t /**\n\t * When dragging starts\n\t * @param {Number} 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} element The current dragging DOM element\n\t * @param {Object} position Drag information\n\t */\n\t onDragStart: function onDragStart(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\n\t // No need to clone, `l` hasn't changed.\n\t this.props.onDragStart(layout, l, l, null, e);\n\t },\n\t /**\n\t * Each drag movement create a new dragelement and move the element to the dragged location\n\t * @param {Number} 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} element The current dragging DOM element\n\t * @param {Object} position Drag information\n\t */\n\t onDrag: function onDrag(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t // Clone layout item so we can pass it to the callback.\n\t var oldL = utils.clone(l);\n\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\n\t // Move the element to the dragged location.\n\t layout = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n\t this.props.onDrag(layout, oldL, l, placeholder, e);\n\n\t this.setState({\n\t layout: utils.compact(layout),\n\t activeDrag: placeholder\n\t });\n\t },\n\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 {Number} i Index of the child.\n\t * @param {Number} 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} element The current dragging DOM element\n\t * @param {Object} position Drag information\n\t */\n\t onDragStop: function onDragStop(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t var oldL = utils.clone(l);\n\n\t // Move the element here\n\t layout = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n\t this.props.onDragStop(layout, oldL, l, null, e);\n\n\t // Set state\n\t this.setState({ layout: utils.compact(layout), activeDrag: null });\n\t },\n\n\t onResizeStart: function onResizeStart(i, w, h, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\n\t // No need to clone, item hasn't changed\n\t this.props.onResizeStart(layout, l, l, null, e);\n\t },\n\n\t onResize: function onResize(i, w, h, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t var oldL = utils.clone(l);\n\n\t // Set new width and height.\n\t l.w = w;\n\t l.h = h;\n\n\t // Create placeholder element (display only)\n\t var placeholder = {\n\t w: w, h: h, x: l.x, y: l.y, placeholder: true, i: i\n\t };\n\n\t this.props.onResize(layout, oldL, l, placeholder, e);\n\n\t // Re-compact the layout and set the drag placeholder.\n\t this.setState({ layout: utils.compact(layout), activeDrag: placeholder });\n\t },\n\n\t onResizeStop: function onResizeStop(i, x, y, _ref) {\n\t var e = _ref.e;\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t var layout = this.state.layout;\n\t var l = utils.getLayoutItem(layout, i);\n\t var oldL = utils.clone(l);\n\n\t this.props.onResizeStop(layout, oldL, l, null, e);\n\n\t this.setState({ activeDrag: null, layout: utils.compact(layout) });\n\t },\n\n\t /**\n\t * Create a placeholder object.\n\t * @return {Element} Placeholder div.\n\t */\n\t placeholder: function placeholder() {\n\t if (!this.state.activeDrag) {\n\t return '';\n\t } // {...this.state.activeDrag} is pretty slow, actually\n\t return React.createElement(\n\t GridItem,\n\t {\n\t w: this.state.activeDrag.w,\n\t h: this.state.activeDrag.h,\n\t x: this.state.activeDrag.x,\n\t y: this.state.activeDrag.y,\n\t i: this.state.activeDrag.i,\n\t isPlaceholder: true,\n\t className: 'react-grid-placeholder',\n\t containerWidth: this.state.width,\n\t cols: this.props.cols,\n\t margin: this.props.margin,\n\t rowHeight: this.props.rowHeight,\n\t isDraggable: false,\n\t isResizable: false,\n\t useCSSTransforms: this.props.useCSSTransforms\n\t },\n\t React.createElement('div', null)\n\t );\n\t },\n\n\t /**\n\t * Given a grid item, set its style attributes & surround in a .\n\t * @param {Element} child React element.\n\t * @param {Number} i Index of element.\n\t * @return {Element} Element wrapped in draggable and properly placed.\n\t */\n\t processGridItem: function processGridItem(child) {\n\t var i = child.key;\n\t var l = utils.getLayoutItem(this.state.layout, i);\n\n\t // watchStart property tells Draggable to react to changes in the start param\n\t // Must be turned off on the item we're dragging as the changes in `activeDrag` cause rerenders\n\t var drag = this.state.activeDrag;\n\t var moveOnStartChange = drag && drag.i === i ? false : true;\n\n\t // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n\t var draggable, resizable;\n\t if (l['static'] || this.props.isDraggable === false) draggable = false;\n\t if (l['static'] || this.props.isResizable === false) resizable = false;\n\n\t return React.createElement(\n\t GridItem,\n\t _extends({\n\t containerWidth: this.state.width,\n\t cols: this.props.cols,\n\t margin: this.props.margin,\n\t rowHeight: this.props.rowHeight,\n\t moveOnStartChange: moveOnStartChange,\n\t cancel: this.props.draggableCancel,\n\t handle: this.props.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: this.props.useCSSTransforms && this.state.isMounted,\n\t usePercentages: !this.state.isMounted\n\t }, l),\n\t child\n\t );\n\t },\n\n\t render: function render() {\n\t // Calculate classname\n\t var _props = this.props;\n\t var className = _props.className;\n\n\t var props = _objectWithoutProperties(_props, ['className']);\n\n\t className = 'react-grid-layout ' + (className || '');\n\n\t return React.createElement(\n\t 'div',\n\t _extends({}, props, { className: className, style: { height: this.containerHeight() } }),\n\t React.Children.map(this.props.children, this.processGridItem),\n\t this.placeholder()\n\t );\n\t }\n\t});\n\n\tmodule.exports = ReactGridLayout;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar React = __webpack_require__(1);\n\n\t/**\n\t * A simple mixin that provides facility for listening to container resizes.\n\t */\n\tvar WidthListeningMixin = {\n\n\t propTypes: {\n\t // This allows setting this on the server side\n\t initialWidth: React.PropTypes.number,\n\n\t // If false, you should supply width yourself. Good if you want to debounce resize events\n\t // or reuse a handler from somewhere else.\n\t listenToWindowResize: React.PropTypes.bool\n\t },\n\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t initialWidth: 1280,\n\t listenToWindowResize: true\n\t };\n\t },\n\n\t componentDidMount: function componentDidMount() {\n\t if (this.props.listenToWindowResize) {\n\t window.addEventListener('resize', this.onWindowResize);\n\t // This is intentional. Once to properly set the breakpoint and resize the elements,\n\t // and again to compensate for any scrollbar that appeared because of the first step.\n\t this.onWindowResize();\n\t this.onWindowResize();\n\t }\n\t },\n\n\t componentWillUnmount: function componentWillUnmount() {\n\t window.removeEventListener('resize', this.onWindowResize);\n\t },\n\n\t /**\n\t * On window resize, update width.\n\t */\n\t onWindowResize: function onWindowResize() {\n\t this.onWidthChange(this.getDOMNode().offsetWidth);\n\t }\n\n\t};\n\n\tmodule.exports = WidthListeningMixin;\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction ToObject(val) {\n\t\tif (val == null) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\n\t\treturn Object(val);\n\t}\n\n\tmodule.exports = Object.assign || function (target, source) {\n\t\tvar from;\n\t\tvar keys;\n\t\tvar to = ToObject(target);\n\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = arguments[s];\n\t\t\tkeys = Object.keys(Object(from));\n\n\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\tto[keys[i]] = from[keys[i]];\n\t\t\t}\n\t\t}\n\n\t\treturn to;\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(20);\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar React = __webpack_require__(1);\n\tvar Draggable = __webpack_require__(12);\n\tvar assign = __webpack_require__(11);\n\tvar PureRenderMixin = __webpack_require__(5);\n\tvar cloneWithProps = __webpack_require__(6);\n\n\tvar Resizable = module.exports = React.createClass({\n\t displayName: \"Resizable\",\n\t mixins: [PureRenderMixin],\n\n\t propTypes: {\n\t children: React.PropTypes.element,\n\t // Functions\n\t onResizeStop: React.PropTypes.func,\n\t onResizeStart: React.PropTypes.func,\n\t onResize: React.PropTypes.func,\n\n\t width: React.PropTypes.number.isRequired,\n\t height: React.PropTypes.number.isRequired,\n\t // If you change this, be sure to update your css\n\t handleSize: React.PropTypes.array,\n\t // These will be passed wholesale to react-draggable\n\t draggableOpts: React.PropTypes.object\n\t },\n\n\t getDefaultProps: function () {\n\t return {\n\t handleSize: [20, 20]\n\t };\n\t },\n\n\t minConstraints: function () {\n\t return parseConstraints(this.props.minConstraints, this.props.handleSize[0]) || this.props.handleSize;\n\t },\n\n\t maxConstraints: function () {\n\t return parseConstraints(this.props.maxConstraints, this.props.handleSize[1]);\n\t },\n\n\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 resizeHandler: function (handlerName) {\n\t var me = this;\n\t return function (e, _ref) {\n\t var element = _ref.element;\n\t var position = _ref.position;\n\t me.props[handlerName] && me.props[handlerName](e, { element: element, size: calcWH(position, me.props.handleSize) });\n\t };\n\t },\n\n\t render: function () {\n\t var p = this.props;\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\n\t return cloneWithProps(p.children, assign({}, p, {\n\t children: [p.children.props.children, React.createElement(Draggable, React.__spread({}, p.draggableOpts, {\n\t start: { x: p.width - 20, y: p.height - 20 },\n\t moveOnStartChange: true,\n\t onStop: this.resizeHandler(\"onResizeStop\"),\n\t onStart: this.resizeHandler(\"onResizeStart\"),\n\t onDrag: this.resizeHandler(\"onResize\"),\n\t minConstraints: this.minConstraints(),\n\t maxConstraints: this.maxConstraints()\n\t }), React.createElement(\"span\", {\n\t className: \"react-resizable-handle\"\n\t }))]\n\t }));\n\t }\n\t});\n\n\t/**\n\t * Parse left and top coordinates; we have to add the handle size to get the full picture.\n\t * @param {Number} options.left Left coordinate.\n\t * @param {Number} options.top Top coordinate.\n\t * @param {Array} handleSize Handle data.\n\t * @return {Object} Coordinates\n\t */\n\tfunction calcWH(_ref2, handleSize) {\n\t var left = _ref2.left;\n\t var top = _ref2.top;\n\t return { width: left + handleSize[0], height: top + handleSize[1] };\n\t}\n\n\t/**\n\t * Constraints must be subtracted by the size of the handle to work properly.\n\t * This has a side-effect of effectively limiting the minimum size to the handleSize,\n\t * which IMO is fine.\n\t * @param {Array} constraints Constraints array.\n\t * @param {Array} handleSize Handle size array.\n\t * @return {Array} Transformed constraints.\n\t */\n\tfunction parseConstraints(constraints, handleSize) {\n\t if (!constraints) return;\n\t return constraints.map(function (c) {\n\t return c - handleSize;\n\t });\n\t}\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar React = __webpack_require__(1);\n\tvar cloneWithProps = __webpack_require__(6);\n\tvar utils = __webpack_require__(2);\n\tvar Draggable = __webpack_require__(12);\n\tvar Resizable = __webpack_require__(22).Resizable;\n\tvar PureDeepRenderMixin = __webpack_require__(3);\n\n\t/**\n\t * An individual item within a ReactGridLayout.\n\t */\n\tvar GridItem = React.createClass({\n\t displayName: 'GridItem',\n\n\t mixins: [PureDeepRenderMixin],\n\n\t propTypes: {\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\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\n\t // All optional\n\t minW: function minW(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.minW > props.w || props.minW > props.maxW) constraintError('minW', props);\n\t },\n\t maxW: function maxW(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.maxW < props.w || props.maxW < props.minW) constraintError('maxW', props);\n\t },\n\t minH: function minH(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.minH > props.h || props.minH > props.maxH) constraintError('minH', props);\n\t },\n\t maxH: function maxH(props, propName, componentName) {\n\t React.PropTypes.number.apply(this, arguments);\n\t if (props.maxH < props.h || props.maxH < props.minH) constraintError('maxH', props);\n\t },\n\n\t // ID is nice to have for callbacks\n\t i: React.PropTypes.string.isRequired,\n\n\t // If true, item will be repositioned when x/y/w/h change\n\t moveOnStartChange: React.PropTypes.bool,\n\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\n\t // Flags\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 isPlaceholder: React.PropTypes.bool,\n\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\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t isDraggable: true,\n\t isResizable: true,\n\t useCSSTransforms: true,\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\t },\n\n\t getInitialState: function getInitialState() {\n\t return {\n\t resizing: false,\n\t className: ''\n\t };\n\t },\n\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 calcPosition: function calcPosition(x, y, w, h) {\n\t var p = this.props;\n\t var width = p.containerWidth - p.margin[0];\n\t var out = {\n\t left: width * (x / p.cols) + p.margin[0],\n\t top: p.rowHeight * y + p.margin[1],\n\t width: width * (w / p.cols) - p.margin[0],\n\t height: h * p.rowHeight - p.margin[1]\n\t };\n\t return out;\n\t },\n\n\t /**\n\t * Translate x and y coordinates from pixels to grid units.\n\t * @param {Number} options.left Left offset in pixels.\n\t * @param {Number} options.top Top offset in pixels.\n\t * @return {Object} x and y in grid units.\n\t */\n\t calcXY: function calcXY(_ref) {\n\t var left = _ref.left;\n\t var top = _ref.top;\n\n\t left = left - this.props.margin[0];\n\t top = top - this.props.margin[1];\n\t // This is intentional; because so much of the logic on moving boxes up/down relies\n\t // on an exact y position, we only round the x, not the y.\n\t var x = Math.round(left / this.props.containerWidth * this.props.cols);\n\t var y = Math.floor(top / this.props.rowHeight);\n\t x = Math.max(Math.min(x, this.props.cols), 0);\n\t y = Math.max(y, 0);\n\t return { x: x, y: y };\n\t },\n\n\t /**\n\t * Given a height and width in pixel values, calculate grid units.\n\t * @param {Number} options.height Height in pixels.\n\t * @param {Number} options.width Width in pixels.\n\t * @return {Object} w, h as grid units.\n\t */\n\t calcWH: function calcWH(_ref) {\n\t var height = _ref.height;\n\t var width = _ref.width;\n\n\t width = width + this.props.margin[0];\n\t height = height + this.props.margin[1];\n\t var w = Math.round(width / this.props.containerWidth * this.props.cols);\n\t var h = Math.round(height / this.props.rowHeight);\n\t w = Math.max(Math.min(w, this.props.cols - this.props.x), 0);\n\t h = Math.max(h, 0);\n\t return { w: w, h: h };\n\t },\n\n\t /**\n\t * Mix a Draggable 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 Draggable.\n\t */\n\t mixinDraggable: function mixinDraggable(child, position) {\n\t return React.createElement(\n\t Draggable,\n\t {\n\t start: { x: position.left, y: position.top },\n\t moveOnStartChange: this.props.moveOnStartChange,\n\t onStop: this.onDragHandler('onDragStop'),\n\t onStart: this.onDragHandler('onDragStart'),\n\t onDrag: this.onDragHandler('onDrag'),\n\t handle: this.props.handle,\n\t cancel: '.react-resizable-handle ' + this.props.cancel,\n\t useCSSTransforms: this.props.useCSSTransforms\n\t },\n\t child\n\t );\n\t },\n\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 mixinResizable: function mixinResizable(child, position) {\n\t var p = this.props;\n\t // This is the max possible width - doesn't go to infinity because of the width of the window\n\t var maxWidth = this.calcPosition(0, 0, p.cols - p.x, 0).width;\n\n\t // Calculate min/max constraints using our min & maxes\n\t var mins = this.calcPosition(0, 0, p.minW, p.minH);\n\t var maxes = this.calcPosition(0, 0, p.maxW, p.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 React.createElement(\n\t 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 },\n\t child\n\t );\n\t },\n\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 onDragHandler: function onDragHandler(handlerName) {\n\t var me = this;\n\t return function (e, _ref) {\n\t var element = _ref.element;\n\t var position = _ref.position;\n\n\t if (!me.props[handlerName]) return;\n\t // Get new XY\n\n\t var _me$calcXY = me.calcXY(position);\n\n\t var x = _me$calcXY.x;\n\t var y = _me$calcXY.y;\n\n\t // Cap x at numCols\n\t x = Math.min(x, me.props.cols - me.props.w);\n\n\t me.props[handlerName](me.props.i, x, y, { e: e, element: element, position: position });\n\t };\n\t },\n\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 onResizeHandler: function onResizeHandler(handlerName) {\n\t var me = this;\n\t return function (e, _ref) {\n\t var element = _ref.element;\n\t var size = _ref.size;\n\n\t if (!me.props[handlerName]) return;\n\n\t // Get new XY\n\n\t var _me$calcWH = me.calcWH(size);\n\n\t var w = _me$calcWH.w;\n\t var h = _me$calcWH.h;\n\n\t // Cap w at numCols\n\t w = Math.min(w, me.props.cols - me.props.x);\n\t // Ensure w is at least 1\n\t w = Math.max(w, 1);\n\n\t // Min/max capping\n\t w = Math.max(Math.min(w, me.props.maxW), me.props.minW);\n\t h = Math.max(Math.min(h, me.props.maxH), me.props.minH);\n\n\t me.setState({ resizing: handlerName === 'onResizeStop' ? null : size });\n\n\t me.props[handlerName](me.props.i, w, h, { e: e, element: element, size: size });\n\t };\n\t },\n\n\t render: function render() {\n\t var p = this.props,\n\t pos = this.calcPosition(p.x, p.y, p.w, p.h);\n\t if (this.state.resizing) {\n\t pos.width = this.state.resizing.width;\n\t pos.height = this.state.resizing.height;\n\t }\n\n\t var child = cloneWithProps(React.Children.only(this.props.children), {\n\t // Munge a classname. Use passed in classnames and resizing.\n\t // React with merge the classNames.\n\t className: ['react-grid-item', this.props.className, this.state.resizing ? 'resizing' : '', this.props.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: {\n\t width: pos.width + 'px',\n\t height: pos.height + 'px',\n\t left: pos.left + 'px',\n\t top: pos.top + 'px',\n\t position: 'absolute'\n\t }\n\t });\n\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 //\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\n\t // This is used for server rendering.\n\t if (this.props.usePercentages) {\n\t pos.left = utils.perc(pos.left / p.containerWidth);\n\t child.props.style.left = pos.left;\n\t child.props.style.width = utils.perc(pos.width / p.containerWidth);\n\t }\n\n\t // CSS Transforms support\n\t if (this.props.useCSSTransforms) {\n\t utils.setTransform(child.props.style, [pos.left, pos.top]);\n\t delete child.props.style.left;\n\t delete child.props.style.top;\n\t }\n\n\t // Resizable support. This is usually on but the user can toggle it off.\n\t if (this.props.isResizable) {\n\t child = this.mixinResizable(child, pos);\n\t }\n\n\t // Draggable support. This is always on, except for with placeholders.\n\t if (this.props.isDraggable) {\n\t child = this.mixinDraggable(child, pos);\n\t }\n\n\t return child;\n\t }\n\t});\n\n\tfunction constraintError(name, props) {\n\t delete props.children;\n\t throw new Error(name + ' overrides contraints on gridItem ' + props.i + '. Full props: ' + JSON.stringify(props));\n\t}\n\n\tmodule.exports = GridItem;\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _objectWithoutProperties = function (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\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\n\tvar React = __webpack_require__(1);\n\tvar utils = __webpack_require__(2);\n\tvar responsiveUtils = __webpack_require__(16);\n\tvar PureDeepRenderMixin = __webpack_require__(3);\n\tvar WidthListeningMixin = __webpack_require__(10);\n\tvar ReactGridLayout = __webpack_require__(9);\n\n\t/**\n\t * A wrapper around ReactGridLayout to support responsive breakpoints.\n\t */\n\tvar ResponsiveReactGridLayout = React.createClass({\n\t displayName: 'ResponsiveReactGridLayout',\n\n\t mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n\t propTypes: {\n\t //\n\t // Basic props\n\t //\n\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: React.PropTypes.string,\n\n\t // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n\t breakpoints: React.PropTypes.object,\n\n\t // # of cols. This is a breakpoint -> cols map\n\t cols: React.PropTypes.object,\n\n\t // layouts is an object mapping breakpoints to layouts.\n\t // e.g. {lg: Layout, md: Layout, ...}\n\t layouts: function layouts(props, propName, componentName) {\n\t React.PropTypes.object.isRequired.apply(this, arguments);\n\n\t var layouts = props.layouts;\n\t Object.keys(layouts).map(function (k) {\n\t utils.validateLayout(layouts[k], 'layouts.' + k);\n\t });\n\t },\n\n\t //\n\t // Callbacks\n\t //\n\n\t // Calls back with breakpoint and new # cols\n\t onBreakpointChange: React.PropTypes.func,\n\n\t // Callback so you can save the layout.\n\t // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n\t onLayoutChange: React.PropTypes.func\n\t },\n\n\t getDefaultProps: function getDefaultProps() {\n\t return {\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: function onBreakpointChange() {},\n\t onLayoutChange: function onLayoutChange() {}\n\t };\n\t },\n\n\t getInitialState: function getInitialState() {\n\t var breakpoint = this.props.breakpoint || responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, this.props.initialWidth);\n\t var cols = responsiveUtils.getColsFromBreakpoint(breakpoint, this.props.cols);\n\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 = responsiveUtils.findOrGenerateResponsiveLayout(this.props.layouts, this.props.breakpoints, breakpoint, breakpoint, cols);\n\n\t return {\n\t layout: initialLayout,\n\t // storage for layouts obsoleted by breakpoints\n\t layouts: this.props.layouts || {},\n\t breakpoint: breakpoint,\n\t cols: cols,\n\t width: this.props.initialWidth\n\t };\n\t },\n\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t // This allows you to set the width manually if you like.\n\t // Use manual width changes in combination with `listenToWindowResize: false`\n\t if (nextProps.width) this.onWidthChange(nextProps.width);\n\n\t // Allow parent to set breakpoint directly.\n\t if (nextProps.breakpoint !== this.props.breakpoint) {\n\t this.onWidthChange(this.state.width);\n\t }\n\n\t // Allow parent to set layouts directly.\n\t if (nextProps.layouts && nextProps.layouts !== this.state.layouts) {\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 var newLayout = responsiveUtils.findOrGenerateResponsiveLayout(nextProps.layouts, nextProps.breakpoints, this.state.breakpoint, this.state.breakpoint, this.state.cols);\n\n\t this.setState({\n\t layouts: nextProps.layouts,\n\t layout: newLayout\n\t });\n\t }\n\t },\n\n\t /**\n\t * Bubble this up, add `layouts` object.\n\t * @param {Array} layout Layout from inner Grid.\n\t */\n\t onLayoutChange: function onLayoutChange(layout) {\n\t this.state.layouts[this.state.breakpoint] = layout;\n\t this.setState({ layout: layout, layouts: this.state.layouts });\n\t this.props.onLayoutChange(layout, this.state.layouts);\n\t },\n\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 onWidthChange: function onWidthChange(width) {\n\t // Set new breakpoint\n\t var newState = { width: width };\n\t newState.breakpoint = this.props.breakpoint || responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, newState.width);\n\t newState.cols = responsiveUtils.getColsFromBreakpoint(newState.breakpoint, this.props.cols);\n\n\t // Breakpoint change\n\t if (newState.cols !== this.state.cols) {\n\n\t // Store the current layout\n\t newState.layouts = this.state.layouts;\n\t newState.layouts[this.state.breakpoint] = JSON.parse(JSON.stringify(this.state.layout));\n\n\t // Find or generate a new one.\n\t newState.layout = responsiveUtils.findOrGenerateResponsiveLayout(newState.layouts, this.props.breakpoints, newState.breakpoint, this.state.breakpoint, newState.cols);\n\n\t // This adds missing items.\n\t newState.layout = utils.synchronizeLayoutWithChildren(newState.layout, this.props.children, newState.cols);\n\n\t // Store this new layout as well.\n\t newState.layouts[newState.breakpoint] = newState.layout;\n\n\t this.props.onBreakpointChange(newState.breakpoint, newState.cols);\n\t }\n\n\t this.setState(newState);\n\t },\n\n\t render: function render() {\n\t // Don't pass responsive props to RGL.\n\t /*jshint unused:false*/\n\t var _props = this.props;\n\t var layouts = _props.layouts;\n\t var onBreakpointChange = _props.onBreakpointChange;\n\t var breakpoints = _props.breakpoints;\n\n\t var props = _objectWithoutProperties(_props, ['layouts', 'onBreakpointChange', 'breakpoints']);\n\n\t return React.createElement(\n\t ReactGridLayout,\n\t _extends({}, props, {\n\t layout: this.state.layout,\n\t cols: this.state.cols,\n\t listenToWindowResize: false,\n\t onLayoutChange: this.onLayoutChange,\n\t width: this.state.width }),\n\t this.props.children\n\t );\n\t }\n\t});\n\n\tmodule.exports = ResponsiveReactGridLayout;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar utils = __webpack_require__(2);\n\n\tvar responsiveUtils = module.exports = {\n\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 getBreakpointFromWidth: function getBreakpointFromWidth(breakpoints, width) {\n\t var sorted = responsiveUtils.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\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\t getColsFromBreakpoint: function getColsFromBreakpoint(breakpoint, cols) {\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\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 {Array} 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 * @return {Array} New layout.\n\t */\n\t findOrGenerateResponsiveLayout: function findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols) {\n\t // If it already exists, just return it.\n\t if (layouts[breakpoint]) {\n\t return layouts[breakpoint];\n\t } // Find or generate the next layout\n\t var layout = layouts[lastBreakpoint];\n\t var breakpointsSorted = responsiveUtils.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 = JSON.parse(JSON.stringify(layout || [])); // clone layout so we don't modify existing items\n\t return utils.compact(utils.correctBounds(layout, { cols: cols }));\n\t },\n\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\t sortBreakpoints: function sortBreakpoints(breakpoints) {\n\t var keys = Object.keys(breakpoints);\n\t return keys.sort(function (a, b) {\n\t return breakpoints[a] - breakpoints[b];\n\t });\n\t }\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pSlice = Array.prototype.slice;\n\tvar objectKeys = __webpack_require__(19);\n\tvar isArguments = __webpack_require__(18);\n\n\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t if (!opts) opts = {};\n\t // 7.1. All identical values are equivalent, as determined by ===.\n\t if (actual === expected) {\n\t return true;\n\n\t } else if (actual instanceof Date && expected instanceof Date) {\n\t return actual.getTime() === expected.getTime();\n\n\t // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t // equivalence is determined by ==.\n\t } else if (typeof actual != 'object' && typeof expected != 'object') {\n\t return opts.strict ? actual === expected : actual == expected;\n\n\t // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t // determined by having the same number of owned properties (as verified\n\t // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t // (although not necessarily the same order), equivalent values for every\n\t // corresponding key, and an identical 'prototype' property. Note: this\n\t // accounts for both named and indexed properties on Arrays.\n\t } else {\n\t return objEquiv(actual, expected, opts);\n\t }\n\t}\n\n\tfunction isUndefinedOrNull(value) {\n\t return value === null || value === undefined;\n\t}\n\n\tfunction isBuffer (x) {\n\t if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t return false;\n\t }\n\t if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t return true;\n\t}\n\n\tfunction objEquiv(a, b, opts) {\n\t var i, key;\n\t if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t return false;\n\t // an identical 'prototype' property.\n\t if (a.prototype !== b.prototype) return false;\n\t //~~~I've managed to break Object.keys through screwy arguments passing.\n\t // Converting to array solves the problem.\n\t if (isArguments(a)) {\n\t if (!isArguments(b)) {\n\t return false;\n\t }\n\t a = pSlice.call(a);\n\t b = pSlice.call(b);\n\t return deepEqual(a, b, opts);\n\t }\n\t if (isBuffer(a)) {\n\t if (!isBuffer(b)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) return false;\n\t for (i = 0; i < a.length; i++) {\n\t if (a[i] !== b[i]) return false;\n\t }\n\t return true;\n\t }\n\t try {\n\t var ka = objectKeys(a),\n\t kb = objectKeys(b);\n\t } catch (e) {//happens when one is a string literal and the other isn't\n\t return false;\n\t }\n\t // having the same number of owned properties (keys incorporates\n\t // hasOwnProperty)\n\t if (ka.length != kb.length)\n\t return false;\n\t //the same set of keys (although not necessarily the same order),\n\t ka.sort();\n\t kb.sort();\n\t //~~~cheap key test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t if (ka[i] != kb[i])\n\t return false;\n\t }\n\t //equivalent values for every corresponding key, and\n\t //~~~possibly expensive deep test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t key = ka[i];\n\t if (!deepEqual(a[key], b[key], opts)) return false;\n\t }\n\t return typeof a === typeof b;\n\t}\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar supportsArgumentsClass = (function(){\n\t return Object.prototype.toString.call(arguments)\n\t})() == '[object Arguments]';\n\n\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\n\texports.supported = supported;\n\tfunction supported(object) {\n\t return Object.prototype.toString.call(object) == '[object Arguments]';\n\t};\n\n\texports.unsupported = unsupported;\n\tfunction unsupported(object){\n\t return object &&\n\t typeof object == 'object' &&\n\t typeof object.length == 'number' &&\n\t Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t false;\n\t};\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = typeof Object.keys === 'function'\n\t ? Object.keys : shim;\n\n\texports.shim = shim;\n\tfunction shim (obj) {\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t return keys;\n\t}\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar React = __webpack_require__(1);\n\tvar PureRenderMixin = __webpack_require__(5);\n\tvar emptyFunction = __webpack_require__(7);\n\tvar cloneWithProps = __webpack_require__(6);\n\n\tfunction createUIEvent(draggable) {\n\t\treturn {\n\t\t\telement: draggable.getDOMNode(),\n\t\t\tposition: {\n\t\t\t\ttop: (draggable._pendingState || draggable.state).clientY,\n\t\t\t\tleft: (draggable._pendingState || draggable.state).clientX\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction canDragY(draggable) {\n\t\treturn draggable.props.axis === 'both' ||\n\t\t\t\tdraggable.props.axis === 'y';\n\t}\n\n\tfunction canDragX(draggable) {\n\t\treturn draggable.props.axis === 'both' ||\n\t\t\t\tdraggable.props.axis === 'x';\n\t}\n\n\tfunction isFunction(func) {\n\t return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n\t}\n\n\t// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\n\tfunction findInArray(array, callback) {\n\t for (var i = 0, length = array.length, element = null; i < length, element = array[i]; i++) {\n\t if (callback.apply(callback, [element, i, array])) return element;\n\t }\n\t}\n\n\tfunction matchesSelector(el, selector) {\n\t var method = findInArray([\n\t 'matches',\n\t 'webkitMatchesSelector',\n\t 'mozMatchesSelector',\n\t 'msMatchesSelector',\n\t 'oMatchesSelector'\n\t ], function(method){\n\t return isFunction(el[method]);\n\t });\n\n\t return el[method].call(el, selector);\n\t}\n\n\tfunction positionToCSSTransform(style) {\n\t\t// Replace unitless items with px\n\t\tvar x = ('' + style.left).replace(/(\\d)$/, '$1px');\n\t\tvar y = ('' + style.top).replace(/(\\d)$/, '$1px');\n\t\tstyle.transform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.WebkitTransform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.OTransform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.msTransform = 'translate(' + x + ',' + y + ')';\n\t\tstyle.MozTransform = 'translate(' + x + ',' + y + ')';\n\t\tdelete style.left;\n\t\tdelete style.top;\n\t\treturn style;\n\t}\n\n\t// @credits: http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript/4819886#4819886\n\t/* Conditional to fix node server side rendering of component */\n\tif (typeof window === 'undefined') {\n\t // Do Node Stuff\n\t var isTouchDevice = false;\n\t} else {\n\t // Do Browser Stuff\n\t var isTouchDevice = 'ontouchstart' in window || // works on most browsers\n\t 'onmsgesturechange' in window; // works on ie10 on ms surface\n\t}\n\n\t// look ::handleDragStart\n\t//function isMultiTouch(e) {\n\t// return e.touches && Array.isArray(e.touches) && e.touches.length > 1\n\t//}\n\n\t/**\n\t * simple abstraction for dragging events names\n\t * */\n\tvar dragEventFor = (function () {\n\t var eventsFor = {\n\t touch: {\n\t start: 'touchstart',\n\t move: 'touchmove',\n\t end: 'touchend'\n\t },\n\t mouse: {\n\t start: 'mousedown',\n\t move: 'mousemove',\n\t end: 'mouseup'\n\t }\n\t };\n\t return eventsFor[isTouchDevice ? 'touch' : 'mouse'];\n\t})();\n\n\t/**\n\t * get {clientX, clientY} positions of control\n\t * */\n\tfunction getControlPosition(e) {\n\t var position = (e.touches && e.touches[0]) || e;\n\t return {\n\t clientX: position.clientX,\n\t clientY: position.clientY\n\t };\n\t}\n\n\tfunction addEvent(el, event, handler) {\n\t\tif (!el) { return; }\n\t\tif (el.attachEvent) {\n\t\t\tel.attachEvent('on' + event, handler);\n\t\t} else if (el.addEventListener) {\n\t\t\tel.addEventListener(event, handler, true);\n\t\t} else {\n\t\t\tel['on' + event] = handler;\n\t\t}\n\t}\n\n\tfunction removeEvent(el, event, handler) {\n\t\tif (!el) { return; }\n\t\tif (el.detachEvent) {\n\t\t\tel.detachEvent('on' + event, handler);\n\t\t} else if (el.removeEventListener) {\n\t\t\tel.removeEventListener(event, handler, true);\n\t\t} else {\n\t\t\tel['on' + event] = null;\n\t\t}\n\t}\n\n\tmodule.exports = React.createClass({\n\t\tdisplayName: 'Draggable',\n\t\tmixins: [PureRenderMixin],\n\n\t\tpropTypes: {\n\t\t\t/**\n\t\t\t * `axis` determines which axis the draggable can move.\n\t\t\t *\n\t\t\t * 'both' allows movement horizontally and vertically.\n\t\t\t * 'x' limits movement to horizontal axis.\n\t\t\t * 'y' limits movement to vertical axis.\n\t\t\t *\n\t\t\t * Defaults to 'both'.\n\t\t\t */\n\t\t\taxis: React.PropTypes.oneOf(['both', 'x', 'y']),\n\n\t\t\t/**\n\t\t\t * `handle` specifies a selector to be used as the handle that initiates drag.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t \treturn (\n\t\t\t * \t \t \t\n\t\t\t * \t \t \t
\n\t\t\t * \t \t \t
Click me to drag
\n\t\t\t * \t \t \t
This is some other content
\n\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\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\thandle: React.PropTypes.string,\n\n\t\t\t/**\n\t\t\t * `cancel` specifies a selector to be used to prevent drag initialization.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return(\n\t\t\t * \t \n\t\t\t * \t
\n\t\t\t * \t \t
You can't drag from here
\n\t\t\t *\t\t\t\t\t\t
Dragging here works fine
\n\t\t\t * \t
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tcancel: React.PropTypes.string,\n\n\t\t\t/**\n\t\t\t * `grid` specifies the x and y that dragging should snap to.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I snap to a 25 x 25 grid
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tgrid: React.PropTypes.arrayOf(React.PropTypes.number),\n\n\t\t\t/**\n\t\t\t * `start` specifies the x and y that the dragged item should start at\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I start with left: 25px; top: 25px;
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tstart: React.PropTypes.object,\n\n\t\t\t/**\n\t\t\t * `moveOnStartChange` tells the Draggable element to reset its position\n\t\t\t * if the `start` parameters are changed. By default, if the `start` \n\t\t\t * parameters change, the Draggable element still remains where it started\n\t\t\t * or was dragged to.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t\t\tonButtonClick: function () {\n\t\t\t * \t\t\t\tthis.setState({clicked: true});\n\t\t\t * \t\t\t},\n\t\t\t * \t render: function () {\n\t\t\t * \t \t\tvar start = this.state.clicked ?\n\t\t\t * \t \t\t {x: 25, y: 25} :\n\t\t\t * \t \t\t {x: 125, y: 125};\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I start with left: 25px; top: 25px;,\n\t\t\t * \t but move to left: 125px; top: 125px; when the button\n\t\t\t * \t is clicked.
\n\t\t\t * \t
Button
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tmoveOnStartChange: React.PropTypes.bool,\n\n\t\t\t/**\n\t\t\t * `useCSSTransforms` if true will place the element using translate(x, y)\n\t\t\t * rather than CSS top/left.\n\t\t\t *\n\t\t\t * This generally gives better performance, and is useful in combination with\n\t\t\t * other layout systems that use translate(), such as react-grid-layout.\n\t\t\t */\n\t\t\tuseCSSTransforms: React.PropTypes.bool,\n\n\t\t\t/**\n\t\t\t * `zIndex` specifies the zIndex to use while dragging.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```jsx\n\t\t\t * \tvar App = React.createClass({\n\t\t\t * \t render: function () {\n\t\t\t * \t return (\n\t\t\t * \t \n\t\t\t * \t
I have a zIndex
\n\t\t\t * \t
\n\t\t\t * \t );\n\t\t\t * \t }\n\t\t\t * \t});\n\t\t\t * ```\n\t\t\t */\n\t\t\tzIndex: React.PropTypes.number,\n\n\t\t\t/**\n\t\t\t * Called when dragging starts.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\tfunction (event, ui) {}\n\t\t\t * ```\n\t\t\t *\n\t\t\t * `event` is the Event that was triggered.\n\t\t\t * `ui` is an object:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\t{\n\t\t\t *\t\tposition: {top: 0, left: 0}\n\t\t\t *\t}\n\t\t\t * ```\n\t\t\t */\n\t\t\tonStart: React.PropTypes.func,\n\n\t\t\t/**\n\t\t\t * Called while dragging.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\tfunction (event, ui) {}\n\t\t\t * ```\n\t\t\t *\n\t\t\t * `event` is the Event that was triggered.\n\t\t\t * `ui` is an object:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\t{\n\t\t\t *\t\tposition: {top: 0, left: 0}\n\t\t\t *\t}\n\t\t\t * ```\n\t\t\t */\n\t\t\tonDrag: React.PropTypes.func,\n\n\t\t\t/**\n\t\t\t * Called when dragging stops.\n\t\t\t *\n\t\t\t * Example:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\tfunction (event, ui) {}\n\t\t\t * ```\n\t\t\t *\n\t\t\t * `event` is the Event that was triggered.\n\t\t\t * `ui` is an object:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t *\t{\n\t\t\t *\t\tposition: {top: 0, left: 0}\n\t\t\t *\t}\n\t\t\t * ```\n\t\t\t */\n\t\t\tonStop: React.PropTypes.func,\n\n\t\t\t/**\n\t\t\t * A workaround option which can be passed if onMouseDown needs to be accessed, \n\t\t\t * since it'll always be blocked (due to that there's internal use of onMouseDown)\n\t\t\t *\n\t\t\t */\n\t\t\tonMouseDown: React.PropTypes.func\n\t\t},\n\n\t\tcomponentWillUnmount: function() {\n\t\t\t// Remove any leftover event handlers\n\t\t\tremoveEvent(window, dragEventFor['move'], this.handleDrag);\n\t\t\tremoveEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t\t},\n\n\t\tcomponentWillReceiveProps: function(nextProps) {\n\t\t\t// If this is set to watch a changing start position, \n\t\t\t// set x and y to the new position.\n\t\t\tif (nextProps.moveOnStartChange) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tclientX: nextProps.start.x,\n\t\t\t\t\tclientY: nextProps.start.y\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tgetDefaultProps: function () {\n\t\t\treturn {\n\t\t\t\taxis: 'both',\n\t\t\t\thandle: null,\n\t\t\t\tcancel: null,\n\t\t\t\tgrid: null,\n\t\t\t\tstart: {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t},\n\t\t\t\tmoveOnStartChange: false,\n\t\t\t\tuseCSSTransforms: false,\n\t\t\t\tzIndex: NaN,\n\t\t\t\tonStart: emptyFunction,\n\t\t\t\tonDrag: emptyFunction,\n\t\t\t\tonStop: emptyFunction,\n\t\t\t\tonMouseDown: emptyFunction\n\t\t\t};\n\t\t},\n\n\t\tgetInitialState: function () {\n\t\t\treturn {\n\t\t\t\t// Whether or not currently dragging\n\t\t\t\tdragging: false,\n\n\t\t\t\t// Start top/left of this.getDOMNode()\n\t\t\t\tstartX: 0, startY: 0,\n\n\t\t\t\t// Offset between start top/left and mouse top/left\n\t\t\t\toffsetX: 0, offsetY: 0,\n\n\t\t\t\t// Current top/left of this.getDOMNode()\n\t\t\t\tclientX: this.props.start.x, clientY: this.props.start.y\n\t\t\t};\n\t\t},\n\n\t\thandleDragStart: function (e) {\n\t // todo: write right implementation to prevent multitouch drag\n\t // prevent multi-touch events\n\t // if (isMultiTouch(e)) {\n\t // this.handleDragEnd.apply(e, arguments);\n\t // return\n\t // }\n\n\t\t\t// Make it possible to attach event handlers on top of this one\n\t\t\tthis.props.onMouseDown(e);\n\n\t\t\t// Only catch left clicks, if clicking\n\t\t\tif (typeof e.button === \"number\" && e.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar node = this.getDOMNode();\n\n\t\t\t// Short circuit if handle or cancel prop was provided and selector doesn't match\n\t\t\tif ((this.props.handle && !matchesSelector(e.target, this.props.handle)) ||\n\t\t\t\t(this.props.cancel && matchesSelector(e.target, this.props.cancel))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t var dragPoint = getControlPosition(e);\n\n\t\t\t// Initiate dragging\n\t\t\tthis.setState({\n\t\t\t\tdragging: true,\n\t\t\t\toffsetX: parseInt(dragPoint.clientX, 10),\n\t\t\t\toffsetY: parseInt(dragPoint.clientY, 10),\n\t\t\t\tstartX: parseInt(this.state.clientX, 10) || 0,\n\t\t\t\tstartY: parseInt(this.state.clientY, 10) || 0\n\t\t\t});\n\n\t\t\t// Add a class to the body to disable user-select. This prevents text from \n\t\t\t// being selected all over the page.\n\t\t\tdocument.body.className += \" react-draggable-active\";\n\n\t\t\t// Call event handler\n\t\t\tthis.props.onStart(e, createUIEvent(this));\n\n\t\t\t// Add event handlers\n\t\t\taddEvent(window, dragEventFor['move'], this.handleDrag);\n\t\t\taddEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t\t},\n\n\t\thandleDragEnd: function (e) {\n\t\t\t// Short circuit if not currently dragging\n\t\t\tif (!this.state.dragging) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Turn off dragging\n\t\t\tthis.setState({\n\t\t\t\tdragging: false\n\t\t\t});\n\n\t\t\t// Remove the body class used to disable user-select.\n\t\t\tdocument.body.className = document.body.className.replace(\" react-draggable-active\", \"\");\n\n\t\t\t// Call event handler\n\t\t\tthis.props.onStop(e, createUIEvent(this));\n\n\t\t\t// Remove event handlers\n\t removeEvent(window, dragEventFor['move'], this.handleDrag);\n\t removeEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t\t},\n\n\t\thandleDrag: function (e) {\n\t var dragPoint = getControlPosition(e);\n\n\t\t\t// Calculate top and left\n\t var clientX = (this.state.startX + (dragPoint.clientX - this.state.offsetX));\n\t var clientY = (this.state.startY + (dragPoint.clientY - this.state.offsetY));\n\n\t\t\t// Snap to grid if prop has been provided\n\t\t\tif (Array.isArray(this.props.grid)) {\n\t\t\t\tvar directionX = clientX < parseInt(this.state.clientX, 10) ? -1 : 1;\n\t\t\t\tvar directionY = clientY < parseInt(this.state.clientY, 10) ? -1 : 1;\n\n\t\t\t\tclientX = Math.abs(clientX - parseInt(this.state.clientX, 10)) >= this.props.grid[0]\n\t\t\t\t\t\t? (parseInt(this.state.clientX, 10) + (this.props.grid[0] * directionX))\n\t\t\t\t\t\t: parseInt(this.state.clientX, 10);\n\n\t\t\t\tclientY = Math.abs(clientY - parseInt(this.state.clientY, 10)) >= this.props.grid[1]\n\t\t\t\t\t\t? (parseInt(this.state.clientY, 10) + (this.props.grid[1] * directionY))\n\t\t\t\t\t\t: parseInt(this.state.clientY, 10);\n\t\t\t}\n\n\t\t\t// Min/max constraints\n\t\t\tif (Array.isArray(this.props.minConstraints)) {\n\t\t\t\tclientX = Math.max(this.props.minConstraints[0], clientX);\n\t\t\t\tclientY = Math.max(this.props.minConstraints[1], clientY);\n\t\t\t}\n\t\t\tif (Array.isArray(this.props.maxConstraints)) {\n\t\t\t\tclientX = Math.min(this.props.maxConstraints[0], clientX);\n\t\t\t\tclientY = Math.min(this.props.maxConstraints[1], clientY);\n\t\t\t}\n\n\t\t\t// Update top and left\n\t\t\tthis.setState({\n\t\t\t\tclientX: clientX,\n\t\t\t\tclientY: clientY\n\t\t\t});\n\n\t\t\t// Call event handler\n\t\t\tthis.props.onDrag(e, createUIEvent(this));\n\t\t},\n\n\t\trender: function () {\n\t\t\tvar style = {\n\t\t\t\t// Set top if vertical drag is enabled\n\t\t\t\ttop: canDragY(this)\n\t\t\t\t\t? this.state.clientY\n\t\t\t\t\t: this.state.startY,\n\n\t\t\t\t// Set left if horizontal drag is enabled\n\t\t\t\tleft: canDragX(this)\n\t\t\t\t\t? this.state.clientX\n\t\t\t\t\t: this.state.startX\n\t\t\t};\n\n\t\t\tif (this.props.useCSSTransforms) {\n\t\t\t\tstyle = positionToCSSTransform(style);\n\t\t\t}\n\n\t\t\t// Set zIndex if currently dragging and prop has been provided\n\t\t\tif (this.state.dragging && !isNaN(this.props.zIndex)) {\n\t\t\t\tstyle.zIndex = this.props.zIndex;\n\t\t\t}\n\n\t\t\t// Reuse the child provided\n\t\t\t// This makes it flexible to use whatever element is wanted (div, ul, etc)\n\t\t\treturn cloneWithProps(React.Children.only(this.props.children), {\n\t\t\t\tstyle: style,\n\t\t\t\tclassName: 'react-draggable' + (this.state.dragging ? ' react-draggable-dragging' : ''),\n\n\t\t\t\tonMouseDown: this.handleDragStart,\n\t\t\t\tonTouchStart: function(ev){\n\t ev.preventDefault(); // prevent for scroll\n\t return this.handleDragStart.apply(this, arguments);\n\t }.bind(this),\n\n\t\t\t\tonMouseUp: this.handleDragEnd,\n\t\t\t\tonTouchEnd: this.handleDragEnd\n\t\t\t});\n\t\t}\n\t});\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _objectWithoutProperties = function (obj, keys) {\n\t var target = {};\n\t for (var i in obj) {\n\t if (keys.indexOf(i) >= 0) continue;\n\t if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n\t target[i] = obj[i];\n\t }\n\n\t return target;\n\t};\n\n\t\"use strict\";\n\tvar React = __webpack_require__(1);\n\tvar PureRenderMixin = __webpack_require__(5);\n\tvar Resizable = __webpack_require__(13);\n\n\t// An example use of Resizable.\n\tvar ResizableBox = module.exports = React.createClass({\n\t displayName: \"ResizableBox\",\n\t mixins: [PureRenderMixin],\n\n\t propTypes: {},\n\n\t getInitialState: function () {\n\t return {\n\t width: this.props.width,\n\t height: this.props.height\n\t };\n\t },\n\n\t onResize: function (event, _ref) {\n\t var element = _ref.element;\n\t var size = _ref.size;\n\t if (size.width !== this.state.width || size.height !== this.state.height) {\n\t this.setState({\n\t width: size.width,\n\t height: size.height\n\t });\n\t }\n\t },\n\n\t render: function () {\n\t // Basic wrapper around a Resizable instance.\n\t // If you use Resizable directly, you are responsible for updating the component\n\t // with a new width and height.\n\t var handleSize = this.props.handleSize;\n\t var minConstraints = this.props.minConstraints;\n\t var maxConstraints = this.props.maxConstraints;\n\t var props = _objectWithoutProperties(this.props, [\"handleSize\", \"minConstraints\", \"maxConstraints\"]);\n\n\t return React.createElement(Resizable, {\n\t minConstraints: minConstraints,\n\t maxConstraints: maxConstraints,\n\t handleSize: handleSize,\n\t width: this.state.width,\n\t height: this.state.height,\n\t onResize: this.onResize,\n\t draggableOpts: this.props.draggableOpts\n\t }, React.createElement(\"div\", React.__spread({\n\t style: { width: this.state.width + \"px\", height: this.state.height + \"px\" }\n\t }, props), this.props.children));\n\t }\n\t});\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = function() {\n\t throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n\t};\n\n\tmodule.exports.Resizable = __webpack_require__(13);\n\tmodule.exports.ResizableBox = __webpack_require__(21);\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactContext\n\t */\n\n\t'use strict';\n\n\tvar assign = __webpack_require__(4);\n\tvar emptyObject = __webpack_require__(27);\n\tvar warning = __webpack_require__(8);\n\n\tvar didWarn = false;\n\n\t/**\n\t * Keeps track of the current context.\n\t *\n\t * The context is automatically passed down the component ownership hierarchy\n\t * and is accessible via `this.context` on ReactCompositeComponents.\n\t */\n\tvar ReactContext = {\n\n\t /**\n\t * @internal\n\t * @type {object}\n\t */\n\t current: emptyObject,\n\n\t /**\n\t * Temporarily extends the current context while executing scopedCallback.\n\t *\n\t * A typical use case might look like\n\t *\n\t * render: function() {\n\t * var children = ReactContext.withContext({foo: 'foo'}, () => (\n\t *\n\t * ));\n\t * return
{children}
;\n\t * }\n\t *\n\t * @param {object} newContext New context to merge into the existing context\n\t * @param {function} scopedCallback Callback to run with the new context\n\t * @return {ReactComponent|array}\n\t */\n\t withContext: function(newContext, scopedCallback) {\n\t if (false) {\n\t (\"production\" !== process.env.NODE_ENV ? warning(\n\t didWarn,\n\t 'withContext is deprecated and will be removed in a future version. ' +\n\t 'Use a wrapper component with getChildContext instead.'\n\t ) : null);\n\n\t didWarn = true;\n\t }\n\n\t var result;\n\t var previousContext = ReactContext.current;\n\t ReactContext.current = assign({}, previousContext, newContext);\n\t try {\n\t result = scopedCallback();\n\t } finally {\n\t ReactContext.current = previousContext;\n\t }\n\t return result;\n\t }\n\n\t};\n\n\tmodule.exports = ReactContext;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactCurrentOwner\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Keeps track of the current owner.\n\t *\n\t * The current owner is the component who should own any components that are\n\t * currently being constructed.\n\t *\n\t * The depth indicate how many composite components are above this render level.\n\t */\n\tvar ReactCurrentOwner = {\n\n\t /**\n\t * @internal\n\t * @type {ReactComponent}\n\t */\n\t current: null\n\n\t};\n\n\tmodule.exports = ReactCurrentOwner;\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactElement\n\t */\n\n\t'use strict';\n\n\tvar ReactContext = __webpack_require__(23);\n\tvar ReactCurrentOwner = __webpack_require__(24);\n\n\tvar assign = __webpack_require__(4);\n\tvar warning = __webpack_require__(8);\n\n\tvar RESERVED_PROPS = {\n\t key: true,\n\t ref: true\n\t};\n\n\t/**\n\t * Warn for mutations.\n\t *\n\t * @internal\n\t * @param {object} object\n\t * @param {string} key\n\t */\n\tfunction defineWarningProperty(object, key) {\n\t Object.defineProperty(object, key, {\n\n\t configurable: false,\n\t enumerable: true,\n\n\t get: function() {\n\t if (!this._store) {\n\t return null;\n\t }\n\t return this._store[key];\n\t },\n\n\t set: function(value) {\n\t (false ? warning(\n\t false,\n\t 'Don\\'t set the %s property of the React element. Instead, ' +\n\t 'specify the correct value when initially creating the element.',\n\t key\n\t ) : null);\n\t this._store[key] = value;\n\t }\n\n\t });\n\t}\n\n\t/**\n\t * This is updated to true if the membrane is successfully created.\n\t */\n\tvar useMutationMembrane = false;\n\n\t/**\n\t * Warn for mutations.\n\t *\n\t * @internal\n\t * @param {object} element\n\t */\n\tfunction defineMutationMembrane(prototype) {\n\t try {\n\t var pseudoFrozenProperties = {\n\t props: true\n\t };\n\t for (var key in pseudoFrozenProperties) {\n\t defineWarningProperty(prototype, key);\n\t }\n\t useMutationMembrane = true;\n\t } catch (x) {\n\t // IE will fail on defineProperty\n\t }\n\t}\n\n\t/**\n\t * Base constructor for all React elements. This is only used to make this\n\t * work with a dynamic instanceof check. Nothing should live on this prototype.\n\t *\n\t * @param {*} type\n\t * @param {string|object} ref\n\t * @param {*} key\n\t * @param {*} props\n\t * @internal\n\t */\n\tvar ReactElement = function(type, key, ref, owner, context, props) {\n\t // Built-in properties that belong on the element\n\t this.type = type;\n\t this.key = key;\n\t this.ref = ref;\n\n\t // Record the component responsible for creating this element.\n\t this._owner = owner;\n\n\t // TODO: Deprecate withContext, and then the context becomes accessible\n\t // through the owner.\n\t this._context = context;\n\n\t if (false) {\n\t // The validation flag and props are currently mutative. We put them on\n\t // an external backing store so that we can freeze the whole object.\n\t // This can be replaced with a WeakMap once they are implemented in\n\t // commonly used development environments.\n\t this._store = {props: props, originalProps: assign({}, props)};\n\n\t // To make comparing ReactElements easier for testing purposes, we make\n\t // the validation flag non-enumerable (where possible, which should\n\t // include every environment we run tests in), so the test framework\n\t // ignores it.\n\t try {\n\t Object.defineProperty(this._store, 'validated', {\n\t configurable: false,\n\t enumerable: false,\n\t writable: true\n\t });\n\t } catch (x) {\n\t }\n\t this._store.validated = false;\n\n\t // We're not allowed to set props directly on the object so we early\n\t // return and rely on the prototype membrane to forward to the backing\n\t // store.\n\t if (useMutationMembrane) {\n\t Object.freeze(this);\n\t return;\n\t }\n\t }\n\n\t this.props = props;\n\t};\n\n\t// We intentionally don't expose the function on the constructor property.\n\t// ReactElement should be indistinguishable from a plain object.\n\tReactElement.prototype = {\n\t _isReactElement: true\n\t};\n\n\tif (false) {\n\t defineMutationMembrane(ReactElement.prototype);\n\t}\n\n\tReactElement.createElement = function(type, config, children) {\n\t var propName;\n\n\t // Reserved names are extracted\n\t var props = {};\n\n\t var key = null;\n\t var ref = null;\n\n\t if (config != null) {\n\t ref = config.ref === undefined ? null : config.ref;\n\t key = config.key === undefined ? null : '' + config.key;\n\t // Remaining properties are added to a new props object\n\t for (propName in config) {\n\t if (config.hasOwnProperty(propName) &&\n\t !RESERVED_PROPS.hasOwnProperty(propName)) {\n\t props[propName] = config[propName];\n\t }\n\t }\n\t }\n\n\t // Children can be more than one argument, and those are transferred onto\n\t // the newly allocated props object.\n\t var childrenLength = arguments.length - 2;\n\t if (childrenLength === 1) {\n\t props.children = children;\n\t } else if (childrenLength > 1) {\n\t var childArray = Array(childrenLength);\n\t for (var i = 0; i < childrenLength; i++) {\n\t childArray[i] = arguments[i + 2];\n\t }\n\t props.children = childArray;\n\t }\n\n\t // Resolve default props\n\t if (type && type.defaultProps) {\n\t var defaultProps = type.defaultProps;\n\t for (propName in defaultProps) {\n\t if (typeof props[propName] === 'undefined') {\n\t props[propName] = defaultProps[propName];\n\t }\n\t }\n\t }\n\n\t return new ReactElement(\n\t type,\n\t key,\n\t ref,\n\t ReactCurrentOwner.current,\n\t ReactContext.current,\n\t props\n\t );\n\t};\n\n\tReactElement.createFactory = function(type) {\n\t var factory = ReactElement.createElement.bind(null, type);\n\t // Expose the type on the factory and the prototype so that it can be\n\t // easily accessed on elements. E.g. .type === Foo.type.\n\t // This should not be named `constructor` since this may not be the function\n\t // that created the element, and it may not even be a constructor.\n\t // Legacy hook TODO: Warn if this is accessed\n\t factory.type = type;\n\t return factory;\n\t};\n\n\tReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n\t var newElement = new ReactElement(\n\t oldElement.type,\n\t oldElement.key,\n\t oldElement.ref,\n\t oldElement._owner,\n\t oldElement._context,\n\t newProps\n\t );\n\n\t if (false) {\n\t // If the key on the original is valid, then the clone is valid\n\t newElement._store.validated = oldElement._store.validated;\n\t }\n\t return newElement;\n\t};\n\n\tReactElement.cloneElement = function(element, config, children) {\n\t var propName;\n\n\t // Original props are copied\n\t var props = assign({}, element.props);\n\n\t // Reserved names are extracted\n\t var key = element.key;\n\t var ref = element.ref;\n\n\t // Owner will be preserved, unless ref is overridden\n\t var owner = element._owner;\n\n\t if (config != null) {\n\t if (config.ref !== undefined) {\n\t // Silently steal the ref from the parent.\n\t ref = config.ref;\n\t owner = ReactCurrentOwner.current;\n\t }\n\t if (config.key !== undefined) {\n\t key = '' + config.key;\n\t }\n\t // Remaining properties override existing props\n\t for (propName in config) {\n\t if (config.hasOwnProperty(propName) &&\n\t !RESERVED_PROPS.hasOwnProperty(propName)) {\n\t props[propName] = config[propName];\n\t }\n\t }\n\t }\n\n\t // Children can be more than one argument, and those are transferred onto\n\t // the newly allocated props object.\n\t var childrenLength = arguments.length - 2;\n\t if (childrenLength === 1) {\n\t props.children = children;\n\t } else if (childrenLength > 1) {\n\t var childArray = Array(childrenLength);\n\t for (var i = 0; i < childrenLength; i++) {\n\t childArray[i] = arguments[i + 2];\n\t }\n\t props.children = childArray;\n\t }\n\n\t return new ReactElement(\n\t element.type,\n\t key,\n\t ref,\n\t owner,\n\t element._context,\n\t props\n\t );\n\t};\n\n\t/**\n\t * @param {?object} object\n\t * @return {boolean} True if `object` is a valid component.\n\t * @final\n\t */\n\tReactElement.isValidElement = function(object) {\n\t // ReactTestUtils is often used outside of beforeEach where as React is\n\t // within it. This leads to two different instances of React on the same\n\t // page. To identify a element from a different React instance we use\n\t // a flag instead of an instanceof check.\n\t var isElement = !!(object && object._isReactElement);\n\t // if (isElement && !(object instanceof ReactElement)) {\n\t // This is an indicator that you're using multiple versions of React at the\n\t // same time. This will screw with ownership and stuff. Fix it, please.\n\t // TODO: We could possibly warn here.\n\t // }\n\t return isElement;\n\t};\n\n\tmodule.exports = ReactElement;\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ReactPropTransferer\n\t */\n\n\t'use strict';\n\n\tvar assign = __webpack_require__(4);\n\tvar emptyFunction = __webpack_require__(7);\n\tvar joinClasses = __webpack_require__(28);\n\n\t/**\n\t * Creates a transfer strategy that will merge prop values using the supplied\n\t * `mergeStrategy`. If a prop was previously unset, this just sets it.\n\t *\n\t * @param {function} mergeStrategy\n\t * @return {function}\n\t */\n\tfunction createTransferStrategy(mergeStrategy) {\n\t return function(props, key, value) {\n\t if (!props.hasOwnProperty(key)) {\n\t props[key] = value;\n\t } else {\n\t props[key] = mergeStrategy(props[key], value);\n\t }\n\t };\n\t}\n\n\tvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n\t // `merge` overrides the first object's (`props[key]` above) keys using the\n\t // second object's (`value`) keys. An object's style's existing `propA` would\n\t // get overridden. Flip the order here.\n\t return assign({}, b, a);\n\t});\n\n\t/**\n\t * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n\t * NOTE: if you add any more exceptions to this list you should be sure to\n\t * update `cloneWithProps()` accordingly.\n\t */\n\tvar TransferStrategies = {\n\t /**\n\t * Never transfer `children`.\n\t */\n\t children: emptyFunction,\n\t /**\n\t * Transfer the `className` prop by merging them.\n\t */\n\t className: createTransferStrategy(joinClasses),\n\t /**\n\t * Transfer the `style` prop (which is an object) by merging them.\n\t */\n\t style: transferStrategyMerge\n\t};\n\n\t/**\n\t * Mutates the first argument by transferring the properties from the second\n\t * argument.\n\t *\n\t * @param {object} props\n\t * @param {object} newProps\n\t * @return {object}\n\t */\n\tfunction transferInto(props, newProps) {\n\t for (var thisKey in newProps) {\n\t if (!newProps.hasOwnProperty(thisKey)) {\n\t continue;\n\t }\n\n\t var transferStrategy = TransferStrategies[thisKey];\n\n\t if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n\t transferStrategy(props, thisKey, newProps[thisKey]);\n\t } else if (!props.hasOwnProperty(thisKey)) {\n\t props[thisKey] = newProps[thisKey];\n\t }\n\t }\n\t return props;\n\t}\n\n\t/**\n\t * ReactPropTransferer are capable of transferring props to another component\n\t * using a `transferPropsTo` method.\n\t *\n\t * @class ReactPropTransferer\n\t */\n\tvar ReactPropTransferer = {\n\n\t /**\n\t * Merge two props objects using TransferStrategies.\n\t *\n\t * @param {object} oldProps original props (they take precedence)\n\t * @param {object} newProps new props to merge in\n\t * @return {object} a new object containing both sets of props merged.\n\t */\n\t mergeProps: function(oldProps, newProps) {\n\t return transferInto(assign({}, oldProps), newProps);\n\t }\n\n\t};\n\n\tmodule.exports = ReactPropTransferer;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule emptyObject\n\t */\n\n\t\"use strict\";\n\n\tvar emptyObject = {};\n\n\tif (false) {\n\t Object.freeze(emptyObject);\n\t}\n\n\tmodule.exports = emptyObject;\n\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule joinClasses\n\t * @typechecks static-only\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Combines multiple className strings into one.\n\t * http://jsperf.com/joinclasses-args-vs-array\n\t *\n\t * @param {...?string} classes\n\t * @return {string}\n\t */\n\tfunction joinClasses(className/*, ... */) {\n\t if (!className) {\n\t className = '';\n\t }\n\t var nextClass;\n\t var argLength = arguments.length;\n\t if (argLength > 1) {\n\t for (var ii = 1; ii < argLength; ii++) {\n\t nextClass = arguments[ii];\n\t if (nextClass) {\n\t className = (className ? className + ' ' : '') + nextClass;\n\t }\n\t }\n\t }\n\t return className;\n\t}\n\n\tmodule.exports = joinClasses;\n\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule keyOf\n\t */\n\n\t/**\n\t * Allows extraction of a minified key. Let's the build system minify keys\n\t * without loosing the ability to dynamically use key strings as values\n\t * themselves. Pass in an object with a single key/val pair and it will return\n\t * you the string key of that single record. Suppose you want to grab the\n\t * value for a key 'className' inside of an object. Key/val minification may\n\t * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n\t * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n\t * reuse those resolutions.\n\t */\n\tvar keyOf = function(oneKeyObj) {\n\t var key;\n\t for (key in oneKeyObj) {\n\t if (!oneKeyObj.hasOwnProperty(key)) {\n\t continue;\n\t }\n\t return key;\n\t }\n\t return null;\n\t};\n\n\n\tmodule.exports = keyOf;\n\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule shallowEqual\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Performs equality by iterating through keys on an object and returning\n\t * false when any key has values which are not strictly equal between\n\t * objA and objB. Returns true when the values of all keys are strictly equal.\n\t *\n\t * @return {boolean}\n\t */\n\tfunction shallowEqual(objA, objB) {\n\t if (objA === objB) {\n\t return true;\n\t }\n\t var key;\n\t // Test for A's keys different from B.\n\t for (key in objA) {\n\t if (objA.hasOwnProperty(key) &&\n\t (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n\t return false;\n\t }\n\t }\n\t // Test for B's keys missing from A.\n\t for (key in objB) {\n\t if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\n\tmodule.exports = shallowEqual;\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/** WEBPACK FOOTER **\n ** webpack/bootstrap 72bbfcd3e2e8561f1cfb\n **/","module.exports = require('./lib/ReactGridLayout');\nmodule.exports.Responsive = require('./lib/ResponsiveReactGridLayout');\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 \"React\"\n ** module id = 1\n ** module chunks = 0\n **/","'use strict';\n\nvar assign = require('object-assign');\n\nvar utils = module.exports = {\n\n /**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\n bottom(layout) {\n var max = 0, bottomY;\n for (var 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\n /**\n * Clones a shallow object.\n * @param {Object} obj Object to clone.\n * @return {Object} Cloned object.\n */\n clone(obj) {\n return assign({}, obj);\n },\n\n /**\n * Given two layouts, check if they collide.\n *\n * @param {Object} l1 Layout object.\n * @param {Object} l2 Layout object.\n * @return {Boolean} True if colliding.\n */\n collides(l1, l2) {\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 * @return {Array} Compacted Layout.\n */\n compact(layout) {\n // Statics go in the compareWith array right away so items flow around them.\n var compareWith = utils.getStatics(layout), out = [];\n // We go through the items by row and column.\n var sorted = utils.sortLayoutItemsByRowCol(layout);\n\n for (var i = 0, len = sorted.length; i < len; i++) {\n var l = sorted[i];\n\n // Don't move static elements\n if (!l.static) {\n l = utils.compactItem(compareWith, l);\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 delete l.moved;\n }\n\n return out;\n },\n\n compactItem(compareWith, l) {\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !utils.getFirstCollision(compareWith, l)) {\n l.y--;\n }\n\n // Move it down, and keep moving it down if it's colliding.\n var collides;\n while((collides = utils.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 * @return {[type]} [description]\n */\n correctBounds(layout, bounds) {\n var collidesWith = utils.getStatics(layout);\n for (var i = 0, len = layout.length; i < len; i++) {\n var 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(utils.getFirstCollision(collidesWith, l)) {\n l.y++;\n }\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 {Number} id ID\n * @return {LayoutItem} Item at ID.\n */\n getLayoutItem(layout, id) {\n id = \"\" + id;\n for (var 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 */\n getFirstCollision(layout, layoutItem) {\n for (var i = 0, len = layout.length; i < len; i++) {\n if (utils.collides(layout[i], layoutItem)) return layout[i];\n }\n },\n\n getAllCollisions(layout, layoutItem) {\n var out = [];\n for (var i = 0, len = layout.length; i < len; i++) {\n if (utils.collides(layout[i], layoutItem)) out.push(layout[i]);\n }\n return out;\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 */\n getStatics(layout) {\n var out = [];\n for (var i = 0, len = layout.length; i < len; i++) {\n if (layout[i].static) out.push(layout[i]);\n }\n return out;\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 */\n moveElement(layout, l, x, y, isUserAction) {\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 var movingUp = l.y > y;\n // This is quite a bit faster than extending the object\n if (x !== undefined) l.x = x;\n if (y !== undefined) 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 var sorted = utils.sortLayoutItemsByRowCol(layout);\n if (movingUp) sorted = sorted.reverse();\n var collisions = utils.getAllCollisions(sorted, l);\n\n // Move each item that collides away from this element.\n for (var i = 0, len = collisions.length; i < len; i++) {\n var 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 = utils.moveElementAwayFromCollision(layout, collision, l, isUserAction);\n } else {\n layout = utils.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 */\n moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction) {\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 var fakeItem = {\n x: itemToMove.x,\n y: itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n };\n fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n if (!utils.getFirstCollision(layout, fakeItem)) {\n return utils.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 utils.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 */\n perc(num) {\n return num * 100 + '%';\n },\n\n setTransform(style, coords) {\n // Replace unitless items with px\n var x = ('' + coords[0]).replace(/(\\d)$/, '$1px');\n var y = ('' + coords[1]).replace(/(\\d)$/, '$1px');\n style.transform = \"translate(\" + x + \",\" + y + \")\";\n style.WebkitTransform = \"translate(\" + x + \",\" + y + \")\";\n style.MozTransform = \"translate(\" + x + \",\" + y + \")\";\n style.msTransform = \"translate(\" + x + \",\" + y + \")\";\n style.OTransform = \"translate(\" + x + \",\" + y + \")\";\n return style;\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 */\n sortLayoutItemsByRowCol(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 an 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 * @return {Array} Working layout.\n */\n synchronizeLayoutWithChildren(initialLayout, children, cols) {\n children = [].concat(children); // ensure 'children' is always an array\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n var layout = [];\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n // Don't overwrite if it already exists.\n var exists = utils.getLayoutItem(initialLayout, child.key);\n if (exists) {\n // Ensure 'i' is always a string\n exists.i = '' + exists.i;\n layout.push(exists);\n continue;\n }\n // New item: attempt to use a layout item from the child, if it exists.\n var g = child.props._grid;\n if (g) {\n utils.validateLayout([g], 'ReactGridLayout.child');\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 layout.push(assign({}, g, {y: Math.min(utils.bottom(layout), g.y), i: child.key}));\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout.push({w: 1, h: 1, x: 0, y: utils.bottom(layout), i: child.key});\n }\n }\n\n // Correct the layout.\n layout = utils.correctBounds(layout, {cols: cols});\n layout = utils.compact(layout);\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 */\n validateLayout(layout, contextName) {\n contextName = contextName || \"Layout\";\n var subProps = ['x', 'y', 'w', 'h'];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n for (var i = 0, len = layout.length; i < len; i++) {\n for (var j = 0; j < subProps.length; j++) {\n if (typeof layout[i][subProps[j]] !== 'number') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a Number!');\n }\n }\n if (layout[i].static !== undefined && typeof layout[i].static !== 'boolean') {\n throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].static must be a Boolean!');\n }\n }\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/utils.js\n **/","'use strict';\nvar deepEqual = require('deep-equal');\n\n// Like PureRenderMixin, but with deep comparisons.\nvar PureDeepRenderMixin = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return !deepEqual(this.props, nextProps) ||\n !deepEqual(this.state, nextState);\n }\n};\n\nmodule.exports = PureDeepRenderMixin;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/mixins/PureDeepRenderMixin.js\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n'use strict';\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/Object.assign.js\n ** module id = 4\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactComponentWithPureRenderMixin\n*/\n\n'use strict';\n\nvar shallowEqual = require(\"./shallowEqual\");\n\n/**\n * If your React component's render function is \"pure\", e.g. it will render the\n * same result given the same props and state, provide this Mixin for a\n * considerable performance boost.\n *\n * Most React components have pure render functions.\n *\n * Example:\n *\n * var ReactComponentWithPureRenderMixin =\n * require('ReactComponentWithPureRenderMixin');\n * React.createClass({\n * mixins: [ReactComponentWithPureRenderMixin],\n *\n * render: function() {\n * return
foo
;\n * }\n * });\n *\n * Note: This only checks shallow equality for props and state. If these contain\n * complex data structures this mixin may have false-negatives for deeper\n * differences. Only mixin to components which have simple props and state, or\n * use `forceUpdate()` when you know deep data structures have changed.\n */\nvar ReactComponentWithPureRenderMixin = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState);\n }\n};\n\nmodule.exports = ReactComponentWithPureRenderMixin;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactComponentWithPureRenderMixin.js\n ** module id = 5\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n * @providesModule cloneWithProps\n */\n\n'use strict';\n\nvar ReactElement = require(\"./ReactElement\");\nvar ReactPropTransferer = require(\"./ReactPropTransferer\");\n\nvar keyOf = require(\"./keyOf\");\nvar warning = require(\"./warning\");\n\nvar CHILDREN_PROP = keyOf({children: null});\n\n/**\n * Sometimes you want to change the props of a child passed to you. Usually\n * this is to add a CSS class.\n *\n * @param {ReactElement} child child element you'd like to clone\n * @param {object} props props you'd like to modify. className and style will be\n * merged automatically.\n * @return {ReactElement} a clone of child with props merged in.\n */\nfunction cloneWithProps(child, props) {\n if (\"production\" !== process.env.NODE_ENV) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n !child.ref,\n 'You are calling cloneWithProps() on a child with a ref. This is ' +\n 'dangerous because you\\'re creating a new child which will not be ' +\n 'added as a ref to its parent.'\n ) : null);\n }\n\n var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n // Use `child.props.children` if it is provided.\n if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n child.props.hasOwnProperty(CHILDREN_PROP)) {\n newProps.children = child.props.children;\n }\n\n // The current API doesn't retain _owner and _context, which is why this\n // doesn't use ReactElement.cloneAndReplaceProps.\n return ReactElement.createElement(child.type, newProps);\n}\n\nmodule.exports = cloneWithProps;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/cloneWithProps.js\n ** module id = 6\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyFunction\n */\n\nfunction makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function() { return this; };\nemptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\nmodule.exports = emptyFunction;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/emptyFunction.js\n ** module id = 7\n ** module chunks = 0\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\"use strict\";\n\nvar emptyFunction = require(\"./emptyFunction\");\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (\"production\" !== process.env.NODE_ENV) {\n warning = function(condition, format ) {for (var args=[],$__0=2,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function() {return args[argIndex++];});\n console.warn(message);\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/warning.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\nvar React = require('react');\nvar GridItem = require('./GridItem');\nvar utils = require('./utils');\nvar PureDeepRenderMixin = require('./mixins/PureDeepRenderMixin');\nvar WidthListeningMixin = require('./mixins/WidthListeningMixin');\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\nvar ReactGridLayout = React.createClass({\n mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n propTypes: {\n //\n // Basic props\n //\n\n // If true, the container height swells and contracts to fit contents\n autoSize: React.PropTypes.bool,\n // # of cols.\n cols: React.PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: React.PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: React.PropTypes.string,\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number}\n layout: function(props, propName, componentName) {\n var layout = props.layout;\n // I hope you're setting the _grid property on the grid items\n if (layout === undefined) return;\n utils.validateLayout(layout, 'layout');\n },\n\n layouts: function(props, propName, componentName) {\n if (props.layouts) {\n throw new Error(\"ReactGridLayout does not use `layouts`: Use ReactGridLayout.Responsive.\");\n }\n },\n\n // margin between items [x, y] in px\n margin: React.PropTypes.array,\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: React.PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: React.PropTypes.bool,\n isResizable: React.PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: React.PropTypes.bool,\n\n //\n // Callbacks\n //\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 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: React.PropTypes.func,\n // Calls on each drag movement.\n onDrag: React.PropTypes.func,\n // Calls when drag is complete.\n onDragStop: React.PropTypes.func,\n //Calls when resize starts.\n onResizeStart: React.PropTypes.func,\n // Calls when resize movement happens.\n onResize: React.PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: React.PropTypes.func,\n\n //\n // Other validations\n //\n\n // Children must not have duplicate keys.\n children: function(props, propName, componentName) {\n React.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, i, list) {\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 getDefaultProps() {\n return {\n autoSize: true,\n cols: 12,\n rowHeight: 150,\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n onLayoutChange: function(){},\n onDragStart: function() {},\n onDrag: function() {},\n onDragStop: function() {},\n onResizeStart: function() {},\n onResize: function() {},\n onResizeStop: function() {}\n };\n },\n\n getInitialState() {\n return {\n activeDrag: null,\n isMounted: false,\n layout: utils.synchronizeLayoutWithChildren(this.props.layout, this.props.children, this.props.cols),\n width: this.props.initialWidth\n };\n },\n\n componentDidMount() {\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 this.setState({isMounted: true});\n },\n\n componentWillReceiveProps(nextProps) {\n // This allows you to set the width manually if you like.\n // Use manual width changes in combination with `listenToWindowResize: false`\n if (nextProps.width !== this.props.width) this.onWidthChange(nextProps.width);\n\n // If children change, regenerate the layout.\n if (nextProps.children.length !== this.props.children.length) {\n this.setState({\n layout: utils.synchronizeLayoutWithChildren(this.state.layout, nextProps.children, nextProps.cols)\n });\n }\n\n // Allow parent to set layout directly.\n if (nextProps.layout && JSON.stringify(nextProps.layout) !== JSON.stringify(this.state.layout)) {\n this.setState({\n layout: utils.synchronizeLayoutWithChildren(nextProps.layout, nextProps.children, nextProps.cols)\n });\n }\n },\n\n componentDidUpdate(prevProps, prevState) {\n // Call back so we can store the layout\n // Do it only when a resize/drag is not active, otherwise there are way too many callbacks\n if (this.state.layout !== prevState.layout && !this.state.activeDrag) {\n this.props.onLayoutChange(this.state.layout, this.state.layouts);\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 utils.bottom(this.state.layout) * this.props.rowHeight + this.props.margin[1] + 'px';\n },\n\n /**\n * When the width changes, save it to state. This helps with left/width calculations.\n */\n onWidthChange(width) {\n this.setState({width: width});\n },\n\n /**\n * When dragging starts\n * @param {Number} 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} element The current dragging DOM element\n * @param {Object} position Drag information\n */\n onDragStart(i, x, y, {e, element, position}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n\n // No need to clone, `l` hasn't changed.\n this.props.onDragStart(layout, l, l, null, e);\n },\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {Number} 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} element The current dragging DOM element\n * @param {Object} position Drag information\n */\n onDrag(i, x, y, {e, element, position}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n // Clone layout item so we can pass it to the callback.\n var oldL = utils.clone(l);\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 = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n this.props.onDrag(layout, oldL, l, placeholder, e);\n\n\n this.setState({\n layout: utils.compact(layout),\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 {Number} i Index of the child.\n * @param {Number} 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} element The current dragging DOM element\n * @param {Object} position Drag information\n */\n onDragStop(i, x, y, {e, element, position}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n var oldL = utils.clone(l);\n\n // Move the element here\n layout = utils.moveElement(layout, l, x, y, true /* isUserAction */);\n\n this.props.onDragStop(layout, oldL, l, null, e);\n\n // Set state\n this.setState({layout: utils.compact(layout), activeDrag: null});\n },\n\n onResizeStart(i, w, h, {e, element, size}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n\n // No need to clone, item hasn't changed\n this.props.onResizeStart(layout, l, l, null, e);\n },\n\n onResize(i, w, h, {e, element, size}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n var oldL = utils.clone(l);\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, placeholder: true, i: i\n };\n\n this.props.onResize(layout, oldL, l, placeholder, e);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({layout: utils.compact(layout), activeDrag: placeholder});\n },\n\n onResizeStop(i, x, y, {e, element, size}) {\n var layout = this.state.layout;\n var l = utils.getLayoutItem(layout, i);\n var oldL = utils.clone(l);\n\n this.props.onResizeStop(layout, oldL, l, null, e);\n\n this.setState({activeDrag: null, layout: utils.compact(layout)});\n },\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder() {\n if (!this.state.activeDrag) return '';\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 * @param {Number} i Index of element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(child) {\n var i = child.key;\n var l = utils.getLayoutItem(this.state.layout, i);\n\n // watchStart property tells Draggable to react to changes in the start param\n // Must be turned off on the item we're dragging as the changes in `activeDrag` cause rerenders\n var drag = this.state.activeDrag;\n var moveOnStartChange = drag && drag.i === i ? false : true;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n var draggable, resizable;\n if (l.static || this.props.isDraggable === false) draggable = false;\n if (l.static || this.props.isResizable === false) resizable = false;\n\n return (\n \n {child}\n \n );\n },\n\n render() {\n // Calculate classname\n var {className, ...props} = this.props;\n className = 'react-grid-layout ' + (className || '');\n\n return (\n
\n {React.Children.map(this.props.children, this.processGridItem)}\n {this.placeholder()}\n
\n );\n }\n});\n\nmodule.exports = ReactGridLayout;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/ReactGridLayout.jsx\n **/","'use strict';\nvar React = require('react');\n\n/**\n * A simple mixin that provides facility for listening to container resizes.\n */\nvar WidthListeningMixin = {\n\n propTypes: {\n // This allows setting this on the server side\n initialWidth: React.PropTypes.number,\n\n // If false, you should supply width yourself. Good if you want to debounce resize events\n // or reuse a handler from somewhere else.\n listenToWindowResize: React.PropTypes.bool\n },\n\n getDefaultProps: function() {\n return {\n initialWidth: 1280,\n listenToWindowResize: true\n };\n },\n\n componentDidMount: function() {\n if (this.props.listenToWindowResize) {\n window.addEventListener('resize', this.onWindowResize);\n // This is intentional. Once to properly set the breakpoint and resize the elements,\n // and again to compensate for any scrollbar that appeared because of the first step.\n this.onWindowResize();\n this.onWindowResize();\n }\n },\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.onWindowResize);\n },\n\n /**\n * On window resize, update width.\n */\n onWindowResize: function() {\n this.onWidthChange(this.getDOMNode().offsetWidth);\n }\n\n};\n\nmodule.exports = WidthListeningMixin;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/mixins/WidthListeningMixin.js\n **/","'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/object-assign/index.js\n ** module id = 11\n ** module chunks = 0\n **/","module.exports = require('./lib/draggable');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-draggable/index.js\n ** module id = 12\n ** module chunks = 0\n **/","\"use strict\";\nvar React = require(\"react\");\nvar Draggable = require(\"react-draggable\");\nvar assign = require(\"object-assign\");\nvar PureRenderMixin = require(\"react/lib/ReactComponentWithPureRenderMixin\");\nvar cloneWithProps = require(\"react/lib/cloneWithProps\");\n\nvar Resizable = module.exports = React.createClass({\n displayName: \"Resizable\",\n mixins: [PureRenderMixin],\n\n propTypes: {\n children: React.PropTypes.element,\n // Functions\n onResizeStop: React.PropTypes.func,\n onResizeStart: React.PropTypes.func,\n onResize: React.PropTypes.func,\n\n width: React.PropTypes.number.isRequired,\n height: React.PropTypes.number.isRequired,\n // If you change this, be sure to update your css\n handleSize: React.PropTypes.array,\n // These will be passed wholesale to react-draggable\n draggableOpts: React.PropTypes.object\n },\n\n getDefaultProps: function () {\n return {\n handleSize: [20, 20]\n };\n },\n\n minConstraints: function () {\n return parseConstraints(this.props.minConstraints, this.props.handleSize[0]) || this.props.handleSize;\n },\n\n maxConstraints: function () {\n return parseConstraints(this.props.maxConstraints, this.props.handleSize[1]);\n },\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 resizeHandler: function (handlerName) {\n var me = this;\n return function (e, _ref) {\n var element = _ref.element;\n var position = _ref.position;\n me.props[handlerName] && me.props[handlerName](e, { element: element, size: calcWH(position, me.props.handleSize) });\n };\n },\n\n render: function () {\n var p = this.props;\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\n return cloneWithProps(p.children, assign({}, p, {\n children: [p.children.props.children, React.createElement(Draggable, React.__spread({}, p.draggableOpts, {\n start: { x: p.width - 20, y: p.height - 20 },\n moveOnStartChange: true,\n onStop: this.resizeHandler(\"onResizeStop\"),\n onStart: this.resizeHandler(\"onResizeStart\"),\n onDrag: this.resizeHandler(\"onResize\"),\n minConstraints: this.minConstraints(),\n maxConstraints: this.maxConstraints()\n }), React.createElement(\"span\", {\n className: \"react-resizable-handle\"\n }))]\n }));\n }\n});\n\n/**\n * Parse left and top coordinates; we have to add the handle size to get the full picture.\n * @param {Number} options.left Left coordinate.\n * @param {Number} options.top Top coordinate.\n * @param {Array} handleSize Handle data.\n * @return {Object} Coordinates\n */\nfunction calcWH(_ref2, handleSize) {\n var left = _ref2.left;\n var top = _ref2.top;\n return { width: left + handleSize[0], height: top + handleSize[1] };\n}\n\n/**\n * Constraints must be subtracted by the size of the handle to work properly.\n * This has a side-effect of effectively limiting the minimum size to the handleSize,\n * which IMO is fine.\n * @param {Array} constraints Constraints array.\n * @param {Array} handleSize Handle size array.\n * @return {Array} Transformed constraints.\n */\nfunction parseConstraints(constraints, handleSize) {\n if (!constraints) return;\n return constraints.map(function (c) {\n return c - handleSize;\n });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/Resizable.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\nvar React = require('react');\nvar cloneWithProps = require('react/lib/cloneWithProps');\nvar utils = require('./utils');\nvar Draggable = require('react-draggable');\nvar Resizable = require('react-resizable').Resizable;\nvar PureDeepRenderMixin = require('./mixins/PureDeepRenderMixin');\n\n/**\n * An individual item within a ReactGridLayout.\n */\nvar GridItem = React.createClass({\n mixins: [PureDeepRenderMixin],\n\n propTypes: {\n // General grid attributes\n cols: React.PropTypes.number.isRequired,\n containerWidth: React.PropTypes.number.isRequired,\n rowHeight: React.PropTypes.number.isRequired,\n margin: React.PropTypes.array.isRequired,\n\n // These are all in grid units\n x: React.PropTypes.number.isRequired,\n y: React.PropTypes.number.isRequired,\n w: React.PropTypes.number.isRequired,\n h: React.PropTypes.number.isRequired,\n\n // All optional\n minW: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.minW > props.w || props.minW > props.maxW) constraintError('minW', props);\n },\n maxW: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.maxW < props.w || props.maxW < props.minW) constraintError('maxW', props);\n },\n minH: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.minH > props.h || props.minH > props.maxH) constraintError('minH', props);\n },\n maxH: function(props, propName, componentName) {\n React.PropTypes.number.apply(this, arguments);\n if (props.maxH < props.h || props.maxH < props.minH) constraintError('maxH', props);\n },\n\n // ID is nice to have for callbacks\n i: React.PropTypes.string.isRequired,\n\n // If true, item will be repositioned when x/y/w/h change\n moveOnStartChange: React.PropTypes.bool,\n\n // Functions\n onDragStop: React.PropTypes.func,\n onDragStart: React.PropTypes.func,\n onDrag: React.PropTypes.func,\n onResizeStop: React.PropTypes.func,\n onResizeStart: React.PropTypes.func,\n onResize: React.PropTypes.func,\n\n // Flags\n isDraggable: React.PropTypes.bool,\n isResizable: React.PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: React.PropTypes.bool,\n isPlaceholder: React.PropTypes.bool,\n\n // Others\n className: React.PropTypes.string,\n // Selector for draggable handle\n handle: React.PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: React.PropTypes.string\n },\n\n getDefaultProps() {\n return {\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n className: '',\n cancel: '',\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity\n };\n },\n\n getInitialState() {\n return {\n resizing: false,\n className: ''\n };\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, y, w, h) {\n var p = this.props;\n var width = p.containerWidth - p.margin[0];\n var out = {\n left: width * (x / p.cols) + p.margin[0],\n top: p.rowHeight * y + p.margin[1],\n width: width * (w / p.cols) - p.margin[0],\n height: h * p.rowHeight - p.margin[1]\n };\n return out;\n },\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} options.left Left offset in pixels.\n * @param {Number} options.top Top offset in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY({left, top}) {\n left = left - this.props.margin[0];\n top = top - this.props.margin[1];\n // This is intentional; because so much of the logic on moving boxes up/down relies\n // on an exact y position, we only round the x, not the y.\n var x = Math.round((left / this.props.containerWidth) * this.props.cols);\n var y = Math.floor(top / this.props.rowHeight);\n x = Math.max(Math.min(x, this.props.cols), 0);\n y = Math.max(y, 0);\n return {x, y};\n },\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} options.height Height in pixels.\n * @param {Number} options.width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({height, width}) {\n width = width + this.props.margin[0];\n height = height + this.props.margin[1];\n var w = Math.round((width / this.props.containerWidth) * this.props.cols);\n var h = Math.round(height / this.props.rowHeight);\n w = Math.max(Math.min(w, this.props.cols - this.props.x), 0);\n h = Math.max(h, 0);\n return {w, h};\n },\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @param {Object} position Position object (pixel values)\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child, position) {\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, position) {\n var p = this.props;\n // This is the max possible width - doesn't go to infinity because of the width of the window\n var maxWidth = this.calcPosition(0, 0, p.cols - p.x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n var mins = this.calcPosition(0, 0, p.minW, p.minH);\n var maxes = this.calcPosition(0, 0, p.maxW, p.maxH);\n var minConstraints = [mins.width, mins.height];\n var 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) {\n var me = this;\n return function(e, {element, position}) {\n if (!me.props[handlerName]) return;\n // Get new XY\n var {x, y} = me.calcXY(position);\n\n // Cap x at numCols\n x = Math.min(x, me.props.cols - me.props.w);\n\n me.props[handlerName](me.props.i, x, y, {e, element, position});\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) {\n var me = this;\n return function(e, {element, size}) {\n if (!me.props[handlerName]) return;\n\n // Get new XY\n var {w, h} = me.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, me.props.cols - me.props.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, me.props.maxW), me.props.minW);\n h = Math.max(Math.min(h, me.props.maxH), me.props.minH);\n\n me.setState({resizing: handlerName === 'onResizeStop' ? null : size});\n\n me.props[handlerName](me.props.i, w, h, {e, element, size});\n };\n },\n\n render() {\n var p = this.props, pos = this.calcPosition(p.x, p.y, p.w, p.h);\n if (this.state.resizing) {\n pos.width = this.state.resizing.width;\n pos.height = this.state.resizing.height;\n }\n\n var child = cloneWithProps(React.Children.only(this.props.children), {\n // Munge a classname. Use passed in classnames and resizing.\n // React with merge the classNames.\n className: ['react-grid-item', this.props.className, this.state.resizing ? 'resizing' : '',\n this.props.useCSSTransforms ? 'cssTransforms' : ''].join(' '),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n width: pos.width + 'px',\n height: pos.height + 'px',\n left: pos.left + 'px',\n top: pos.top + 'px',\n position: 'absolute'\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 //\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 // This is used for server rendering.\n if (this.props.usePercentages) {\n pos.left = utils.perc(pos.left / p.containerWidth);\n child.props.style.left = pos.left;\n child.props.style.width = utils.perc(pos.width / p.containerWidth);\n }\n\n // CSS Transforms support\n if (this.props.useCSSTransforms) {\n utils.setTransform(child.props.style, [pos.left, pos.top]);\n delete child.props.style.left;\n delete child.props.style.top;\n }\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (this.props.isResizable) {\n child = this.mixinResizable(child, pos);\n }\n\n // Draggable support. This is always on, except for with placeholders.\n if (this.props.isDraggable) {\n child = this.mixinDraggable(child, pos);\n }\n\n return child;\n }\n});\n\nfunction constraintError(name, props) {\n delete props.children;\n throw new Error(name + ' overrides contraints on gridItem ' + props.i + '. Full props: ' + JSON.stringify(props));\n}\n\nmodule.exports = GridItem;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/GridItem.jsx\n **/","'use strict';\nvar React = require('react');\nvar utils = require('./utils');\nvar responsiveUtils = require('./responsiveUtils');\nvar PureDeepRenderMixin = require('./mixins/PureDeepRenderMixin');\nvar WidthListeningMixin = require('./mixins/WidthListeningMixin');\nvar ReactGridLayout = require('./ReactGridLayout');\n\n/**\n * A wrapper around ReactGridLayout to support responsive breakpoints.\n */\nvar ResponsiveReactGridLayout = React.createClass({\n mixins: [PureDeepRenderMixin, WidthListeningMixin],\n\n propTypes: {\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, propName, componentName) {\n React.PropTypes.object.isRequired.apply(this, arguments);\n\n var layouts = props.layouts;\n Object.keys(layouts).map(function(k) {\n utils.validateLayout(layouts[k], 'layouts.' + k);\n });\n },\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\n getDefaultProps() {\n return {\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: function(){},\n onLayoutChange: function(){}\n };\n },\n\n getInitialState() {\n var breakpoint = this.props.breakpoint ||\n responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, this.props.initialWidth);\n var cols = responsiveUtils.getColsFromBreakpoint(breakpoint, this.props.cols);\n\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 var initialLayout = responsiveUtils.findOrGenerateResponsiveLayout(\n this.props.layouts, this.props.breakpoints, breakpoint, breakpoint, cols);\n\n return {\n layout: initialLayout,\n // storage for layouts obsoleted by breakpoints\n layouts: this.props.layouts || {},\n breakpoint: breakpoint,\n cols: cols,\n width: this.props.initialWidth\n };\n },\n\n componentWillReceiveProps(nextProps) {\n // This allows you to set the width manually if you like.\n // Use manual width changes in combination with `listenToWindowResize: false`\n if (nextProps.width) this.onWidthChange(nextProps.width);\n\n // Allow parent to set breakpoint directly.\n if (nextProps.breakpoint !== this.props.breakpoint) {\n this.onWidthChange(this.state.width);\n }\n\n // Allow parent to set layouts directly.\n if (nextProps.layouts && nextProps.layouts !== this.state.layouts) {\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n var newLayout = responsiveUtils.findOrGenerateResponsiveLayout(\n nextProps.layouts, nextProps.breakpoints, this.state.breakpoint, this.state.breakpoint, this.state.cols);\n\n this.setState({\n layouts: nextProps.layouts,\n layout: newLayout\n });\n }\n },\n\n /**\n * Bubble this up, add `layouts` object.\n * @param {Array} layout Layout from inner Grid.\n */\n onLayoutChange(layout) {\n this.state.layouts[this.state.breakpoint] = layout;\n this.setState({layout: layout, layouts: this.state.layouts});\n this.props.onLayoutChange(layout, this.state.layouts);\n },\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(width) {\n // Set new breakpoint\n var newState = {width: width};\n newState.breakpoint = this.props.breakpoint ||\n responsiveUtils.getBreakpointFromWidth(this.props.breakpoints, newState.width);\n newState.cols = responsiveUtils.getColsFromBreakpoint(newState.breakpoint, this.props.cols);\n\n // Breakpoint change\n if (newState.cols !== this.state.cols) {\n\n // Store the current layout\n newState.layouts = this.state.layouts;\n newState.layouts[this.state.breakpoint] = JSON.parse(JSON.stringify(this.state.layout));\n\n // Find or generate a new one.\n newState.layout = responsiveUtils.findOrGenerateResponsiveLayout(\n newState.layouts, this.props.breakpoints, newState.breakpoint, this.state.breakpoint, newState.cols);\n\n // This adds missing items.\n newState.layout = utils.synchronizeLayoutWithChildren(newState.layout, this.props.children, newState.cols);\n\n // Store this new layout as well.\n newState.layouts[newState.breakpoint] = newState.layout;\n\n this.props.onBreakpointChange(newState.breakpoint, newState.cols);\n }\n\n this.setState(newState);\n },\n\n\n render() {\n // Don't pass responsive props to RGL.\n /*jshint unused:false*/\n var {layouts, onBreakpointChange, breakpoints, ...props} = this.props;\n return (\n \n {this.props.children}\n \n );\n }\n});\n\nmodule.exports = ResponsiveReactGridLayout;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/ResponsiveReactGridLayout.jsx\n **/","'use strict';\n\nvar utils = require('./utils');\n\nvar responsiveUtils = module.exports = {\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 */\n getBreakpointFromWidth(breakpoints, width) {\n var sorted = responsiveUtils.sortBreakpoints(breakpoints);\n var matching = sorted[0];\n for (var i = 1, len = sorted.length; i < len; i++) {\n var 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 */\n getColsFromBreakpoint(breakpoint, cols) {\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 {Array} 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 * @return {Array} New layout.\n */\n findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols) {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return layouts[breakpoint];\n // Find or generate the next layout\n var layout = layouts[lastBreakpoint];\n var breakpointsSorted = responsiveUtils.sortBreakpoints(breakpoints);\n var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n for (var i = 0, len = breakpointsAbove.length; i < len; i++) {\n var b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = JSON.parse(JSON.stringify(layout || [])); // clone layout so we don't modify existing items\n return utils.compact(utils.correctBounds(layout, {cols: cols}));\n },\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 */\n sortBreakpoints(breakpoints) {\n var keys = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/responsiveUtils.js\n **/","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/deep-equal/index.js\n ** module id = 17\n ** module chunks = 0\n **/","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/deep-equal/lib/is_arguments.js\n ** module id = 18\n ** module chunks = 0\n **/","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/deep-equal/lib/keys.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\n\nvar React = require('react');\nvar PureRenderMixin = require('react/lib/ReactComponentWithPureRenderMixin');\nvar emptyFunction = require('react/lib/emptyFunction');\nvar cloneWithProps = require('react/lib/cloneWithProps');\n\nfunction createUIEvent(draggable) {\n\treturn {\n\t\telement: draggable.getDOMNode(),\n\t\tposition: {\n\t\t\ttop: (draggable._pendingState || draggable.state).clientY,\n\t\t\tleft: (draggable._pendingState || draggable.state).clientX\n\t\t}\n\t};\n}\n\nfunction canDragY(draggable) {\n\treturn draggable.props.axis === 'both' ||\n\t\t\tdraggable.props.axis === 'y';\n}\n\nfunction canDragX(draggable) {\n\treturn draggable.props.axis === 'both' ||\n\t\t\tdraggable.props.axis === 'x';\n}\n\nfunction isFunction(func) {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array, callback) {\n for (var i = 0, length = array.length, element = null; i < length, element = array[i]; i++) {\n if (callback.apply(callback, [element, i, array])) return element;\n }\n}\n\nfunction matchesSelector(el, selector) {\n var method = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n return isFunction(el[method]);\n });\n\n return el[method].call(el, selector);\n}\n\nfunction positionToCSSTransform(style) {\n\t// Replace unitless items with px\n\tvar x = ('' + style.left).replace(/(\\d)$/, '$1px');\n\tvar y = ('' + style.top).replace(/(\\d)$/, '$1px');\n\tstyle.transform = 'translate(' + x + ',' + y + ')';\n\tstyle.WebkitTransform = 'translate(' + x + ',' + y + ')';\n\tstyle.OTransform = 'translate(' + x + ',' + y + ')';\n\tstyle.msTransform = 'translate(' + x + ',' + y + ')';\n\tstyle.MozTransform = 'translate(' + x + ',' + y + ')';\n\tdelete style.left;\n\tdelete style.top;\n\treturn style;\n}\n\n// @credits: http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript/4819886#4819886\n/* Conditional to fix node server side rendering of component */\nif (typeof window === 'undefined') {\n // Do Node Stuff\n var isTouchDevice = false;\n} else {\n // Do Browser Stuff\n var isTouchDevice = 'ontouchstart' in window || // works on most browsers\n 'onmsgesturechange' in window; // works on ie10 on ms surface\n}\n\n// look ::handleDragStart\n//function isMultiTouch(e) {\n// return e.touches && Array.isArray(e.touches) && e.touches.length > 1\n//}\n\n/**\n * simple abstraction for dragging events names\n * */\nvar dragEventFor = (function () {\n var eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup'\n }\n };\n return eventsFor[isTouchDevice ? 'touch' : 'mouse'];\n})();\n\n/**\n * get {clientX, clientY} positions of control\n * */\nfunction getControlPosition(e) {\n var position = (e.touches && e.touches[0]) || e;\n return {\n clientX: position.clientX,\n clientY: position.clientY\n };\n}\n\nfunction addEvent(el, event, handler) {\n\tif (!el) { return; }\n\tif (el.attachEvent) {\n\t\tel.attachEvent('on' + event, handler);\n\t} else if (el.addEventListener) {\n\t\tel.addEventListener(event, handler, true);\n\t} else {\n\t\tel['on' + event] = handler;\n\t}\n}\n\nfunction removeEvent(el, event, handler) {\n\tif (!el) { return; }\n\tif (el.detachEvent) {\n\t\tel.detachEvent('on' + event, handler);\n\t} else if (el.removeEventListener) {\n\t\tel.removeEventListener(event, handler, true);\n\t} else {\n\t\tel['on' + event] = null;\n\t}\n}\n\nmodule.exports = React.createClass({\n\tdisplayName: 'Draggable',\n\tmixins: [PureRenderMixin],\n\n\tpropTypes: {\n\t\t/**\n\t\t * `axis` determines which axis the draggable can move.\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 *\n\t\t * Defaults to 'both'.\n\t\t */\n\t\taxis: React.PropTypes.oneOf(['both', 'x', 'y']),\n\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 * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t \treturn (\n\t\t * \t \t \t\n\t\t * \t \t \t
\n\t\t * \t \t \t
Click me to drag
\n\t\t * \t \t \t
This is some other content
\n\t\t * \t \t \t
\n\t\t * \t \t\t
\n\t\t * \t \t);\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\thandle: React.PropTypes.string,\n\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 * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return(\n\t\t * \t \n\t\t * \t
\n\t\t * \t \t
You can't drag from here
\n\t\t *\t\t\t\t\t\t
Dragging here works fine
\n\t\t * \t
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tcancel: React.PropTypes.string,\n\n\t\t/**\n\t\t * `grid` specifies the x and y that dragging should snap to.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I snap to a 25 x 25 grid
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tgrid: React.PropTypes.arrayOf(React.PropTypes.number),\n\n\t\t/**\n\t\t * `start` 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 * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I start with left: 25px; top: 25px;
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tstart: React.PropTypes.object,\n\n\t\t/**\n\t\t * `moveOnStartChange` tells the Draggable element to reset its position\n\t\t * if the `start` parameters are changed. By default, if the `start` \n\t\t * parameters change, the Draggable element still remains where it started\n\t\t * or was dragged to.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * \tvar App = React.createClass({\n\t\t * \t\t\tonButtonClick: function () {\n\t\t * \t\t\t\tthis.setState({clicked: true});\n\t\t * \t\t\t},\n\t\t * \t render: function () {\n\t\t * \t \t\tvar start = this.state.clicked ?\n\t\t * \t \t\t {x: 25, y: 25} :\n\t\t * \t \t\t {x: 125, y: 125};\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I start with left: 25px; top: 25px;,\n\t\t * \t but move to left: 125px; top: 125px; when the button\n\t\t * \t is clicked.
\n\t\t * \t
Button
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tmoveOnStartChange: React.PropTypes.bool,\n\n\t\t/**\n\t\t * `useCSSTransforms` if true will place the element using translate(x, y)\n\t\t * rather than CSS top/left.\n\t\t *\n\t\t * This generally gives better performance, and is useful in combination with\n\t\t * other layout systems that use translate(), such as react-grid-layout.\n\t\t */\n\t\tuseCSSTransforms: React.PropTypes.bool,\n\n\t\t/**\n\t\t * `zIndex` specifies the zIndex to use while dragging.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```jsx\n\t\t * \tvar App = React.createClass({\n\t\t * \t render: function () {\n\t\t * \t return (\n\t\t * \t \n\t\t * \t
I have a zIndex
\n\t\t * \t
\n\t\t * \t );\n\t\t * \t }\n\t\t * \t});\n\t\t * ```\n\t\t */\n\t\tzIndex: React.PropTypes.number,\n\n\t\t/**\n\t\t * Called when dragging starts.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```js\n\t\t *\tfunction (event, ui) {}\n\t\t * ```\n\t\t *\n\t\t * `event` is the Event that was triggered.\n\t\t * `ui` is an object:\n\t\t *\n\t\t * ```js\n\t\t *\t{\n\t\t *\t\tposition: {top: 0, left: 0}\n\t\t *\t}\n\t\t * ```\n\t\t */\n\t\tonStart: React.PropTypes.func,\n\n\t\t/**\n\t\t * Called while dragging.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```js\n\t\t *\tfunction (event, ui) {}\n\t\t * ```\n\t\t *\n\t\t * `event` is the Event that was triggered.\n\t\t * `ui` is an object:\n\t\t *\n\t\t * ```js\n\t\t *\t{\n\t\t *\t\tposition: {top: 0, left: 0}\n\t\t *\t}\n\t\t * ```\n\t\t */\n\t\tonDrag: React.PropTypes.func,\n\n\t\t/**\n\t\t * Called when dragging stops.\n\t\t *\n\t\t * Example:\n\t\t *\n\t\t * ```js\n\t\t *\tfunction (event, ui) {}\n\t\t * ```\n\t\t *\n\t\t * `event` is the Event that was triggered.\n\t\t * `ui` is an object:\n\t\t *\n\t\t * ```js\n\t\t *\t{\n\t\t *\t\tposition: {top: 0, left: 0}\n\t\t *\t}\n\t\t * ```\n\t\t */\n\t\tonStop: React.PropTypes.func,\n\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 (due to that there's internal use of onMouseDown)\n\t\t *\n\t\t */\n\t\tonMouseDown: React.PropTypes.func\n\t},\n\n\tcomponentWillUnmount: function() {\n\t\t// Remove any leftover event handlers\n\t\tremoveEvent(window, dragEventFor['move'], this.handleDrag);\n\t\tremoveEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t},\n\n\tcomponentWillReceiveProps: function(nextProps) {\n\t\t// If this is set to watch a changing start position, \n\t\t// set x and y to the new position.\n\t\tif (nextProps.moveOnStartChange) {\n\t\t\tthis.setState({\n\t\t\t\tclientX: nextProps.start.x,\n\t\t\t\tclientY: nextProps.start.y\n\t\t\t});\n\t\t}\n\t},\n\n\tgetDefaultProps: function () {\n\t\treturn {\n\t\t\taxis: 'both',\n\t\t\thandle: null,\n\t\t\tcancel: null,\n\t\t\tgrid: null,\n\t\t\tstart: {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t},\n\t\t\tmoveOnStartChange: false,\n\t\t\tuseCSSTransforms: false,\n\t\t\tzIndex: NaN,\n\t\t\tonStart: emptyFunction,\n\t\t\tonDrag: emptyFunction,\n\t\t\tonStop: emptyFunction,\n\t\t\tonMouseDown: emptyFunction\n\t\t};\n\t},\n\n\tgetInitialState: function () {\n\t\treturn {\n\t\t\t// Whether or not currently dragging\n\t\t\tdragging: false,\n\n\t\t\t// Start top/left of this.getDOMNode()\n\t\t\tstartX: 0, startY: 0,\n\n\t\t\t// Offset between start top/left and mouse top/left\n\t\t\toffsetX: 0, offsetY: 0,\n\n\t\t\t// Current top/left of this.getDOMNode()\n\t\t\tclientX: this.props.start.x, clientY: this.props.start.y\n\t\t};\n\t},\n\n\thandleDragStart: function (e) {\n // todo: write right implementation to prevent multitouch drag\n // prevent multi-touch events\n // if (isMultiTouch(e)) {\n // this.handleDragEnd.apply(e, arguments);\n // return\n // }\n\n\t\t// Make it possible to attach event handlers on top of this one\n\t\tthis.props.onMouseDown(e);\n\n\t\t// Only catch left clicks, if clicking\n\t\tif (typeof e.button === \"number\" && e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar node = this.getDOMNode();\n\n\t\t// Short circuit if handle or cancel prop was provided and selector doesn't match\n\t\tif ((this.props.handle && !matchesSelector(e.target, this.props.handle)) ||\n\t\t\t(this.props.cancel && matchesSelector(e.target, this.props.cancel))) {\n\t\t\treturn;\n\t\t}\n\n var dragPoint = getControlPosition(e);\n\n\t\t// Initiate dragging\n\t\tthis.setState({\n\t\t\tdragging: true,\n\t\t\toffsetX: parseInt(dragPoint.clientX, 10),\n\t\t\toffsetY: parseInt(dragPoint.clientY, 10),\n\t\t\tstartX: parseInt(this.state.clientX, 10) || 0,\n\t\t\tstartY: parseInt(this.state.clientY, 10) || 0\n\t\t});\n\n\t\t// Add a class to the body to disable user-select. This prevents text from \n\t\t// being selected all over the page.\n\t\tdocument.body.className += \" react-draggable-active\";\n\n\t\t// Call event handler\n\t\tthis.props.onStart(e, createUIEvent(this));\n\n\t\t// Add event handlers\n\t\taddEvent(window, dragEventFor['move'], this.handleDrag);\n\t\taddEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t},\n\n\thandleDragEnd: function (e) {\n\t\t// Short circuit if not currently dragging\n\t\tif (!this.state.dragging) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Turn off dragging\n\t\tthis.setState({\n\t\t\tdragging: false\n\t\t});\n\n\t\t// Remove the body class used to disable user-select.\n\t\tdocument.body.className = document.body.className.replace(\" react-draggable-active\", \"\");\n\n\t\t// Call event handler\n\t\tthis.props.onStop(e, createUIEvent(this));\n\n\t\t// Remove event handlers\n removeEvent(window, dragEventFor['move'], this.handleDrag);\n removeEvent(window, dragEventFor['end'], this.handleDragEnd);\n\t},\n\n\thandleDrag: function (e) {\n var dragPoint = getControlPosition(e);\n\n\t\t// Calculate top and left\n var clientX = (this.state.startX + (dragPoint.clientX - this.state.offsetX));\n var clientY = (this.state.startY + (dragPoint.clientY - this.state.offsetY));\n\n\t\t// Snap to grid if prop has been provided\n\t\tif (Array.isArray(this.props.grid)) {\n\t\t\tvar directionX = clientX < parseInt(this.state.clientX, 10) ? -1 : 1;\n\t\t\tvar directionY = clientY < parseInt(this.state.clientY, 10) ? -1 : 1;\n\n\t\t\tclientX = Math.abs(clientX - parseInt(this.state.clientX, 10)) >= this.props.grid[0]\n\t\t\t\t\t? (parseInt(this.state.clientX, 10) + (this.props.grid[0] * directionX))\n\t\t\t\t\t: parseInt(this.state.clientX, 10);\n\n\t\t\tclientY = Math.abs(clientY - parseInt(this.state.clientY, 10)) >= this.props.grid[1]\n\t\t\t\t\t? (parseInt(this.state.clientY, 10) + (this.props.grid[1] * directionY))\n\t\t\t\t\t: parseInt(this.state.clientY, 10);\n\t\t}\n\n\t\t// Min/max constraints\n\t\tif (Array.isArray(this.props.minConstraints)) {\n\t\t\tclientX = Math.max(this.props.minConstraints[0], clientX);\n\t\t\tclientY = Math.max(this.props.minConstraints[1], clientY);\n\t\t}\n\t\tif (Array.isArray(this.props.maxConstraints)) {\n\t\t\tclientX = Math.min(this.props.maxConstraints[0], clientX);\n\t\t\tclientY = Math.min(this.props.maxConstraints[1], clientY);\n\t\t}\n\n\t\t// Update top and left\n\t\tthis.setState({\n\t\t\tclientX: clientX,\n\t\t\tclientY: clientY\n\t\t});\n\n\t\t// Call event handler\n\t\tthis.props.onDrag(e, createUIEvent(this));\n\t},\n\n\trender: function () {\n\t\tvar style = {\n\t\t\t// Set top if vertical drag is enabled\n\t\t\ttop: canDragY(this)\n\t\t\t\t? this.state.clientY\n\t\t\t\t: this.state.startY,\n\n\t\t\t// Set left if horizontal drag is enabled\n\t\t\tleft: canDragX(this)\n\t\t\t\t? this.state.clientX\n\t\t\t\t: this.state.startX\n\t\t};\n\n\t\tif (this.props.useCSSTransforms) {\n\t\t\tstyle = positionToCSSTransform(style);\n\t\t}\n\n\t\t// Set zIndex if currently dragging and prop has been provided\n\t\tif (this.state.dragging && !isNaN(this.props.zIndex)) {\n\t\t\tstyle.zIndex = this.props.zIndex;\n\t\t}\n\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\treturn cloneWithProps(React.Children.only(this.props.children), {\n\t\t\tstyle: style,\n\t\t\tclassName: 'react-draggable' + (this.state.dragging ? ' react-draggable-dragging' : ''),\n\n\t\t\tonMouseDown: this.handleDragStart,\n\t\t\tonTouchStart: function(ev){\n ev.preventDefault(); // prevent for scroll\n return this.handleDragStart.apply(this, arguments);\n }.bind(this),\n\n\t\t\tonMouseUp: this.handleDragEnd,\n\t\t\tonTouchEnd: this.handleDragEnd\n\t\t});\n\t}\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-draggable/lib/draggable.js\n ** module id = 20\n ** module chunks = 0\n **/","\"use strict\";\n\nvar _objectWithoutProperties = function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\n\"use strict\";\nvar React = require(\"react\");\nvar PureRenderMixin = require(\"react/lib/ReactComponentWithPureRenderMixin\");\nvar Resizable = require(\"./Resizable\");\n\n// An example use of Resizable.\nvar ResizableBox = module.exports = React.createClass({\n displayName: \"ResizableBox\",\n mixins: [PureRenderMixin],\n\n propTypes: {},\n\n getInitialState: function () {\n return {\n width: this.props.width,\n height: this.props.height\n };\n },\n\n onResize: function (event, _ref) {\n var element = _ref.element;\n var size = _ref.size;\n if (size.width !== this.state.width || size.height !== this.state.height) {\n this.setState({\n width: size.width,\n height: size.height\n });\n }\n },\n\n render: function () {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the component\n // with a new width and height.\n var handleSize = this.props.handleSize;\n var minConstraints = this.props.minConstraints;\n var maxConstraints = this.props.maxConstraints;\n var props = _objectWithoutProperties(this.props, [\"handleSize\", \"minConstraints\", \"maxConstraints\"]);\n\n return React.createElement(Resizable, {\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResize: this.onResize,\n draggableOpts: this.props.draggableOpts\n }, React.createElement(\"div\", React.__spread({\n style: { width: this.state.width + \"px\", height: this.state.height + \"px\" }\n }, props), this.props.children));\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/build/ResizableBox.js\n ** module id = 21\n ** module chunks = 0\n **/","module.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable');\nmodule.exports.ResizableBox = require('./build/ResizableBox');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-resizable/index.js\n ** module id = 22\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = require(\"./Object.assign\");\nvar emptyObject = require(\"./emptyObject\");\nvar warning = require(\"./warning\");\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return
{children}
;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array}\n */\n withContext: function(newContext, scopedCallback) {\n if (\"production\" !== process.env.NODE_ENV) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n ) : null);\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactContext.js\n ** module id = 23\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactCurrentOwner.js\n ** module id = 24\n ** module chunks = 0\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n\n'use strict';\n\nvar ReactContext = require(\"./ReactContext\");\nvar ReactCurrentOwner = require(\"./ReactCurrentOwner\");\n\nvar assign = require(\"./Object.assign\");\nvar warning = require(\"./warning\");\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} object\n * @param {string} key\n */\nfunction defineWarningProperty(object, key) {\n Object.defineProperty(object, key, {\n\n configurable: false,\n enumerable: true,\n\n get: function() {\n if (!this._store) {\n return null;\n }\n return this._store[key];\n },\n\n set: function(value) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Don\\'t set the %s property of the React element. Instead, ' +\n 'specify the correct value when initially creating the element.',\n key\n ) : null);\n this._store[key] = value;\n }\n\n });\n}\n\n/**\n * This is updated to true if the membrane is successfully created.\n */\nvar useMutationMembrane = false;\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} element\n */\nfunction defineMutationMembrane(prototype) {\n try {\n var pseudoFrozenProperties = {\n props: true\n };\n for (var key in pseudoFrozenProperties) {\n defineWarningProperty(prototype, key);\n }\n useMutationMembrane = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\n/**\n * Base constructor for all React elements. This is only used to make this\n * work with a dynamic instanceof check. Nothing should live on this prototype.\n *\n * @param {*} type\n * @param {string|object} ref\n * @param {*} key\n * @param {*} props\n * @internal\n */\nvar ReactElement = function(type, key, ref, owner, context, props) {\n // Built-in properties that belong on the element\n this.type = type;\n this.key = key;\n this.ref = ref;\n\n // Record the component responsible for creating this element.\n this._owner = owner;\n\n // TODO: Deprecate withContext, and then the context becomes accessible\n // through the owner.\n this._context = context;\n\n if (\"production\" !== process.env.NODE_ENV) {\n // The validation flag and props are currently mutative. We put them on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n this._store = {props: props, originalProps: assign({}, props)};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n try {\n Object.defineProperty(this._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true\n });\n } catch (x) {\n }\n this._store.validated = false;\n\n // We're not allowed to set props directly on the object so we early\n // return and rely on the prototype membrane to forward to the backing\n // store.\n if (useMutationMembrane) {\n Object.freeze(this);\n return;\n }\n }\n\n this.props = props;\n};\n\n// We intentionally don't expose the function on the constructor property.\n// ReactElement should be indistinguishable from a plain object.\nReactElement.prototype = {\n _isReactElement: true\n};\n\nif (\"production\" !== process.env.NODE_ENV) {\n defineMutationMembrane(ReactElement.prototype);\n}\n\nReactElement.createElement = function(type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (typeof props[propName] === 'undefined') {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return new ReactElement(\n type,\n key,\n ref,\n ReactCurrentOwner.current,\n ReactContext.current,\n props\n );\n};\n\nReactElement.createFactory = function(type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. .type === Foo.type.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n var newElement = new ReactElement(\n oldElement.type,\n oldElement.key,\n oldElement.ref,\n oldElement._owner,\n oldElement._context,\n newProps\n );\n\n if (\"production\" !== process.env.NODE_ENV) {\n // If the key on the original is valid, then the clone is valid\n newElement._store.validated = oldElement._store.validated;\n }\n return newElement;\n};\n\nReactElement.cloneElement = function(element, config, children) {\n var propName;\n\n // Original props are copied\n var props = assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n // Remaining properties override existing props\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return new ReactElement(\n element.type,\n key,\n ref,\n owner,\n element._context,\n props\n );\n};\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function(object) {\n // ReactTestUtils is often used outside of beforeEach where as React is\n // within it. This leads to two different instances of React on the same\n // page. To identify a element from a different React instance we use\n // a flag instead of an instanceof check.\n var isElement = !!(object && object._isReactElement);\n // if (isElement && !(object instanceof ReactElement)) {\n // This is an indicator that you're using multiple versions of React at the\n // same time. This will screw with ownership and stuff. Fix it, please.\n // TODO: We could possibly warn here.\n // }\n return isElement;\n};\n\nmodule.exports = ReactElement;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactElement.js\n ** module id = 25\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTransferer\n */\n\n'use strict';\n\nvar assign = require(\"./Object.assign\");\nvar emptyFunction = require(\"./emptyFunction\");\nvar joinClasses = require(\"./joinClasses\");\n\n/**\n * Creates a transfer strategy that will merge prop values using the supplied\n * `mergeStrategy`. If a prop was previously unset, this just sets it.\n *\n * @param {function} mergeStrategy\n * @return {function}\n */\nfunction createTransferStrategy(mergeStrategy) {\n return function(props, key, value) {\n if (!props.hasOwnProperty(key)) {\n props[key] = value;\n } else {\n props[key] = mergeStrategy(props[key], value);\n }\n };\n}\n\nvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n // `merge` overrides the first object's (`props[key]` above) keys using the\n // second object's (`value`) keys. An object's style's existing `propA` would\n // get overridden. Flip the order here.\n return assign({}, b, a);\n});\n\n/**\n * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n * NOTE: if you add any more exceptions to this list you should be sure to\n * update `cloneWithProps()` accordingly.\n */\nvar TransferStrategies = {\n /**\n * Never transfer `children`.\n */\n children: emptyFunction,\n /**\n * Transfer the `className` prop by merging them.\n */\n className: createTransferStrategy(joinClasses),\n /**\n * Transfer the `style` prop (which is an object) by merging them.\n */\n style: transferStrategyMerge\n};\n\n/**\n * Mutates the first argument by transferring the properties from the second\n * argument.\n *\n * @param {object} props\n * @param {object} newProps\n * @return {object}\n */\nfunction transferInto(props, newProps) {\n for (var thisKey in newProps) {\n if (!newProps.hasOwnProperty(thisKey)) {\n continue;\n }\n\n var transferStrategy = TransferStrategies[thisKey];\n\n if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n transferStrategy(props, thisKey, newProps[thisKey]);\n } else if (!props.hasOwnProperty(thisKey)) {\n props[thisKey] = newProps[thisKey];\n }\n }\n return props;\n}\n\n/**\n * ReactPropTransferer are capable of transferring props to another component\n * using a `transferPropsTo` method.\n *\n * @class ReactPropTransferer\n */\nvar ReactPropTransferer = {\n\n /**\n * Merge two props objects using TransferStrategies.\n *\n * @param {object} oldProps original props (they take precedence)\n * @param {object} newProps new props to merge in\n * @return {object} a new object containing both sets of props merged.\n */\n mergeProps: function(oldProps, newProps) {\n return transferInto(assign({}, oldProps), newProps);\n }\n\n};\n\nmodule.exports = ReactPropTransferer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPropTransferer.js\n ** module id = 26\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyObject\n */\n\n\"use strict\";\n\nvar emptyObject = {};\n\nif (\"production\" !== process.env.NODE_ENV) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/emptyObject.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule joinClasses\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Combines multiple className strings into one.\n * http://jsperf.com/joinclasses-args-vs-array\n *\n * @param {...?string} classes\n * @return {string}\n */\nfunction joinClasses(className/*, ... */) {\n if (!className) {\n className = '';\n }\n var nextClass;\n var argLength = arguments.length;\n if (argLength > 1) {\n for (var ii = 1; ii < argLength; ii++) {\n nextClass = arguments[ii];\n if (nextClass) {\n className = (className ? className + ' ' : '') + nextClass;\n }\n }\n }\n return className;\n}\n\nmodule.exports = joinClasses;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/joinClasses.js\n ** module id = 28\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyOf\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without loosing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function(oneKeyObj) {\n var key;\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n return key;\n }\n return null;\n};\n\n\nmodule.exports = keyOf;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/keyOf.js\n ** module id = 29\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n */\n\n'use strict';\n\n/**\n * Performs equality by iterating through keys on an object and returning\n * false when any key has values which are not strictly equal between\n * objA and objB. Returns true when the values of all keys are strictly equal.\n *\n * @return {boolean}\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var key;\n // Test for A's keys different from B.\n for (key in objA) {\n if (objA.hasOwnProperty(key) &&\n (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n return false;\n }\n }\n // Test for B's keys missing from A.\n for (key in objB) {\n if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/shallowEqual.js\n ** module id = 30\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack-dev-server.config.js b/webpack-dev-server.config.js index f3b757941..8dfa0f9a5 100644 --- a/webpack-dev-server.config.js +++ b/webpack-dev-server.config.js @@ -14,7 +14,7 @@ module.exports = { }, module: { loaders: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?experimental'}, + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?stage=0'}, {test: /\.jsx$/, exclude: /node_modules/, loader: 'react-hot-loader'} ] }, diff --git a/webpack-examples.config.js b/webpack-examples.config.js index d31e2546b..c4d71cacc 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -15,7 +15,7 @@ module.exports = { }, module: { loaders: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?experimental&optional=runtime'} + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?stage=0&optional=runtime'} ] }, plugins: [ diff --git a/webpack.config.js b/webpack.config.js index d026a0a9b..75da4f884 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -20,7 +20,7 @@ module.exports = { }, module: { loaders: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?experimental'} + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?stage=0'} ] }, plugins: [